*AOI缺陷检测策略 Blob分析+特征分析
*极坐标系转换:将圆环图片转为矩形图片,有利于均值滤波等适合矩形图像的操作
*定义变量 瓶口外径圆和内径圆的距离
dev_get_window (WindowHandle)
dis1:=60
for Index := 1 to 16 by 1
read_image (Image,'bottles/bottle_mouth_'+Index$'.02')
***Blob分析
*目的1:运用差集 找出中间圆环区域
threshold (Image, Region, 0, 50)
*去除杂质 开运算
opening_circle (Region, RegionOpening, 3.5)
*填充内部空洞
fill_up (RegionOpening, RegionFillUp)
*获取最小外接圆
smallest_circle (RegionFillUp, Row, Column, Radius)
*生成圆形区域
gen_circle (Circle, Row, Column, Radius)
*靠腐蚀40,来获取内侧圆
erosion_circle (Circle, RegionErosion, 40)
*差集找圆环
difference (Circle, RegionErosion, RegionDifference)
*抠图
reduce_domain (Image, RegionDifference, ImageReduced)
*目的2:转成矩形图,特征检测
*ImageReduced 原来的环形图
*PolarTransImage 输出的矩形图
* Row :Column 圆心
* 0 : 开始角度
* rad(360) 从0到360
* Radius-40 半径的开始
*Radius 半径的结束
* 700 :输出矩形的款
* 100 输出矩形的高
*'nearest_neighbor' 插值算法
polar_trans_image_ext (ImageReduced, PolarTransImage, Row, Column, 0, rad(360), Radius-40, Radius, 700, 100, 'nearest_neighbor')
*灰度值均衡化 扩大范围缩放为 0-255
scale_image_max (PolarTransImage, ImageScaleMax)
*Blob分析
mean_image (ImageScaleMax, ImageMean, 100, 3)
dyn_threshold (PolarTransImage, ImageMean, RegionDynThresh, 80, 'light')
*开运算 去杂质
opening_circle (RegionDynThresh, RegionOpening1, 4)
connection (RegionOpening1, ConnectedRegions)
count_obj (ConnectedRegions, Number)
if(Number<=0)
set_display_font (WindowHandle, 16, 'mono', 'false', 'false')
dev_disp_text ('OK', 'window', 0, 0, 'green', [], [])
else
set_display_font (WindowHandle, 16, 'mono', 'false', 'false')
dev_disp_text ('NG', 'window', 0, 0, 'green', [], [])
endif
endfor
实现效果:


1448

被折叠的 条评论
为什么被折叠?



