Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
识别非常低级的图片,并在Python中将其涂成纯黑色_Python_Image Processing_Filter_Label_Gaussian - Fatal编程技术网

识别非常低级的图片,并在Python中将其涂成纯黑色

识别非常低级的图片,并在Python中将其涂成纯黑色,python,image-processing,filter,label,gaussian,Python,Image Processing,Filter,Label,Gaussian,我正在研究一种自动“错误计数”算法,我想知道如果我从两张照片中减去两张,我怎么能识别出非常低的对比度(垫板上没有额外的错误-假设相机处于相同的位置,光线条件非常相似),我不会得到一个干净的黑色图像,因为事实上,光线条件将是最小的不同。现在我应用一个高斯滤波器和mahotas.thresholding.otsu()来找出哪里有bug(在上面放一个白色斑点),然后我使用ndimage.label()对它们进行计数 然而,如果我的输入图像“cropbugs.jpg”是深灰色的,我会在应用otsu()后

我正在研究一种自动“错误计数”算法,我想知道如果我从两张照片中减去两张,我怎么能识别出非常低的对比度(垫板上没有额外的错误-假设相机处于相同的位置,光线条件非常相似),我不会得到一个干净的黑色图像,因为事实上,光线条件将是最小的不同。现在我应用一个高斯滤波器和mahotas.thresholding.otsu()来找出哪里有bug(在上面放一个白色斑点),然后我使用ndimage.label()对它们进行计数

然而,如果我的输入图像“cropbugs.jpg”是深灰色的,我会在应用otsu()后得到一些随机输出,我的label()函数会返回一个随机的bug计数。如何识别我的图像是深灰色还是低对比度,并将bug count设置为0? 谢谢

到目前为止,我的代码如下所示:

bug_img = mahotas.imread('cropbugs.jpg')
pylab.gray()

bug_img = ndimage.gaussian_filter(bug_img, 6)#8
T = mahotas.thresholding.otsu(bug_img)
pylab.imshow(bug_img > T)
labeled,nr_objects = ndimage.label(bug_img > T)
print "Bug Count: "+str(nr_objects)
pylab.imshow(labeled)
pylab.jet()
pylab.show()

我可以看到解决这个问题的多种方法

  • (这是评论中的建议)。 根据平均值、标准偏差、最大值或某些组合定义某种类型的固定规则。您最终将进行如下测试之一:

    bug_img.mean() + 2*bug_img.std() < THRESHOLD
    bug_img.std() < THRESHOLD
    bug_img.max() < THRESHOLD
    sorted(bug_img.ravel())[-10] < THRESHOLD
    

  • 如果你把图像放在灰度中,并得到颜色的标准差,我想这会让你接近你想要的位置。实际上,将
    bug\u img.mean()
    bug\u img.std()
    结合起来,以决定图像是否太暗(或对比度低)。问题解决了。顺便说一句,您可以使用(最新版本的)mahotas进行guassian_过滤和标记。所以你不需要ndimage。
    labeled,nr_objects = mahotas.label(bug_img > T)
    sizes = mahotas.labeled.labeled_size(labeled)
    good_objects = (MIN_BUG_SIZE <= sizes) & (sizes <= MAX_BUG_SIZE)
    print np.sum(good_objects)