前言
基于Halcon织物折痕检测一、思路
【1】采用read_image算子读取待处理的图像;【2】采用decompose3算子将图像分解成RGB三个通道;
【3】采用trans_from_rgb算子将RGB三个通道的图像,转化为HSV图像空间;
【4】采用texture_laws算子进行纹理检测;
【5】采用mean_image算子对滤波器处理后的图像进行均值化,使图像更平滑,缺陷区域明显;
【6】采用threshold算子对检测出的缺陷区域进行形态学处理并显示出来;
【7】采用connection算子将符合条件的区域分隔成独立区域;
【8】采用area_center算子计算各区域的面积,select_shape算子提取出面积最大的区域;
【9】采用closing_circle算子做闭运算,提取出缺陷区域
【10】采用dev_clear_window清空活跃窗口,dev_display算子显示效果图
二、实现
测试图+过程展示+结果图
三、源码
* 读取待处理的图像
read_image(Image, 'D:/USER/Desktop/design/dataset/织物折痕.jpg')
* 将图像分解成RGB三个通道
decompose3 (Image, Image_R, Image_G, Image_B)
* 将RGB三个通道的图像,转化为HSV图像空间
trans_from_rgb (Image_R, Image_G, Image_B, ImageResult_H, ImageResult_S, ImageResult_V, 'hsv')
* 进行纹理检测。
texture_laws (ImageResult_S, ImageTextureLS, 'ls', 2, 7)
* 对滤波器处理后的图像进行均值化,使图像更平滑,缺陷区域明显
mean_image (ImageTextureLS, ImageMean, 11, 11)
* 对检测出的缺陷区域进行形态学处理并显示出来
threshold (ImageMean, Regions, 60, 255)
* 将符合条件的区域分隔成独立区域
connection(Regions, ConnectedRegions)
* 计算各区域的面积,提取出面积最大的区域
area_center (ConnectedRegions, Area, Row, Column)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', max(Area), 99999)
* 做闭运算,提取出缺陷区域
closing_circle(SelectedRegions, RegionClosing, 11.5)
*清空活跃窗口,显示效果图
dev_clear_window ()
dev_display (RegionClosing)