我正在分析图像以查找图像中的棕色物体。我正在对图像进行阈值处理,并将最黑暗的部分视为棕色细胞。但是,根据图像的质量,有时无法识别对象。在OpenCV Python中是否有任何解决方案,例如预处理灰度图像并定义棕色对特定图像的含义?
我用来查找棕色点的代码如下:
def countBrownDots(imageFile):
im = cv2.imread(imageFile)
#changing color space
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
gray = increaseBrighntness(gray)
l1,thresh = cv2.threshold(gray,10,255,cv2.THRESH_BINARY_INV)
thresh = ndimage.gaussian_filter(thresh, 16)
l2,thresh = cv2.threshold(thresh,70,255,cv2.THRESH_BINARY)
thresh = ndimage.gaussian_filter(thresh, 16)
cv2.imshow("thresh22",thresh)
rmax = pymorph.regmax(thresh)
nim = pymorph.overlay(thresh, rmax)
seeds,nr_nuclei = ndimage.label(rmax)
cv2.imshow("original",im)
cv2.imshow("browns",nim)
这是一个输入图像示例:
答案 0 :(得分:0)
看看HSV色彩空间中的图像,这里是并排堆叠的3个平面
虽然人们建议基于色调进行分割,但实际上饱和度和值平面中存在更多的判别信息。对于这个特定的图像,灰度(即值平面)可能比使用色调得到更好的结果。但是,没有理由丢弃颜色信息。
作为概念验证(使用Gimp)进行颜色分割,我只是随机选择一个棕色斑点并将所有颜色从该点到颜色距离小于60变为绿色以获得:
如果你稍微玩一下参数,你可能会得到你想要的。然后编写代码。 我尝试预处理mean shift filtering来图像化图像,但这并没有真正帮助。