日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

圆环内外圆毛刺(凸起)缺口(凹陷)检测halcon

發布時間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 圆环内外圆毛刺(凸起)缺口(凹陷)检测halcon 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 處理要求
  • 處理方法1
    • 方法一思路
    • 方法一halcon源碼
    • 處理效果
  • 處理方法2
    • 方法二思路
    • 方法二halcon源碼
    • 處理效果

  • 博主寫作不容易,孩子需要您鼓勵
  • 萬水千山總是情 , 先點個贊行不行

處理要求

橢圓/圓環(產品易變形,為橢圓)內外圓毛刺(凸起)缺口(凹陷)檢測。

處理方法1

方法一思路

1、這是一個圓環產品檢測,我們可以通過產品區域與標準圓環進行比較得出不良區域。
2、為了避免誤檢、誤判,我們可以通過區域篩選閾值偏移的方法濾除干擾區域,可以將標準圓環放大消除一些圓度導致干擾。
3、根據不同用戶的精度要求,可以通過調節缺陷面積進行篩選。
4、方法1的代碼量有點多,但是更貼近工業現場使用。

方法一halcon源碼

dev_close_window () read_image (Image, 'C:/Users/22967/Desktop/圓環缺陷檢測/處理1.jpg') dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image)*********************方法一************************** *****變量定義 * 卡尺測量參數 CenterRow:=0 CenterColumn:=0 CenterRadius:=0 * 灰度分割閾值偏移 ThresholdOffest:=80 * 缺陷區域面積閾值 NGArea:=50 *圓環內外偏移閾值 RadiusOffest:=5 * Image Acquisition 01: Code generated by Image Acquisition 01 list_files ('C:/Users/22967/Desktop/圓環缺陷檢測', ['files','follow_links'], ImageFiles) tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])rgb1_to_gray (Image, GrayImage)*****圓環灰度篩選binary_threshold (GrayImage, Region, 'max_separability', 'dark', UsedThreshold)threshold (GrayImage, Region1, 0, UsedThreshold+ThresholdOffest)*分割連通域connection (Region1, ConnectedRegions)*選取圓環區域select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)*濾除圓環邊緣毛刺opening_circle (SelectedRegions, RegionOpening, 1.5)*****求圓環內外圓*求圓環外圓smallest_circle (RegionOpening, Row, Column, Radius)CenterRow[0]:=RowCenterColumn[0]:=ColumnCenterRadius[0]:=Radius*求圓環內圓fill_up (RegionOpening, RegionFillUp)difference (RegionFillUp, RegionOpening, RegionDifference)connection (RegionDifference, ConnectedRegions2)select_shape_std (ConnectedRegions2, SelectedRegions1, 'max_area', 70)smallest_circle (SelectedRegions1, Row1, Column1, Radius1)CenterRow[1]:=Row1CenterColumn[1]:=Column1CenterRadius[1]:=Radius1*****對內外圓進行卡尺測量*創建測量句柄create_metrology_model (MetrologyHandle)*設置卡尺測量參數add_metrology_object_circle_measure (MetrologyHandle, CenterRow, CenterColumn, CenterRadius, CenterRadius[0]/10, CenterRadius[0]/60, 1, 4, ['measure_distance','min_score'], [CenterRadius[0]/30,0.2], Indexnumb)*進行測量apply_metrology_model (Image, MetrologyHandle)*得到測量結果get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row1, Column1)*****求出標準圓環,進行缺陷檢測*突出部分gen_circle (Circle, Parameter[0], Parameter[1], Parameter[2]+RadiusOffest)gen_circle (Circle1, Parameter[3], Parameter[4], Parameter[5]-RadiusOffest)difference (Circle, Circle1, RegionDifference1)difference (SelectedRegions, RegionDifference1, RegionDifference2)*內凹部分gen_circle (Circle2, Parameter[0], Parameter[1], Parameter[2]-RadiusOffest)gen_circle (Circle3,Parameter[3], Parameter[4], Parameter[5]+RadiusOffest)difference (Circle2, Circle3, RegionDifference4)difference (RegionDifference4, SelectedRegions, RegionDifference3)*濾除噪點opening_circle (RegionDifference2, RegionOpening1, 1.5)opening_circle (RegionDifference3, RegionOpening2, 1.5)*合并缺陷區域union2 (RegionOpening1, RegionOpening2, RegionUnion)closing_circle (RegionUnion, RegionClosing, 3.5)connection (RegionClosing, ConnectedRegions1)*結果判斷area_center (ConnectedRegions1, Area, Row2, Column2)count_obj (ConnectedRegions1, Number)gen_empty_obj (EmptyObject)for Index1 := 1 to Number by 1if (Area[Index1-1] > NGArea)select_obj (ConnectedRegions1, ObjectSelected, Index1)smallest_circle (ObjectSelected, Row3, Column3, Radius2)gen_circle (Circle4, Row3, Column3, Radius2)concat_obj (EmptyObject, Circle4, EmptyObject)endifendfordev_set_draw ('margin')dev_set_line_width (3)dev_display (Image)dev_display (EmptyObject) * stop() endfor clear_metrology_model (MetrologyHandle)

