Halcon——Sobel_dir算子解析

halcon sobel 边缘检测 sobel_dir

 

sobel_dir(算子)

sobel_dir - 使用Sobel算子检测边缘(振幅和方向)。

sobel_dir(Image : EdgeAmplitude, EdgeDirection : FilterType, Size : )

描述

sobel_dir计算图像的一阶导数,并用作边缘检测器。过滤器基于以下过滤器掩码:

A =
1 2 1
0 0 0
-1 -2 -1

B =
1 0 -1
2 0 -2
1 0 -1
根据所选的过滤器类型,这些掩码的使用方式不同。 (在下文中,a和b表示将图像与A和B卷积为一个特定像素的结果。)
在这里插入图片描述
对于尺寸为3x3的Sobel算子,直接应用相应的滤波器A和B,而对于较大的滤波器尺寸,首先使用尺寸为Size-2的高斯滤波器(参见gauss_image)或二项式滤波器(参见binomial_filter)对输入图像进行平滑处理。 。为上述FilterType值选择高斯滤波器。这里,必须使用Size = 5,7,9,11或13。通过将“_binomial”附加到FilterType的上述值来选择二项式过滤器。这里,可以在5到39之间选择大小。此外,可以通过在Size中传递两个值来选择不同的平滑列和行方向的量。这里,Size的第一个值对应于掩模宽度(列方向上的平滑),而第二个值对应于二项式滤波器的掩模高度(行方向的平滑)。二项式滤波器只能用于byte,uint2和real类型的图像。由于平滑减小了边缘幅度,在这种情况下,边缘幅度乘以因子2以防止信息丢失。因此,
sobel_dir(I,Amp,Dir,FilterType,S)

对于Size > 3在概念上等同于

 scale_image(I,F,2,0)
 gauss_image(F,G,S-2)
 sobel_dir(G,AMP,风向,过滤式,3)
  • 1
  • 2
  • 3

或者

 scale_image(I,F,2,0)
 binomial_filter(F,G,S [0] -2,S [1] -2)
 sobel_dir(G,AMP,风向,过滤式,3)。
  • 1
  • 2
  • 3

边缘方向在EdgeDirection中返回,并以2度步长存储,即,在数学上正方向的x度的边缘方向和相对于水平轴的边缘方向在边缘方向图像中存储为x / 2。此外,考虑强度变化的方向。让我们表示图像渐变。然后以r / 2返回以下边缘方向:
Halcon——Sobel_dir算子解析_第1张图片
边缘幅度为0的点被指定为边缘方向255(未定义的方向)。
sobel_amp可以在OpenCL设备上执行。请注意,当对Size> 3使用高斯过滤时,结果可能与CPU实现不同。

并行

支持OpenCL计算设备。
多线程类型:可重入(与非独占运算符并行运行)。
多线程范围:全局(可以从任何线程调用)。
在元组级别自动并行化。
在通道级别自动并行化。
在域级别自动并行化。

参数

Image (input_object)(多通道 - )图像(-array)→对象(byte / int2 / uint2 / real)
输入图像。

EdgeAmplitude(output_object)(多通道 - )图像(-array)→对象(byte / int2 / uint2 / real)
边缘幅度(梯度幅度)图像。

EdgeDirection(output_object)(多声道 - )图像(-array)→对象(方向)
边缘方向图像。

FilterType(input_control)string→(string)
过滤器类型。
默认值:‘sum_abs’
值列表:‘sum_abs’,‘sum_abs_binomial’,‘sum_sqrt’,‘sum_sqrt_binomial’
值列表(用于计算设备):‘sum_abs’,‘sum_sqrt’,‘sum_abs_binomial’,‘sum_sqrt_binomial’

Size(input_control)整数(-array)→(整数)
过滤面罩的大小。
默认值:3
值列表:3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39

你可能感兴趣的:(HALCON算子解析)