Halcon--破洞检测


前言

基于Halcon破洞检测


一、思路

根据傅里叶变换提取出局部突变的部分,并将其显示出来。其中,所选图像因为缺陷区域更小,更容易与背景混合,图像中的缺陷部分数量可能不止是单一的,可能需要根据一定的特征进行筛选,并将缺陷逐个标识出来。

二、测试–结果

在这里插入图片描述

在这里插入图片描述

三、源码

*检测破洞
*清空当前窗口
dev_close_window ()
read_image (Image, 'D:/USER/Desktop/design/dataset/破洞.jpg')
get_image_size (Image, Width, Height)
*创建窗口并设置窗口绘制参数
dev_open_window (0, 0, Width/2, Height/2, 'black', WindowHandle)
dev_set_draw ('margin')
dev_set_line_width (4)
dev_set_color ('red')
*创建一个高斯滤波器,用于将傅里叶转换后的图像进行滤波
gen_gauss_filter (GaussFilter, 3.0, 3.0, 0.0, 'none', 'rft', Width, Height)
*开始检测,读取图像
rgb1_to_gray (Image, ImageGray)
*对图像进行傅里叶变换,平滑以及还原
rft_generic (ImageGray, ImageFFT, 'to_freq', 'none', 'complex', Width)
convol_fft (ImageFFT, GaussFilter, ImageConvol)
rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)
*对还原后的图像进行阈值处理,提取出图中明显偏暗的部分,即瑕疵的位置
threshold (ImageFiltered, ImageDark, 0, 85)
*由于瑕疵部位可能不止一个,将其分离成独立的区域
connection (ImageDark, ConnectedRegions)
*获取瑕疵的数量。
*如果对瑕疵的形状面积尺寸等有筛选要求的,
*也可以在这一步之前加入selecct_shape算子进行判断
count_obj (ConnectedRegions, Number)
*逐个显示瑕疵的位置并以圆圈标记出来。
for index := 1 to Number by 1
	select_obj (ConnectedRegions, shape, index)
	area_center (shape, Area, Row, Column)
	gen_circle (Circle, Row, Column, 30)
	dev_display (Circle)
endfor

总结

加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值