上一篇讲述的例子用的素材是“善良”图片,只能用来说明一下焊点检测的基本原理。
由于机器机构设计的局限,例如焊点检测工位的前工位缺少辗平焊极的工位,或者焊片本身上下弯曲而没有在压平状态下检测,或者每片焊片上的焊点位置不固定,等等。会造成灯光不能很好的白化背景暗化焊点,时不时来几片焊点与背景混在一起的图片,让你痛不欲生。
例如下面这些奇葩,它们的特征是:粘连,和背景混合
我们来一张背景干扰的素材,它是奇葩中的战斗机,如下:
一般这样的图片,是因为焊片上翘或者下翘造成的。
(一)动态阈值分割
threshold 是采用全局阈值分割图像。这张图,会因为阀值范围内包含干扰背景,而没办法提取我们想要的焊点。
可以换成自动产生的阀值分割图像的算子bin_threshold
程序如下:
read_image (Image23, 'C:/Users/Administrator/Desktop/焊点图片/12.bmp') gen_rectangle1 (ROI_0, 280.5, 350.5, 426.5, 474.5) reduce_domain(Image23, ROI_0, ImageReduced) bin_threshold (ImageReduced, Regions) connection(Regions, ConnectedRegions) closing_circle(ConnectedRegions, RegionClosing, 5.5) fill_up(RegionClosing, RegionFillUp) select_shape(RegionFillUp, SelectedRegions, 'area', 'and', 10, 99999) count_obj(SelectedRegions, Number)
结果如下图,可以看到效果还是可以的。
我们来用这段程序试下没有什么背景干扰图像会怎么样?
结果如下图,效果也是不错的。
下面这一张,结果不好,是因为上面两个焊点和其干扰背景相似,并且和下面两个焊点阈值差别太大。
看来bin_threold也有缺点,因为它没有参数可以调节。
(二)用灰度直方图数据分割图像
换个思路。我们取取画面中灰度值像素数量最多的部分,算子gray_histo可取得图像的灰度值分布数量。我们经过排序后即可取得像素数量最多的灰度值。
然后使用threshold算子按此灰度值进行图像分割。
read_image (Image23, 'C:/Users/Administrator/Desktop/焊点图片/82.bmp') gen_rectangle1 (ROI_0, 307.5, 358.5, 424.5, 475.5) reduce_domain(Image23, ROI_0, ImageReduced) mean_image(ImageReduced, ImageMean2, 9, 9) gray_histo(ROI_0, ImageMean2,AbsoluteHisto, RelativeHisto) gen_region_histo(Region1, RelativeHisto, 255, 66, 1) PeakGray := sort_index(AbsoluteHisto)[255] threshold(ImageReduced,Region,0,PeakGray-55) connection(Regions, ConnectedRegions) closing_circle(ConnectedRegions, RegionClosing, 5.5) fill_up(RegionClosing, RegionFillUp) select_shape(RegionFillUp, SelectedRegions, 'area', 'and', 10, 99999) count_obj(SelectedRegions, Number)
中值滤波是必需的,去掉图像噪声
对中值滤波后的图像进行计算灰度分布,取得像素量最多的灰度值。
在halcon的变量监视器中,我们看到灰度值203是分布数量最多的。红色表示的灰度分布图中绿圈处的最高点就是灰度203
下面这句话把这个灰度值用上去。
threshold(ImageReduced,Region,0,PeakGray-55)
结果如下图,效果还是可以的。
试几个“正常焊点”和图片,效果也是不错的!
不过这种方法仍然有其问题,就是下面的常量55,是当前产品的经验值,而且极有可能有奇魄的图片不符合这个经验值。
threshold(ImageReduced,Region,0,PeakGray-55)
参考资料:
Halcon学习(4-6)Region处理:动态阈值,分水岭
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

