Otsu分割在蝴蝶数据集上出现误差,如何优化预处理流程
Otsu图像分割预处理优化方案
Otsu分割误差通常源于其全局灰度双峰的假设不成立,蝴蝶图像存在背景杂色、翅膀纹理灰度与背景接近、光照不均等问题时,就会出现误分割,可通过以下步骤优化,达到目标论文的高精度分割效果:
- 前置灰度增强与去噪
先对原始灰度图做高斯模糊降噪,使用5*5高斯核即可:cv2.GaussianBlur(gray_img, (5,5), 0,再用限制对比度自适应直方图均衡(CLAHE)强化前景背景的灰度差,避免普通全局均衡过度放大翅膀纹理噪声:clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8)); enhanced_gray = clahe.apply(gray_img),处理后的灰度图直方图双峰特征会更明显,Otsu的阈值计算精度会大幅提升。 - 改用局部自适应Otsu分割
如果数据集存在光照不均的情况,全局Otsu的单一阈值无法适配全图,可以将图像拆分为多个子块,每个子块单独做Otsu阈值计算,也可以直接使用自适应阈值分割,基于邻域灰度均值计算局部阈值:cv2.adaptiveThreshold(enhanced_gray, 255, cv2.ADAPTIVE_THRESH_OTSU, cv2.THRESH_BINARY_INV, 15, 3),可以根据图像尺寸调整块大小和偏移参数。 - 形态学操作修正分割掩码
初步得到二值分割结果后,用形态学操作消除噪点和孔洞:先用开运算(腐蚀后膨胀)删除背景区域的零散噪点,再用闭运算(膨胀后腐蚀)填充蝴蝶区域内部的空洞,使用椭圆形结构元适配蝴蝶的轮廓特征:kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7,7)); mask = cv2.morphologyEx(raw_mask, cv2.MORPH_OPEN, kernel); mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel),处理后掩码的边缘会更贴合真实蝴蝶轮廓。 - 引入颜色特征辅助分割
不要仅依赖灰度信息做分割,可以将原始RGB图像转到HSV颜色空间,提取饱和度通道,蝴蝶翅膀的饱和度通常远高于自然背景,将饱和度通道与增强后的灰度通道加权融合后再做Otsu分割,可以进一步过滤掉灰度与蝴蝶接近的背景区域。
内容的提问来源于stack exchange,提问作者Laura Galera
相关产品推荐
相关产品推荐

