当前例程实现皮革纹理缺陷检测。
同样也是使用了空间域与时域相结合方法加强缺陷的对比度。
然后计算图片的共生矩阵,通过灰度的能量筛选出缺陷,
因为缺陷的能量很低,呈现为黑色的斑点。
下面为实例代码,可以运行查看效果。
工业视觉halcon皮鞋纹理 缺陷检测
dev_close_window ()
file:= 'lcd/mura_defects_texture_'
read_image (Image,file+'01')
get_image_size (Image, Width, Height)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)
stop()
for i:= 1 to 2 by 1
read_image(Image1, file+i$'02')
decompose3 (Image1, R, G, B)
gen_gauss_filter (ImageGauss, 50, 50, 0, 'n', 'rft',Width, Height)
rft_generic (B, ImageFFT, 'to_freq', 'none', 'complex', Width)
convol_fft (ImageFFT, ImageGauss, ImageConvol)
rft_generic (ImageConvol, ImageFFT1, 'from_freq', 'none', 'byte', Width)
sub_image (B, ImageFFT1, ImageSub, 2, 100)
*执行中值滤波,ImageSub, ImageMedian为输入与输出图像,
*'circle'表示使用圆形模板, 9表示圆形结果元素半径, 'mirrored'表示镜向边界处理。
*中值滤波可以弱化线条纹理,简化后续的分隔与最终缺陷检测
median_image (ImageSub, ImageMedian, 'circle', 9, 'mirrored')
*使用阈值从图像 中提取分水岭和盆地,ImageMedian为输入图, Basins为分隔后的输出图, 20为阈值。
watersheds_threshold (ImageMedian, Basins, 20)
*计算共生矩阵 ,推导出灰度特征值。因为缺陷的特点是黑色斑点能量很低。
cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)
mask := Energy[<=]0.05
select_mask_obj (Basins, SelectedObjects, mask)
dev_display (Image1)
dev_display (SelectedObjects)
stop()
endfor
文章为下面HALCON视频教程的部分内容,
可以下载教程观看学习。
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|