我正在研究一个自动的“bug count”算法,我想知道如何识别一个非常低的对比度(pad上没有额外的bug-假设相机在同一位置,光线条件非常相似)如果我互相减去两张照片,我就不会得到一个干净的黑色图像,因为光照条件将是最低限度的与众不同。现在我应用高斯滤波器mahotas.thresholding.otsu公司()画出有错误的地方(在上面放一个白色的斑点),然后我用nImage.label()数数他们。在
但是,如果我的输入图像“克罗布格斯.jpg“是非常深灰色的,在应用otsu()之后,我得到一些随机输出,我的label()函数返回一个随机的bug计数。我如何识别我的图像是非常深灰色或低对比度,只是设置错误计数为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()
我能找到解决这个问题的多种方法
(这是评论中的建议)。 根据平均值、标准差、最大值或某种组合定义某种类型的固定规则。您将得到一个类似于以下其中一个的测试:
使用基于纹理特征的分类系统(参见前面的my answer to a related question)。
继续使用
label
,好像一切都很好,然后对结果进行后期过滤。例如:相关问题 更多 >
编程相关推荐