**缺陷检测的原因:**工业产品的形状缺陷不仅影响产品的美观,还影响产品的性能。
缺陷检测的方法:腐蚀操作、基于距离变换分割方法。
距离变换是一种用于二值图像的处理方法,计算图像中任意一个像素点到最近背景点的距离。
输入:二值图像,其中前景像素的值为非 0(通常为 255),背景像素的值为 0。
输出:一个浮点图像,其中每个像素的值表示该像素到最近背景点的距离。
特点:
- 前景对象的质心(中心点)距离背景较远,其对应的距离值较大。
- 前景对象的边缘距离背景较近,其对应的距离值较小。
- 如果某个像素点本身是背景像素(值为 0),其距离值为 0。
void distanceTransform(
InputArray src, // 输入图像(二值图像)
OutputArray dst, // 输出图像(距离图)
int distanceType, // 距离类型(如欧几里得距离)
int maskSize, // 掩码大小,用于距离计算
int dstType = CV_32F // 输出图像类型,通常为 CV_32F(默认)
);
**筛选标准:**通过一个对象的最小包围圆形与其轮廓面积的比值,实现缺陷检测。
流程设计
缺陷检测的核心思想是通过图像处理技术提取目标对象的轮廓,并判断其形状特性是否符合标准。

**1.**预处理
优化图像,去除噪声,增强特征。
操作:
色彩空间转换:将彩色图像转换为灰度图像,简化处理。
二值化处理:将灰度图像转为二值图像,分离前景和背景。
形态学开运算:去除噪声。
**2.**距离变换
目的:通过距离变换计算图像中每个像素点到最近背景点的距离。
应用:使用 distanceTransform 函数,将距离大的像素点作为前景的核心区域。**3.**前景提取
操作:对距离变换结果进行阈值分割,提取出主要的前景对象。
**4.**去噪处理
目的:去除残留的噪声或小目标点,确保前景区域干净。
方法:再次使用形态学操作(开运算)优化图像。
**5.**轮廓提取
操作:使用轮廓提取函数提取图像中的轮廓。
**6.**缺陷检测
**核心思想:**计算目标的外接圆面积和轮廓面积比,设定阈值进行筛选。
**7.**结果显示
显示最终处理结果,包括目标轮廓和缺陷标注。