halcon 缺陷检测 表面凸点检测
生活随笔
收集整理的這篇文章主要介紹了
halcon 缺陷检测 表面凸点检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
圖片資源
鏈接:https://pan.baidu.com/s/1tffiYQVMkcLySM_4X9344w
提取碼:s5am
處理流程
1、設置參數與生成濾波器
2、傅里葉變換與濾波處理
3、灰度處理與二值化處理
4、連通域分析并篩選缺陷
5、顯示結果
完整代碼
* 表面凸起缺陷檢測**** 1、讀取圖片 *************** dev_update_off () dev_close_window () read_image (Image, './img/plastics_01') get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, 'black', WindowHandle) set_display_font (WindowHandle, 14, 'mono', 'true', 'false') dev_set_draw ('margin') dev_set_line_width (3) dev_set_color ('red')**** 2、設置參數與生成濾波器 *************** * 設置傅里葉變換參數 optimize_rft_speed (Width, Height, 'standard')* 設置參數 Sigma1 := 10.0 Sigma2 := 3.0 * 生成高斯濾波器 10.0 gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height) * 生成高斯濾波器 3.0 gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height) * 組合濾波器 sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)**** 3、循環處理圖片 ********************************* NumImages := 11 for Index := 1 to NumImages by 1*** a、讀取處理圖片 ***************read_image (Image, 'plastics/plastics_' + Index$'02')* 轉換為灰度圖片rgb1_to_gray (Image, Image)*** b、傅里葉變換與濾波操作 **************** 傅里葉變換 空域 ==> 頻域rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)* 頻域濾波器 卷積操作convol_fft (ImageFFT, Filter, ImageConvol)* 逆傅里葉變換 頻域 ==> 空域rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)*** c、灰度處理與二值化處理 **************** 灰度區域處理gray_range_rect (ImageFiltered, ImageResult, 10, 10)* 計算圖片 最大最小灰度min_max_gray (ImageResult, ImageResult, 0, Min, Max, Range)* 二值化處理threshold (ImageResult, RegionDynThresh, max([5.55, Max * 0.8]), 255)*** d、連通域分析 篩選缺陷位置 **************** 連通域分析connection (RegionDynThresh, ConnectedRegions)* 連通域篩選select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4, 99999)* 連通域合并union1 (SelectedRegions, RegionUnion)* 圓形閉運算closing_circle (RegionUnion, RegionClosing, 10)* 連通域分析connection (RegionClosing, ConnectedRegions1)* 面積篩選連通域select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 10, 99999)* 面積中心area_center (SelectedRegions1, Area, Row, Column)*** e、顯示結果 ***************dev_display (Image)Number := |Area|if (Number)gen_circle_contour_xld (ContCircle, Row, Column, gen_tuple_const(Number,30), gen_tuple_const(Number,0), gen_tuple_const(Number,rad(360)), 'positive', 1)ResultMessage := ['NG', '缺陷 ' + Number + '個']Color := ['red','black']dev_display (ContCircle)elseResultMessage := 'OK'Color := 'forest green'endifdisp_message (WindowHandle, ResultMessage, 'window', 12, 12, Color, 'true')if (Index != NumImages)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif endfor總結
以上是生活随笔為你收集整理的halcon 缺陷检测 表面凸点检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: H3CNE《第1章 计算机网络概述》
- 下一篇: 2017-9-13 NOIP模拟赛[xx