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

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

作者: 天涯热土 | 来源:发表于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