如何在非纯黑色背景中标记不同的对象?

时间:2012-10-08 23:05:34

标签: python image-processing numpy scipy

我知道如果背景颜色不是纯黑色,则scipy.ndimage.label无法标记 所以我有一个黑色背景的图像,它不是一个纯黑色,所以我们不能假设所有RGB值都是(0,0,0)在所有像素中。

如何准备图像以便我可以使用ndimage.label ??

这是一个类似的图像来测试:
test image http://imageshack.us/a/img4/8661/backgrf.png
注:
(1)图像已从RGB转换为PNG gray scale (2)背景颜色不同 (3)ndimage.label将整个图像标记为一个对象 感谢

2 个答案:

答案 0 :(得分:1)

您可以将小于某个阈值的所有值设置为0,然后调用label:

In [16]: img2 = img.copy()     # Copy the image.

In [17]: img2[img2 < 20] = 0   # Set all values less than 20 to 0.

In [18]: lbl, n = label(img2)

In [19]: n
Out[19]: 2

答案 1 :(得分:1)

这是一种简单的方法,可以增加对比度,使任何“光”变为白色,任何“暗”变为黑色。假设8位灰度并在@Warren Weckesser的答案中调整代码:

img2 = img.copy()     # Copy the image.
img2[img2 < 128] = 0   # Set all values less than 128 to 0 (black).
img2[img2 >= 128] = 255   # Set all values equal or greater than 128 to 255 (white).
lbl, n = label(img2)

请告诉我这是否适合您。