沈阳做网站有名公司有哪些,运营推广的工作内容,网页设计与制作岗位职责,网站海外推广方法Halcon边缘滤波器edges_image 算子
基于Sobel滤波器的边缘滤波方法是比较经典的边缘检测方法。除此之外#xff0c;Halcon也提供了一些新式的边缘滤波器#xff0c;如edges_image算子。它使用递归实现的滤波器#xff08;如Deriche、Lanser和Shen#xff09;检测边缘…Halcon边缘滤波器edges_image 算子
基于Sobel滤波器的边缘滤波方法是比较经典的边缘检测方法。除此之外Halcon也提供了一些新式的边缘滤波器如edges_image算子。它使用递归实现的滤波器如Deriche、Lanser和Shen检测边缘也可以使用高斯导数滤波器检测边缘。此外edges_image算子也提供了非极大值抑制和滞后阈值使提取出的边缘更细化。edges_image 算子同样能返回精确的边缘梯度和方向这一点比Sobel滤波器要好一些但是相应地所花的时间也长一些。对一些强调精度而不注重运算时间的场合可以使用edges_image算子来提高检测效率。此外也可以结合使用sobel_fast滤波器,以提高检测的速度。 该算子的原型如下
edges_image (Image ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High :)其各参数含义如下。 参数1Image为输入的单通道图像。 参数2ImaAmp为输出的边缘梯度图像。 参数3ImaDir 为输出的边缘方向图像。 参数4Filter 为输入参数表示选择的滤波算子。默认为canny也可以选择derichel、derichel _int4、deriche2、deriche2 _int4、 lanserl、lanser2、mshen、shen、 sobel fast。 参数5Alpha为输入参数表示平滑的程度。值越小表示平滑的程度越大。默认是0也可以取0.1到1.1之间的值。 参数6NMS 表示非极大值抑制。默认为nms表示使用非极大值抑制也可以设为none,表示不使用非极大值抑制。使用非极大值抑制可以使模糊的边界变得清晰因为这步操作只留下边缘上梯度强度最大的点。 参数7和8Low和High分别表示滞后阈值的低阈值和高阈值。边缘梯度比高阈值大的部分是可以被接受的低于低阈值的部分将被排除介于两者之间的要看该像素是否与边缘点相连.相连的可以认为是边缘。 如图所示其输入图像与图a所示的图像相同。这里使用了3种边缘提取方法进行对比。图a为使用canny 滤波器提取的没有使用非极大值抑制的边缘梯度图像图b)为使用canny 滤波器提取的使用了非极大值抑制的边缘梯度图像图c在图b的基础上加入了灰度阈值处理并描绘出了经阀值处理的框架图像。 实现代码如下
dev_close_window ()
read_image(Image,data/flower)
rgb1_to_gray (Image, GrayImage)
gen_image_proto (Image, ImageCleared, 1)
dev_open_window (0, 0, 256, 256, black, WindowHandle1)
dev_open_window (0, 256, 256, 256, black, WindowHandle2)
dev_open_window (0, 512, 256, 256, black, WindowHandle3)
edges_image (GrayImage, ImaAmpGray, ImaDirGray, canny, 1, none, -1, -1)
edges_image (GrayImage, ImaAmpGrayNMS, ImaDirGrayHyst, canny, 1, nms,20, 40)
*对非极大值抑制后的边缘梯度图像进行了阈值处理
threshold (ImaAmpGrayNMS, RegionGray, 1, 255)
*提取边缘轮廓
skeleton (RegionGray, EdgesGray)
*用于结果显示和对比
dev_set_window (WindowHandle1)
dev_display (ImageCleared)
dev_display (ImaAmpGray)
dev_set_window (WindowHandle2)
dev_display (ImageCleared)
dev_display (ImaAmpGrayNMS)
dev_set_window (WindowHandle3)
dev_display (ImageCleared)
dev_display (EdgesGray)该例中使用camny滤波器对灰度图像进行边缘检测可以快速地获取边缘梯度与方向信息。代码中使用了不同参数的edges_image 算子提取边缘并使用了非极大值抑制Non-Maximum SuppressionNMS。接着对经非极大值抑制的边缘梯度图像进行阈值处理提取出较亮的边缘部分。 因为经非极大值抑制后边缘仅剩下梯度最大的像素所以经阈值处理提取出的像素就是图像的边缘。而如果使用未经非极大值抑制的图像可能阈值处理会提取出过多的像素无法理想地表现出边缘信息。 与edges_image 算子类似的还有edges_color算子该算子可以用于提取彩色图像的边缘其原型如下
edges_color(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )其中第1个参数表示输入图像的类型为彩色图像其他参数与edges_image算子类似。