我认为使用高斯滤波器从图片中的 1 得到的是 2。我想得到数字 3。我想得到导数,但只是绝对数量。
我基本上想过滤掉大三角形的渐变并得到不规则性(图像中的箭头)
我也可以使用正弦而不是三角形,这样会更容易吗?如何在 python 或 halcon 中实现这个?我应该研究什么才能更好地理解我想要什么以及如何实现它?
编辑:我想找到“缺陷”并摆脱模式理论:
具有真实缺陷的真实图像:
我认为使用高斯滤波器从图片中的 1 得到的是 2。我想得到数字 3。我想得到导数,但只是绝对数量。
我基本上想过滤掉大三角形的渐变并得到不规则性(图像中的箭头)
我也可以使用正弦而不是三角形,这样会更容易吗?如何在 python 或 halcon 中实现这个?我应该研究什么才能更好地理解我想要什么以及如何实现它?
编辑:我想找到“缺陷”并摆脱模式理论:
具有真实缺陷的真实图像:
高斯滤波器不会为您提供导数。这是一个加权平均值。
您假设高斯会为输入 1 提供 2 是不正确的。
例如,只需使用陷波滤波器抑制背景的低频即可。
快速而肮脏的例子:
如果背景总是像这样对齐,另一种简单的方法是使用逐行阈值或背景减法
同意 Piglet 的观点,如果您的图案频率大大低于您的缺陷频率,则陷波滤波器是首选工具。
还同意,如果您有多个校准条纹图案的框架,那么您有一系列可用的选项。最新版本的 Halcon 具有内置的偏转测量算子。
对于 quick-n-dirty,您还可以使用矩形内核来利用模式的一般方向。这相当于正交各向异性高通滤波器。
read_image(imgInput, 'C:/Users/jpeyton/Documents/zzz_temp/FringePat_raw.jpg')
*smooth input image with mean using vertically oriented rectangular kernel
mean_image (imgInput, imgMean, 3, 15)
*subtract smoothed image from raw image to get local / high frequency residuals
abs_diff_image(imgMean,imgInput,imgAbsDiff, 1)
*threshold away background
threshold (imgAbsDiff, Regions, 8, 255)
从原始图像和阈值中减去平滑图像:
从那里,您可以运行连接运算符并使用区域特征来进一步突出缺陷。您会注意到这种方法不会为低频缺陷(凹痕?)提供那么强的信号。
所以权衡是 FFT/DFT 滤波器不利用模式的方向,并留下边缘/谐波伪影。高通滤波器方法(如上)不会对接近/超过边缘频率的缺陷敏感。