一、例程介绍
这个例程主要是检测pcb电路板中的一些电路线缺陷
二、例程相关算子
- gray_opening_shape () //特定形状结构元的灰度开运算
- gray_closing_shape () //特定形状结构元的灰度闭运算
- dyn_threshold() //动态二值化操作
三、例程处理流程
1.对原图像进行灰度开运算,图像先腐蚀再膨胀。
经过灰度开运算后,图像整体会变暗一些,并且会将黑色区域中的白色缺陷进行填充等,但是黑白区域的界限是不发生变化的。
2.对原图像再进行灰度闭运算,图像先膨胀再腐蚀。
经过灰度闭运算后,图像整体会变亮一些,并且会将白色区域中的黑色区域进行填充,且黑白区域的界限不会发生变化。
3.dyn_threshold()动态
通过对两个图像进行做差计算,找出变化较大的区域进行标记。
四、例程源码
read_image (Image, 'pcb')
dev_close_window ()
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)
* detect defects ...
gray_opening_shape (Image, ImageOpening, 7, 7, 'octagon')
gray_closing_shape (Image, ImageClosing, 7, 7, 'octagon')
dyn_threshold (ImageOpening, ImageClosing, RegionDynThresh, 75, 'not_equal')
dev_display (Image)
dev_set_color ('red')
dev_set_draw ('margin')
dev_display (RegionDynThresh)
五、例程个人笔记
这个例程整体不是很复杂,利用形态学处理去定位缺陷。可能我们使用二值化的形态学比较多,其实灰度形态学操作,也可以帮我我们解决很多问题,这个例程也是提供了一个不错的思路。