halcon视觉缺陷检测系列(3)频域和空间域转换的方法详解

简介: halcon视觉缺陷检测系列(3)频域和空间域转换的方法详解

3、木板划痕检测

image.png



*http://www.ihalcon.com/read-13031-1.html
*缺陷检测,将木板的划痕提取出来
dev_update_off ()
dev_close_window ()
read_image (Image, '缺陷检测木板划痕提取.jpg')
*彩色转灰度图
count_channels (Image, Channels)
if (Channels == 3 or Channels == 4)
    rgb1_to_gray (Image, Image)
endif
get_image_size (Image, Width, Height)
dev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle)
dev_display (Image)
*傅里叶变换去背景
fft_generic (Image, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
gen_rectangle2 (Rectangle1, 308.5, 176.56, rad(-0), 179.4, 7.725)
gen_rectangle2 (Rectangle2, 306.955, 175, rad(-90), 180.765, 4.68)
union2 (Rectangle1, Rectangle2, UnionRectangle)
paint_region (UnionRectangle, ImageFFT, ImageResult, 0, 'fill')
fft_generic (ImageResult, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
*提取划痕
threshold (ImageFFT1, Regions, 5, 240)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 20, 99999)
union1 (SelectedRegions, RegionUnion)
dilation_rectangle1 (RegionUnion, RegionDilation, 5, 5)
connection (RegionDilation, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, ['width','height'], 'and', [30,15], [150,100])
dilation_rectangle1 (SelectedRegions1, RegionDilation1, 11, 11)
union1 (RegionDilation1, RegionUnion1)
skeleton (RegionUnion1, Skeleton)
*显示
dev_set_color ('red')
dev_display (Image)
dev_display (Skeleton)


halcon官方自带的例子


detect_indent_fft.hdev


detect_mura_defects_texture.hdev


官方例子detect_indent_fft,使用了差分两个高斯滤波器


detect_indent_fft.hdev
* Optimize the fft speed for the specific image size
optimize_rft_speed (Width, Height, 'standard')
* 
* Construct a suitable filter by combining two gaussian
* filters
Sigma1 := 10.0
Sigma2 := 3.0
gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height)
gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height)
sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0)
* 
* Process the images iteratively
NumImages := 11
for Index := 1 to NumImages by 1
    * 
    * Read an image and convert it to gray values
    read_image (Image, 'plastics/plastics_' + Index$'02')
    rgb1_to_gray (Image, Image)
    * Perform the convolution in the frequency domain
    rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width)
    convol_fft (ImageFFT, Filter, ImageConvol)
    rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width)


姊妹篇


halcon视觉缺陷检测常用的6种方法



参考文献


微信公众号:机器视觉那些事儿

《Halcon机器视觉算法原理与编程实战》杨青


相关文章
halcon算子模板匹配(一)基于形状的模板匹配
halcon算子模板匹配(一)基于形状的模板匹配
5008 0
|
机器学习/深度学习 文字识别 算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
7641 2
|
C# C++
halcon联合c#、WPF学习笔记一(WPF配置halcon)
halcon联合c#、WPF学习笔记一(WPF配置halcon)
1644 1
[Halcon&图像] 图像、区域和轮廓相互转化
[Halcon&图像] 图像、区域和轮廓相互转化
635 1
|
存储
halcon视觉缺陷检测系列(2)频域和空间域转换的方法详解
halcon视觉缺陷检测系列(2)频域和空间域转换的方法详解
1610 0
halcon视觉缺陷检测系列(2)频域和空间域转换的方法详解
|
算法
halcon系列之直线拟合和圆形拟合算子
halcon系列之直线拟合和圆形拟合算子
2008 0
|
C++
[Halcon] 和C++数据之间的转换(HTuple、double、QString等)
[Halcon] 和C++数据之间的转换(HTuple、double、QString等)
1808 1
|
算法
[Halcon&拟合] 边缘拟合算法拓展
[Halcon&拟合] 边缘拟合算法拓展
327 1
|
网络协议 算法 机器人
Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
4088 0
Halcon标定系列(3):我个人总结的“眼在手外“和“眼在手上”的心得笔记
|
算法
Halcon拟合系列(3)直线拟合的实现步骤和相关算子
Halcon拟合系列(3)直线拟合的实现步骤和相关算子
2780 0
Halcon拟合系列(3)直线拟合的实现步骤和相关算子

热门文章

最新文章