一、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缺陷检测的一些方法、步骤、例程等介绍,希望能对读者有所帮助。