我有一张像下面这样的图片,我想计算用 Python 显示在上面的错误(颜色/灰色的连续斑点)的数量。我怎样才能做到最好?
到目前为止,我已经看过 ImageChops、SciPy 和 PIL,但我不确定我可以/应该使用什么......
我想我可以使用ndimage.gaussian_filter()
,然后scipy.ndimage.measurements.label()
只是不确定如何使用后者来计算高斯化图像中的蓝点……它看起来像
好的,
有了上面的图片,我现在得到了这个代码:
#! /usr/bin/python
import numpy as np
import scipy
import pylab
import pymorph
import mahotas
from PIL import Image
import PIL.ImageOps
from scipy import ndimage
image = Image.open('bugs.jpg')
inverted_image = PIL.ImageOps.invert(image)
inverted_image.save('in_bugs.jpg')
dna = mahotas.imread('in_bugs.jpg')
#pylab.imshow(dna)
pylab.gray()
#pylab.show()
T = mahotas.thresholding.otsu(dna)
pylab.imshow(dna > T)
#pylab.show()
dnaf = ndimage.gaussian_filter(dna, 8)
T = mahotas.thresholding.otsu(dnaf)
pylab.imshow(dnaf > T)
#pylab.show()
labeled,nr_objects = ndimage.label(dnaf > T)
print nr_objects
pylab.imshow(labeled)
pylab.jet()
pylab.show()
问题是,这给我返回了一个数字 5,这并不是那么糟糕,但我需要让它更准确,我想看到两个。我怎样才能做到这一点?在应用高斯滤波器之前模糊图像是否有帮助?
感谢帮助!
罗恩