一、halcon缺陷檢測的方法
1、主要是基於halcon軟件提供的圖像處理工具,來進行缺陷檢測。其具體方法如下:
a、圖像預處理:首先對圖片進行處理,如去噪、增強、二值化等。
b、特徵提取:通過對圖像進行特徵提取,得出不同的特徵值,可以有效分類和區分缺陷。
c、分類識別:根據之前提取的特徵值來進行分類識別,將圖像判別為有缺陷或無缺陷。
d、最終輸出:將判別結果輸出,同時對於有缺陷的地方進行標註,便於後續處理。
二、halcon缺陷檢測實例轉opencv實現
1、halcon與opencv都是常用的圖像處理庫,halcon提供的操作函數與opencv的略有不同。我們可以將halcon的缺陷檢測實例轉化為opencv的代碼實現。
2、例如halcon實現的二值化操作:
dev_set_color ('green') dev_display (Image) threshold (Image, Region, 128, 255) dev_set_color ('red') dev_display (Region)
可以在opencv中轉化為:
Mat gray, binary; cvtColor(inputImage, gray, COLOR_BGR2GRAY); threshold (gray, binary, 128, 255, THRESH_BINARY); imshow("result", binary);
三、halcon缺陷檢測基本步驟
1、圖像預處理:包括去噪、增強等操作。
median_image (Image, ImageMedian, 'circle', 3) dyn_threshold (ImageMedian, RegionDynThresh, 10, 'dark')
2、特徵提取:對圖像的特徵進行提取。
connection (RegionDynThresh, ConnectedRegions) select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 100, 99999999)
3、分類識別:用已經提取的特徵進行缺陷分類。
gen_classifier_ensemble (PositiveFeatures, NegativeFeatures, ClassifierHandle, 'hidden_layers=10,scale_factor=1.0') apply_classifier_ensemble (SelectedFeatures, ClassifierHandle, 'default', Result)
4、最終輸出:對於有缺陷的位置進行標註,並輸出檢測結果。
dev_set_color ('red') dev_display (SelectedRegions) disp_message (WindowHandle, 'Defect detected', 'window', 12, 12, 'red', [], [])
四、halcon缺陷檢測例程
1、下面給出一個簡單的halcon缺陷檢測例程,對紙張的劃痕進行檢測。
read_image (Image, 'paper_scratch.jpg') median_image (Image, ImageMedian, 'circle', 3) dyn_threshold (ImageMedian, RegionDynThresh, 10, 'dark') connection (RegionDynThresh, ConnectedRegions) select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70) gen_features_object_generic (SelectedRegions, Image, Features, 'border_origin', [1,1],[0,0.5],[],0) gen_classifier_ensemble (PositiveFeatures, NegativeFeatures, ClassifierHandle, 'hidden_layers=10,scale_factor=1.0') apply_classifier_ensemble (Features, ClassifierHandle, 'default', Result) dev_set_color ('red') dev_display (SelectedRegions) disp_message (WindowHandle, 'Defect detected', 'window', 12, 12, 'red', [], [])
五、halcon缺陷檢測實例
1、鋁製品表面缺陷檢測:
a、圖像預處理:使用思路與前面的例子類似,但這裡的圖像規模更大,需要使用更先進的圖像處理技術。
read_image (Image, 'aluminum_defects.jpg') rgb1_to_gray (Image, GrayImage) dyn_threshold (GrayImage, RegionDynThresh, 20, 'light') connection (RegionDynThresh, ConnectedRegions) select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 1000)
b、特徵提取:鋁質產品的特徵與紙張自然有所不同,需要特別處理。
for i:=1 to Hv_Edim1(SelectedRegions) region_features (SelectedRegions[i], GrayImage, ['rectangularity','convexity'], FeatureVector) select_obj (SelectedRegions, SelectedRegion, i) set_object_features (SelectedRegion, FeatureVector, ['rectangularity','convexity']) endfor feature_reduction (PositiveFeatures, NegativeFeatures, 'pca', AdaboostHandleReducedFeatures, 3)
c、分類識別:分類識別過程中使用了adaboost算法。
gen_classifier_adaboost (AdaboostHandleReducedFeatures, 'auto', num_steps, ClassifierHandle) apply_classifier_feature_set (ClassifierHandle, GrayImage, ['rectangularity','convexity'], 'default', Result)
d、最終輸出:將檢測結果輸出,並進行標註。
if Hv_Elem(Result, 1) = 1.0 then gen_rectangle1 (Rectangle1, Rows, Cols, Rows + Height, Cols + Width) dev_set_color ('red') dev_display (Rectangle1) disp_message (WindowHandle, 'Defect detected', 'window', 12, 12, 'red', [], []) endif
六、halcon缺陷檢測基本流程
1、首先進行圖像預處理,並將圖像進行二值化。
2、然後對圖像特徵進行提取,不同的缺陷類型需要提取的特徵不同。
3、接着對已經提取的特徵進行分類識別,將不同的缺陷分類。
4、最後輸出檢測結果,並對有缺陷的部位進行標註,方便後續處理。
七、halcon劃痕檢測
1、劃痕缺陷是指物體表面因受到外力導致刮痕等狀況的缺陷。檢測劃痕缺陷需要對圖像進行預處理、濾波、二值化等步驟,然後利用特徵提取算法和分類識別技術進行檢測。
2、下面給出一個halcon劃痕檢測的例程。
read_image (Image, 'scratch.jpg') median_image (Image, ImageMedian, 'circle', 3) dyn_threshold (ImageMedian, RegionDynThresh, 10, 'dark') connection (RegionDynThresh, ConnectedRegions) select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70) gen_features_object_generic (SelectedRegions, Image, Features, 'border_origin', [1,1],[0,0.5],[],0) gen_classifier_ensemble (PositiveFeatures, NegativeFeatures, ClassifierHandle, 'hidden_layers=10,scale_factor=1.0') apply_classifier_ensemble (Features, ClassifierHandle, 'default', Result) dev_set_color ('red') dev_display (SelectedRegions) disp_message (WindowHandle, 'Defect detected', 'window', 12, 12, 'red', [], [])
八、halcon目標檢測
1、halcon可以用來進行目標檢測,因為目標檢測也可以看作是一種缺陷檢測。但與其他類型的缺陷檢測不同,目標檢測需要經過更多的特徵提取、特徵匹配等步驟。
2、下面給出一個halcon目標檢測的例程。
read_image (Image, 'object.jpg') reduce_domain (Image, ImageReduced, Region) mean_image (ImageReduced, MeanImage, 5, 5) subtract_image (ImageReduced, MeanImage, SubImage, 1, 0) abs_image (SubImage, AbsImage) dyn_threshold (AbsImage, RegionDynThresh, 20, 'dark') connection (RegionDynThresh, ConnectedRegions) features_object_from_image (ImageReduced, ConnectedRegions, Features, 'point_invariant', ['do_edges','convexity']) read_features (Features, 'object_feature.tuple') gen_classifier_knn (Features, ['num_neighbors=3'], ClassifierHandle) classify_image_knn (Image, ObjectRect, ClassifierHandle, [], [], ObjectScore) dev_set_color ('green') dev_display (ObjectRect)
九、halcon表面缺陷檢測
1、表面缺陷檢測相對於其他類型的缺陷檢測,主要就是注重表面積分形態信息的提取,表面粗糙度的計算和缺陷檢測。可以通過使用halcon提供的表面缺陷檢測算法來實現。
2、下面給出一個halcon表面缺陷檢測的例程。
read_image (Image, 'surface.jpg') gradient_image (Image, GradientAmplitude, GradientDirection, 'advanced', 'bilinear') regiongrowing_gray (Image, Seeds, Region, 15, 15, 5, 20, 'false', []) open_rect1 (Region, RegionOpened, 5, 5) erosion1 (RegionOpened, RegionEroded, 5) difference_image (RegionOpened, RegionEroded, RegionDiff) laplace_of_gaussian (Image, LoGImage, 3) dyn_threshold (LoGImage, RegionEdge, 5, 'not_dark') intersection (RegionEdge, RegionDiff, RegionEdgeReduced)
以上是halcon缺陷檢測的一些方法、步驟、例程等介紹,希望能對讀者有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/201266.html