使用梯度法的图像分割






2.10/5 (16投票s)
2004年12月14日
2分钟阅读

90472

12232
使用图像分割自动检测相机镜头中的污渍
引言
这是一种纯图像处理技术,用于自动检测瑕疵或污渍(无论你如何称呼它)。它是一种边缘检测方法,称为梯度方法。这是一种图像分割类型,首先对图像应用高斯低通滤波器,得到平滑后的图像。然后,使用两个掩码(水平和垂直掩码)对图像进行卷积,得到图像的水平和垂直梯度值。为了找到梯度值的幅值,我们需要对水平值和垂直值进行平方,并找到组合值的平方根。这给出了图像的梯度值。图像中最高的梯度值落在瑕疵或污渍的边缘。我们可以在那里放置一个箭头来识别瑕疵。该技术完全位于图像的空间域中。
这段代码有一些错误。这些错误不会严重影响代码的实际概念。错误如下:
- 1. 图像背景是青色。实际上,如果你使用 ULTRAEDIT 等编辑器查看第 94 字节后的 6 个值,你会发现 0x0D、0x0A、0x0D、0x0A、0x0D、0x0A。如果你删除这三个 0x0D,你就可以找到纯 8 位灰度图像。这个错误可能是由于 `unsigned char` 的类型转换问题造成的。
- 它无法检测图像中的多个瑕疵。
- 由于没有进行阈值处理,该算法也会在没有瑕疵的图像中放置箭头。我注释了代码中阈值处理的部分,你可以在第 255 行看到。阈值大约在 1.000 以上。这部分留给用户自行决定。
我正在尝试在程序的第二个版本中克服上述错误。