如何计算scikit图像或mahotas中的黑色空格数量?

时间:2014-01-06 16:22:03

标签: image-processing numpy scikit-image mahotas

我有这样的图像:

star

用scikit图像的骨架化函数对其进行骨架化后

from skimage import morphology
out = morphology.skeletonize(gray>0)

enter image description here

有一种计算黑色空间数量的方法吗? (在这张图片中为六)除了scikit-image或mahotas的背景?

2 个答案:

答案 0 :(得分:5)

使用此输入:

enter code here

你可以这样做:

>>> from skimage import morphology
>>> import numpy as np
>>> from scipy.misc import imread
>>> im = imread("Bju1h.png")
>>> im = im > 0
>>> np.unique(morphology.label(im))
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> num_components = len(np.unique(morphology.label(im))) - 2
>>> num_components
6

我减去2以忽略背景组件和前景/线组件。从原始图像中,您可以跳过骨架化步骤,然后使用im = gray > 0运行它,因为宽前景/线仍将标记为单个组件。

答案 1 :(得分:2)

仅使用scipy.ndimage的解决方案

from  scipy import ndimage as nd
from matplotlib import pyplot as plt

star = nd.imread('/home/jeanpat/Images/star.jpg')
star = star[:,:,0]
thr = star < 120
anti = star >119
mask = nd.morphology.binary_fill_holes(thr)

lab, n = nd.label(anti*mask)
plt.title(str(n)+' objects detected')
plt.imshow(lab)
plt.show()

enter image description here