Halcon视觉缺陷检测方法总结

一、缺陷检测

是视觉需求中难度最大一类需求,主要是其稳定性和精度的保证。首先常见缺陷:划痕、污点瑕疵、漏诊、破洞、毛丝等。常用的手法有六大金刚,
1.blob+特征
2.blob+差分+特征
3.光度立体
4.特征训练
5.测量拟合
6.频域+空间结合

二、频域+空间结合法

1、频域结合空间,其实频域就是用波动观点看世界,看问题角度变了,光经过镜头其实发生的是傅立叶变换,此思想在傅立叶光学上有所阐述,就像光经棱镜分光,而光进入计算机内部,进行了采样和量化,然后我们用函数f(x,y)来表示这些数据描述。图像处理应用傅里叶变换就是将空间域(图像本身)转换至频率域。傅里叶变换可以将一个信号函数,分解一个一个三角函数的线性组合。由于任何周期函数都可以由多个正弦函数构成,那么按照这个思想,图像由f(x,y)来表示,那么这时你就可以拆成多个正弦函数构成,这样每个正弦函数都有一个自己的频率。
2、频率特征是图像的灰度变化特征,低频特征是灰度变化不明显,例如图像整体轮廓,高频特征是图像灰度变化剧烈,如图像边缘和噪声。一个重要的经验结论:低频代表图像整体轮廓,高频代表了图像噪声,中频代表图像边缘、纹理等细节。
3、什么时候使用傅里叶变换进行频域分析?
1)具有一定纹理特征的图像,纹理可以理解为条纹,如布匹材质容易出现。 2)需要提取对比度低或者信噪比低的特征。 3)图像尺寸较大或者需要与大尺寸滤波器进行计算,此时转换至频域计算,具有速度优势。因为空间域滤波为卷积过程(加权求和),频域计算直接相乘。

三、举例说明

read_image (Image, 'C:/Users/汉林/Desktop/img/划痕、油污、瑕疵/表面划痕/Image.bmp')

dev_close_window() 
get_image_size(Image, Width, Height) 
dev_open_window(0, 0, Width, Height, 'black', WindowHandle) 
set_display_font(WindowHandle, 16, 'mono', 'true', 'false') 
dev_set_line_width(2) 
dev_display(Image) 
disp_continue_message(WindowHandle, 'black', 'true') 
stop() 

invert_image(Image,ImageInvert1) 
mult_image(ImageInvert1, ImageInvert1, ImageResult,0.01, 0) 

* 产生一个正弦形状的带通滤波器.
gen_sin_bandpass (ImageBandpass, 0.6, 'none', 'rft', Width, Height)
rft_generic (ImageResult, ImageFFT, 'to_freq', 'none', 'complex', Width) 
convol_fft (ImageFFT, ImageBandpass, ImageConvol) 
rft_generic (ImageConvol, Lines, 'from_freq', 'n', 'byte', Width)

*使用Laws纹理过滤器过滤图像
texture_laws (Lines, ImageTexture, 'el',3, 5)
mean_image(ImageTexture, ImageMean,5, 30)
*使用动态阈值
dyn_threshold(ImageTexture, ImageMean, RegionDynThresh, 20, 'light')
*合并像素相连成一个元素
connection(RegionDynThresh, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 44.08, 487)
union1(SelectedRegions, RegionUnion)
closing_circle(RegionUnion, RegionClosing, 6)
skeleton(RegionClosing, Skeleton)

dev_display(Image) 
dev_set_color('red') 
dev_display(Skeleton) 
stop()

四、检测结果

原图
Halcon视觉缺陷检测方法总结_第1张图片
检测结果
Halcon视觉缺陷检测方法总结_第2张图片

你可能感兴趣的:(Halcon视觉缺陷检测方法总结)