處理效果



處理方法2

方法二思路

1、利用形態學方法進行缺陷檢測。
2、缺點就是對圓度不敏感。

方法二halcon源碼

dev_close_window () read_image (Image, 'C:/Users/22967/Desktop/圓環缺陷檢測/處理1.jpg') dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) *********************方法二************************** * 灰度分割閾值偏移 ThresholdOffest:=80 *外圓缺陷查找閾值 OutCircleTh:=200.5 *內圓缺陷查找閾值 InCircleTh:=100.5 *缺陷區域面積閾值 NGArea:=50 *噪點過濾閾值 DelNoise:=1.5* Image Acquisition 01: Code generated by Image Acquisition 01 list_files ('C:/Users/22967/Desktop/圓環缺陷檢測', ['files','follow_links'], ImageFiles) tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) for Index := 0 to |ImageFiles| - 1 by 1*讀入圖片read_image (Image, ImageFiles[Index])rgb1_to_gray (Image, GrayImage)*二值化選取墊片區域binary_threshold (GrayImage, Region, 'max_separability', 'dark', UsedThreshold)threshold (GrayImage, Region1, 0, UsedThreshold+ThresholdOffest)connection (Region1, ConnectedRegions)select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)*外圓缺陷查找fill_up (SelectedRegions, RegionFillUp1)opening_circle (RegionFillUp1, RegionOpening, OutCircleTh)difference (RegionFillUp1, RegionOpening, RegionDifference5)*內圓缺陷查找difference (RegionFillUp1, SelectedRegions, RegionDifference6)connection (RegionDifference6, ConnectedRegions3)select_shape_std (ConnectedRegions3, SelectedRegions2, 'max_area', 70)opening_circle (SelectedRegions2, RegionOpening3, InCircleTh)difference (SelectedRegions2, RegionOpening3, RegionDifference7)*合并缺陷區域union2 (RegionDifference5, RegionDifference7, RegionUnion1)opening_circle (RegionUnion1, RegionOpening4, DelNoise)connection (RegionOpening4, ConnectedRegions4)*結果判斷area_center (ConnectedRegions4, Area1, Row4, Column4)gen_empty_obj (EmptyObject1)for Index1 := 1 to |Area1| by 1if (Area1[Index1-1] > NGArea)select_obj (ConnectedRegions4, ObjectSelected, Index1)smallest_circle (ObjectSelected, Row3, Column3, Radius2)gen_circle (Circle4, Row3, Column3, Radius2)concat_obj (EmptyObject1, Circle4, EmptyObject1)endifendfor *顯示結果dev_set_draw ('margin')dev_set_line_width (3)dev_display (Image)dev_display (EmptyObject1)stop() endfor

處理效果


------------------------------------------------------------------------------------------分割線 ------------------------------------------------------------------------------------------
  • 博主簡介:
  • 工業自動化上位機軟件工程師、機器視覺算法工程師、運動控制算法工程師。目前從業于智能制造自動化行業。 博主郵箱:2296776525@qq.com
  • 幫忙點個贊吧。哈哈。

總結

以上是生活随笔為你收集整理的圆环内外圆毛刺(凸起)缺口(凹陷)检测halcon的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。