是视觉需求中难度最大一类需求,主要是其稳定性和精度的保证。首先常见缺陷:划痕、污点瑕疵、漏诊、破洞、毛丝等。常用的手法有六大金刚,
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()