我正在研究一种自动“错误计数”算法,我想知道如果我减去,我如何才能识别出非常低的对比度(垫上没有额外的错误 - 假设相机处于相同的位置并且光照条件非常相似)两张相互的照片,我不会得到干净的黑色图像,因为光线条件会略有不同。现在我应用一个高斯滤波器和 mahotas.thresholding.otsu() 来画出有错误的地方(在顶部放一个白色斑点),然后我使用 ndimage.label() 来计算它们。
但是,如果我的输入图像“cropbugs.jpg”非常深灰色,我会在应用 otsu() 后得到一些随机输出,并且我的 label() 函数会返回一个随机错误计数。我如何识别我的图像是非常深灰色还是对比度低并且只是将错误计数设置为 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()