C#Halcon从零开发_Day2_检测圆形物体上的缺损

一、检测缺损的大致步骤

1.Blbo分析--定位  

读取图像、阈值分割、填充、打散、筛选、形态学操作(膨胀腐蚀)、筛选出关心的区域

2获取ROI区域图像

获取感兴趣的区域图像

3.图像预处理

将缺陷进行凸显

4.图像算法处理

提取缺陷

5.结果输出

二、检测圆形物体上的缺陷实战

1.参数设置

*获取窗口句柄

dev_get_window(WindowHandle)

*设置缺陷最小面积

minDefectArea:=200

2.读取图像

read_image(Image1,'........')

3.定位(Blob分析)

定位的目的是为了不要在图像上检测,只选出需要检测的区域

*阈值分割

threshold(Image1,Region,130,255)

*填充

fill_up(Region,RegionFillUp)

*打散

connection(RegionFillUp,ConnectedRegions)

*筛选面积最大的区域

select_shape_std(ConnectedRegions,SelectedRegions,'max_area',70)

4.获取ROI(感兴趣)区域图像

*拟合最小外接圆

smallest_circle(SelectedRegions,Row,Column,Redius)

*生成圆区域

gen_circle(ROIRegion,Row,Column,Radius)

*修整、去除干扰区域

erosion_circle(ROIRegion,RegionErosion1,15)

*获取区域对应的图像(核心算子:把对应区域上的图像提取出来)

reduce_domain(Image1,RegionRrosion1,ImageReduced)

4.图像预处理

图像预处理的目的是为了凸显缺陷

*图像增强:亮的更亮、暗的更暗,增强对比度

mult_image(ImageReduced,ImageReduced,ImageResult,0.005,0)

5.图像算法处理

图像算法处理的目的是为了提取缺陷

*再次阈值分割

threshold(ImageResult,Region1,0,180)

*打散

connection(Region1,ConnectedRegions1)

*根据面积筛选特征区域

select_shape(ConnectedRegions1,SelectedRegions1,'area','and',minDefectArea,8888)

6.结果输出

输出筛选出的缺陷数量、文本显示

*获取缺陷区域的数量

count_obj(SelectedRegions1,Number)

if(Number>0)

     *设置显示文本颜色

     dev_set_color('red')

     Text:='NG'

      *显示缺陷区域

     dev_display(SelectedRegions1)

      *显示文本

     disp_message(WindowHandle,Text,'window',12,12,'',false)

endif

你可能感兴趣的:(C#联合Halcon从零编程,计算机视觉,图像处理,c#,Halcon,机器视觉)