1.1 对阴影的处理
基于阈值的分割,是在以某个阈值T,对图像进行分割。分割时由于拍摄时图像阴影处导致分割不理想,结果虽然达到理想预期。但是二值化后的结果以阴影部分外围与图像融合,导致再用findContours函数在寻找外围边框时,边框发现是二值化阴影部分与图像融合后的二值图。为此为了得到相对准确的图像边缘需要专门对阴影做处理,处理完后以分水岭算法对图像进行分割。 此次分割还是以上次分割中不完美的榛子图像为主,虽然还不完美。。。。。。。。主要还是针对阴影做处理,处理后分割出榛子完整的轮廓。 目标检测- findContours drawContours 的学习 针对此次分割我们要对以阴影部分做处理,首先对阴影的部分可以用addWeighted来对图像像素做加权处理,dst=src1*alpha+stc2*bete+gamma ,通过gamma静态权重,来调节亮度,以alpha中以做想法的权重来调节对比度(alpha>1,增强对比度)。
alpha=1.7
gamma=40
dst=cv2.addWeighted(img,alpha,img_copy,1-alpha,gamma)
目标检测-cv2.addWeighted 增强后的图像符合以人的视角,但在机器视觉中整体靠右部分榛子阴影整体增强,首先通过阈值的分割方法对图像进行分割,得到图像还是整体与阴影部分得到了结合。
1.2 分水岭分割
几个注意点说明一下: 距离变换确定前景,膨胀确定背景 distanceTransform中数据类型要转换 connectedComponents背景标注为0,watershed背景标注是从1开始
1.3 分割绘制边缘
增强后做相应的阈值处理 为了方便做对比,在阈值的选取cv2.THRESH_BINARY_INV(左) cv2.THRESH_BINARY+cv2.THRESH_OTSU(右) 右半部分阴影处还是对检测效果有严重的影响,处理结果不理想,但在其他测试时对边缘的分割明显,对注水点的干扰过于严重,整体右半部分。其分水岭分割前景和背景的选择很关键,重点还是阴影的干扰过于强烈。 在无阴影的干扰下对,阈值分割跟分水岭分割对比
_,thresh_img= cv2.threshold(img_median, 110, 255, cv2.THRESH_OTSU)
watershed( InputArray image, InputOutputArray markers )
相同的二值化操作,阈值分割跟分水岭分割的对比,前期分水岭分割前期准备较多,距离变换,前景和背景确认,未知区域标记,注水点的获取。
|