美文网首页机器视觉
手机摄像头图像表面的轻微缺陷检测

手机摄像头图像表面的轻微缺陷检测

作者: 天涯热土 | 来源:发表于2019-05-01 22:27 被阅读0次
*************第一 窗口初始化****************
*关闭已经打开的窗口
dev_close_window () 

*关闭程序计数器,图形变量更新,窗口图形更新
dev_update_off () 

*读取一张图像
read_image (Image,'2.bmp') 

*获取图像大小
get_image_size (Image, Width, Height) 

*打开新的窗口
dev_open_window (0, 0, 640, 480, 'black', WindowHandle) 

*设置区域填充方式
dev_set_draw ('margin') 

*设置线宽度
dev_set_line_width (2) 

*设置输出对象显示颜色数目
dev_set_colored(12) 


*******************第二 图像预处理**********************
*优化FFT的速度
optimize_rft_speed (Width, Height, 'standard') 
Sigma1 := 10.0 
Sigma2 := 2.0 
*构建高斯滤波器
gen_gauss_filter (GsFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height) 
*构建高斯滤波器
gen_gauss_filter (GsFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height)

*两个滤波器相减
sub_image (GsFilter1, GsFilter2, Filter, 1, 0) 


********************第三 开始处理图像*************
* Image Acquisition 01: Code generated by Image Acquisition 01
ImageFiles := []
ImageFiles[0] := '1.bmp'
ImageFiles[1] := '2.bmp'



for Index := 0 to |ImageFiles| - 1 by 1
    
*读取一张图像
read_image (Image, ImageFiles[Index])

*将RGB彩色图转化为灰度图
rgb1_to_gray (Image, Image) 

*对灰度图进行反选
invert_image(Image, ImageInvert) 
   
*将图像转化为频域图像
rft_generic (ImageInvert, ImageFFT, 'to_freq', 'sqrt', 'complex', Width) 

*将频域图像和滤波核进行卷积运算
convol_fft (ImageFFT, Filter, ImageConvol) 

*将频域图像转化为空间域图像
rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width) 

*创建一个ROI
gen_rectangle1(Rectangle,30,25,450,610) 

*将ROI区域的图像剪切
reduce_domain(ImageFiltered, Rectangle, ROI) 

*中值滤波
median_image(ROI, ImageMedian, 'circle', 20, 'mirrored') 

*使用高斯核进行图像平滑
smooth_image (ROI, ImageSmooth, 'gauss', 8) 

*通过阈值分割出缺陷区域
threshold (ImageSmooth, Regions, -0.0016783, -0.0006434) 

*对缺陷区域进行连通处理
connection(Regions, ConnectedRegions) 

*对区域进行膨胀操作
dilation_circle (ConnectedRegions, RegionDilation, 5) 

*过滤出指定面积大小的缺陷
select_shape (RegionDilation, SelectedRegions, 'area', 'and', 800, 99999) 

*根据区域生成XLD轮廓
gen_contour_region_xld (SelectedRegions, Contours, 'border') 

*将XLD拟合成圆
fit_circle_contour_xld (Contours, 'atukey', -1, 2, 0, 5, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder) 

*生成一个圆对象
gen_circle_contour_xld (ContCircle, Row, Column, Radius+20, 0, 6.28318, 'positive', 1)


*显示图像
dev_display (Image) 


*显示圆标记
dev_display(ContCircle) 

stop() 

endfor

相关文章

网友评论

    本文标题:手机摄像头图像表面的轻微缺陷检测

    本文链接:https://www.haomeiwen.com/subject/ohqgnqtx.html