【发布时间】:2020-04-15 18:19:43
【问题描述】:
我正在编写一个分段脚本,该脚本根据分段大小(面积)和每个分段内像素的总强度过滤分段。
按照这篇文章中的答案,我想出了如何根据区域删除细分:
Returning specific numpy label indices for an image
在脚本的最后部分,我想删除总强度低于某个阈值的片段。
希望这个例子展示了我想要完成的事情:
import numpy as np
from scipy import ndimage
A = np.array([
[0, 0, 0, 0, 0, 0, 2, 2, 0, 0],
[0, 2, 7, 3, 0, 0, 0, 0, 0, 0],
[0, 0, 4, 2, 0, 0, 0, 0, 0, 0],
[0, 0, 2, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 2, 3, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0],
[0, 0, 0, 5, 0, 0, 0, 0, 0, 0],
[0, 0, 4, 9, 3, 0, 0, 4, 0, 0],
[0, 0, 0, 6, 0, 0, 0, 5, 3, 0],
[0, 3, 0, 0, 0, 0, 0, 0, 0, 0],
])
我可以使用以下方法获得每个段的总和:
label_A, nb_labels = ndimage.label(A)
seg_sum = ndimage.sum(A, label_A, range(nb_labels + 1))
seg_sum
Output: array([ 0., 4., 20., 7., 27., 12., 3.])`
我希望能够将总和小于 10 的任何段转换为零。任何帮助深表感谢。 谢谢
【问题讨论】: