缺陷检测——差分+定位
1. 简单的差分
案例1:检测毛刺
案例2:电路板线路缺陷检测
案例3:瓶口破损缺陷检测
2. 模板匹配定位+差分
案例1:印刷质量缺陷检测(standard)
案例2:检测工件孔洞毛刺缺陷 - 局部变形(direct)
3. 拓展一下
1. 卡尺+差分
2. 喷涂获得图像
4. 资源下载地址
1. 简单的差分
案例1:检测毛刺
fin.hdev
这个案例还是比较简单的,主要思想就是利用图像差分的思想。
* 检测毛刺
ImageFiles := []
ImageFiles[0] := './fin1.png'
ImageFiles[1] := './fin2.png'
ImageFiles[2] := './fin3.png'
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
binary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold)
closing_circle (Region, RegionClosing, 203.5)
reduce_domain (Image, RegionClosing, ImageReduced)
reduce_domain (Image, Region, ImageReduced1)
*差分
difference (ImageReduced, ImageReduced1, RegionDifference)
opening_circle (RegionDifference, RegionOpening, 3)
dev_set_draw ('margin')
dev_set_line_width (5)
dev_display (Image)
dev_display (RegionOpening)
stop()
endfor
案例2:电路板线路缺陷检测
pcb_inspection.hdev
*检测电路板上断开和突出的缺陷 差分思想
read_image(Image, './pcb.png')
*灰度图的形态学处理:
*灰度图开运算和膨胀是增加亮像素,闭运算和腐蚀是减少亮像素
gray_closing_shape (Image, ImageClosing, 7, 7, 'octagon')//八边形
gray_opening_shape (Image, ImageOpening, 7, 7, 'octagon')
dyn_threshold (ImageClosing, ImageOpening, RegionDynThresh, 75, 'light')
dev_set_color ('blue')
dev_set_line_width (3)
dev_display (Image)
dev_display (RegionDynThresh)
案例3:瓶口破损缺陷检测
inspect_bottle_mouth.hdev
这个案例要注意直角坐标系和极坐标系之间的转换。
halcon代码:
dev_get_window (WindowHandle)
set_display_font (WindowHandle, 46, 'mono', 'true', 'false')
*dev_set_draw ('margin')
dev_set_line_width (3)
list_files ('./', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
get_image_size (Image, Width, Height)
threshold (Image, Regions, 0, 60)
fill_up (Regions, RegionFillUp)
connection