Halcon:处理纹理图像的缺陷区域

处理图如下:
在这里插入图片描述
在这里插入图片描述

原图如下:
在这里插入图片描述
在这里插入图片描述

主要思想:
1.频域处理,构建高斯滤波
2.变换为空间域
3.图像差分,分水岭算法
4.特征选择,能量的选择(缺陷区域能量较小)

代码如下:
*关闭窗口
dev_close_window ()
*刷新窗口
dev_update_off ()
*路径选择
Path := ‘lcd/mura_defects_texture_’
*读取图像
read_image (Image, Path + ‘01’)
*获取图像宽高
get_image_size (Image, Width, Height)
*打开窗口
dev_open_window (0, 0, 640, 480, ‘black’, WindowHandle)
*设置字体
set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
*设置填充方式
dev_set_draw (‘margin’)
*设置线宽3个像素
dev_set_line_width (3)
*设置颜色为红色
dev_set_color (‘red’)
for F := 1 to 2 by 1
*读取待测图像
read_image (Image, Path + F$’.2i’)
*24位图像拆分成3个8位的R.G.B图像
decompose3 (Image, R, G, B)
* estimate_background_illumination (B, ImageFFT1)
get_image_size (B, Width, Height)
*空间域变换到频域
fft_generic (R, ImageFFT, ‘to_freq’, -1, ‘none’, ‘dc_center’, ‘complex’)
*构建一个高斯滤波
gen_gauss_filter (ImageGauss, 50, 50, 0, ‘n’, ‘dc_center’, Width, Height)
*处理图像
convol_fft (ImageFFT, ImageGauss, ImageConvol)
*从频域变换到空间域
fft_generic (ImageConvol, ImageFFT1, ‘from_freq’, 1, ‘none’, ‘dc_center’, ‘byte’)
*差分图像,得到新的图像
sub_image (B, ImageFFT1, ImageSub, 2, 100)
*中值滤波,用于消除椒盐噪声
median_image (ImageSub, ImageMedian, ‘circle’, 9, ‘mirrored’)
*分水岭算法,参数3越大越粗糙。参数越小越精细。类似于分割大小
watersheds_threshold (ImageMedian, Basins, 20)
* 求共生矩阵,求取的图像的相关性,能量,熵
cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)
*筛选的是能量参数,<=0.05
Mask := Energy [<=] 0.05
*选择符合要求的区域
select_mask_obj (Basins, Defects, Mask)
* 显示原图
dev_display (Image)
*显示缺陷区域
dev_display (Defects)
*计算缺陷区域数量
count_obj (Defects, NDefects)
disp_message (WindowHandle, NDefects + ’ ‘mura’ defects detected’, ‘window’, 12, 12, ‘red’, ‘true’)
if (F < 2)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endfor

对应示例程序:
detect_mura_defects_texture.hdev

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值