【发布时间】:2018-02-13 01:05:53
【问题描述】:
我有一个代表图像的二维布尔 numpy 数组,我在其上调用 skimage.measure.label 来标记每个分段区域,给我一个 int [0,500] 的二维数组;该数组中的每个值都代表该像素的区域标签。我现在想删除最小的区域。例如,如果我的输入数组是形状 (n, n),我希望将所有
0, 0, 0, 0, 0, 0, 0, 1, 1, 1
0, 0, 0, 0, 0, 0, 0, 1, 1, 1
0, 0, 7, 8, 0, 0, 0, 1, 1, 1
0, 0, 0, 0, 0, 0, 0, 1, 1, 1
0, 0, 0, 0, 0, 2, 2, 2, 1, 1
4, 4, 4, 4, 2, 2, 2, 2, 1, 1
4, 6, 6, 4, 2, 2, 2, 3, 3, 3
4, 6, 6, 4, 5, 5, 5, 3, 3, 5
4, 4, 4, 4, 5, 5, 5, 5, 5, 5
4, 4, 4, 4, 5, 5, 5, 5, 5, 5
然后输出是,
0, 0, 0, 0, 0, 0, 0, 1, 1, 1
0, 0, 0, 0, 0, 0, 0, 1, 1, 1
0, 0, 0, 0, 0, 0, 0, 1, 1, 1 # 7 and 8 are replaced by 0
0, 0, 0, 0, 0, 0, 0, 1, 1, 1
0, 0, 0, 0, 0, 2, 2, 2, 1, 1
4, 4, 4, 4, 2, 2, 2, 2, 1, 1
4, 4, 4, 4, 2, 2, 2, 3, 3, 3 # 6 is gone, but 3 remains
4, 4, 4, 4, 5, 5, 5, 3, 3, 5
4, 4, 4, 4, 5, 5, 5, 5, 5, 5
4, 4, 4, 4, 5, 5, 5, 5, 5, 5
我研究了 skimage 形态学操作,包括 binary closing,但似乎没有一个适合我的用例。有什么建议吗?
【问题讨论】:
-
像
0 0 1 2 2这样的角落案例呢? -
@JonasAdler 假设在这里
m=1,像这样的抢七局并不重要。左右运行的形态学操作可能会产生0 0 0 2 2,但0 0 2 2 2也可以。 -
相关问题:stackoverflow.com/questions/46126409/…@JonasAdler 可以的话请看一下,谢谢!
标签: python numpy mathematical-morphology