Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成

        在Halcon中还有其他用于提取边缘线段的算子,提取出的线段类型也是亚像素精度的XLD轮廓。

        ①【Filters滤波器/Lines色线】lines_gauss算子

        lines_gauss算子的相应速度不算快,如果边缘的高阈值设置的偏低,会导致计算的边缘增多,可能会出现卡顿。

        检测线及其宽度

lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions : )

        Image:输入参数,输入单通道图像。

        Lines:输出参数,输出一组亚像素精度的XLD轮廓线条。

        Sigma:输入参数,高斯平滑的值。较大的平滑值会使用图像平滑的力度更大,但过度平滑也可能导致提取的线条位置有偏差。默认为1.5。在需要提取线条宽度时,Sigma的值应该根据要提取的线条宽度进行调节,最小值不小于w/√3(w为线条宽度,即线条直径的一半)。例如,对于宽度为4的线条,Sigma值不应小于2.3。【默认1.5,取值范围0.7 ≤ Sigma ≤ 20】

        Low, High:输入参数,分别表示滞后阈值的低阈值和高阈值。高阈值越低,边缘线条的细节会越丰富。但如果Sigma选的值比较大,阈值就应选择较低的高阈值和较高的低阈值。因为选择的Sigma越大,二阶导数就越小。低阈值和高阈值也可以根据要提取的线的相应灰度对比度和Sigma参数值进行计算。【Low >= 0】【High >= 0 && High >= Low】

        LightDark:输入参数,提取较亮的线条还是较暗的线条。默认 'light'【'dark', 'light'】

        ExtractWidth:输入参数,是否需要提取线条宽度,即提取每条线段的宽度值。默认 'true'【'false'不提取, 'true'】

        LineModel:输入参数,仅在ExtractWidth为'true'时有效。表示校正线条位置和宽度的线段模型。

默认'bar-shaped'条型,

'gaussian'高斯型, 背光较强,图像中线条不是特别清晰时。

'none,

'parabolic''抛物线型,背光较强,图像中线条比较清晰明锐时。

        CompleteJunctions:输入参数,表示是否应该在不能提取的地方添加连接。【'false', 'true'】

read_image (Image, 'data/flower') 
rgb1_to_gray (Image, GrayImage)
*进行边缘检测
lines_gauss(GrayImage,Lines,1.5,1,8,'light','true','bar-shaped','true')
Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第1张图片 原图 Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第2张图片 Lines
read_image (Image, 'D:/Documents/Desktop/无标题.png') 
rgb1_to_gray (Image, GrayImage)
*进行边缘检测
lines_gauss(GrayImage,Lines,1.0,1,5,'light','true','bar-shaped','true')
Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第3张图片 原图 Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第4张图片 Lines

        【Filters滤波器/Lines色线】lines_color算子

        检测颜色线及其宽度

lines_color(Image : Lines : Sigma, Low, High, ExtractWidth, CompleteJunctions : )

        Image:输入参数,输入单通道或多通道图像。

        Lines:输出参数,输出一组亚像素精度的XLD轮廓线条。

        Sigma:输入参数,高斯平滑的值。较大的平滑值会使用图像平滑的力度更大,但过度平滑也可能导致提取的线条位置有偏差。默认为1.5。在需要提取线条宽度时,Sigma的值应该根据要提取的线条宽度进行调节,最小值不小于w/√3(w为线条宽度,即线条直径的一半)。

        Low, High:输入参数,分别表示滞后阈值的低阈值和高阈值。高阈值越低,边缘线条的细节会越丰富。但如果Sigma选的值比较大,阈值就应选择较低的高阈值和较高的低阈值。因为选择的Sigma越大,二阶导数就越小。低阈值和高阈值也可以根据要提取的线的相应灰度对比度和Sigma参数值进行计算。【Low >= 0】【High >= 0 && High >= Low】

        ExtractWidth:输入参数,是否需要提取线条宽度,即提取每条线段的宽度值。默认 'true'【'false'不提取, 'true'】

        注意:如果=false,那么返回的线条中将会包含其他属性,如线条的角度、二阶导数的梯度等。

        CompleteJunctions:输入参数,表示是否应该在不能提取的地方添加连接。【'false', 'true'】

        ③【Segmentation分割/Threshold门槛值分割】threshold_sub_pix算子

        以灰度阈值的方式从图像中提取亚像素精度的轮廓或多边形。

threshold_sub_pix(Image : Border : Threshold : )

        Image:输入参数,输入灰度图像。

        Border:输出参数,提取的亚像素轮廓。

        Threshold:输入参数,灰度阈值。默认128。范围一般是0-255。

read_image(Image,'fabrik')
threshold_sub_pix(Image,Border,35)
dev_display(Border)
Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第5张图片 原图 Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第6张图片 Border,阈值35
read_image(Image,'D:/Documents/Desktop/694cb9799c1d40989cc4bfc79a2d9724.bmp')
rgb1_to_gray(Image, GrayImage)
threshold_sub_pix(GrayImage,Snowcity1,50)
threshold_sub_pix(GrayImage,Snowcity2,100)
threshold_sub_pix(GrayImage,Snowcity3,190)
Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第7张图片 原图的灰度图 Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第8张图片 Snowcity1(50阈值) Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第9张图片 Snowcity2(100阈值) Halcon 第四章『图像特征和提取』◆第5.2节:亚像素级边缘提取—线条生成_第10张图片 Snowcity3(190阈值)

参考文献:

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

郭森—《工业机器视觉基础教程 HALCON篇》

你可能感兴趣的:(Halcon初级_学习笔记,视觉检测)