halcon算子——edges_image与edges_color--颜色边缘提取与边缘提取的区别(过滤--图像边缘处理)

** 此示例程序显示了如何使用edges_color以及如何使用只能从彩色图像中提取一些边缘的图像来使用edges_color和edges_image的输出之间的差异

在这里插入图片描述

* 此示例程序显示了如何使用edges_color以及如何使用只能从彩色图像
中提取一些边缘的图像来使用edges_color和edges_image的输出之间的
差异。

dev_update_off ()
read_image (Image, 'olympic_stadium')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_part (0, 0, Height - 1, Width - 1)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)
Message := 'Color image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()

*将彩色图像转换为灰度图像。 注意,在足球场和灰度值图像中的轨迹之
间没有对比度。

rgb1_to_gray (Image, GrayImage)
dev_display (GrayImage)
Message := 'Gray value image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()

*在没有非最大抑制和滞后阈值的情况下计算彩色边缘,即原始边缘幅度
图像。 注意,在足球场和彩色边缘图像中的赛道之间有一个清晰可见的
边缘。

edges_color (Image, ImaAmp, ImaDir, 'canny', 1, 'none', -1, -1)
dev_display (ImaAmp)
Message := 'Color edge image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()

*在没有非最大抑制和滞后阈值的情况下计算灰度值边缘,即原始边缘幅
度图像。 注意,在足球场和灰度值边缘图像中的轨道之间没有可见边
缘。

edges_image (GrayImage, ImaAmpGray, ImaDirGray, 'canny', 1, 'none', -1, -1)
dev_display (ImaAmpGray)
Message := 'Gray value edge image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()

*现在执行颜色边缘提取,包括非最大抑制和滞后阈值。 注意足球场和赛
道之间的分段边缘。

edges_color (Image, ImaAmpHyst, ImaDirHyst, 'canny', 1, 'nms', 20, 40)
threshold (ImaAmpHyst, RegionColor, 1, 255)
skeleton (RegionColor, EdgesColor)
dev_display (Image)
dev_set_color ('blue')
dev_display (EdgesColor)
Message := 'Segmented color edges'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()

*现在执行包括非最大值在内的灰度值边缘提取抑制和磁滞阈值。 
 注意足球场和赛道之间没有边缘。
 
edges_image (GrayImage, ImaAmpGrayHyst, ImaDirGrayHyst, 'canny', 1, 'nms', 20, 40)
threshold (ImaAmpGrayHyst, RegionGray, 1, 255)
skeleton (RegionGray, EdgesGray)
dev_display (GrayImage)
dev_set_color ('blue')
dev_display (EdgesGray)
Message := 'Segmented gray value edges'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()

*现在再次显示所有内容,而只显示图像中包含足球场和跑道的部分。

Row1 := 220
Col1 := 215
Row2 := 399
Col2 := 489
dev_set_part (Row1, Col1, Row2, Col2)
dev_display (Image)
stop ()
dev_display (GrayImage)
stop ()
dev_display (ImaAmp)
stop ()
dev_display (ImaAmpGray)
stop ()
dev_display (Image)
dev_set_color ('blue')
dev_display (EdgesColor)
stop ()
dev_display (GrayImage)
dev_set_color ('blue')
dev_display (EdgesGray)

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`edges_sub_pix()`是Halcon中的一个算子,用于对图像进行亚像素级别的边缘检测。该算子会根据指定的边缘算法在图像中检测出边缘,并精确定位边缘的位置,从而获得亚像素级别的边缘信息。 `edges_sub_pix()`算子的语法如下: ``` edges_sub_pix(Image : Edges, EdgesAmplitude, EdgesDirection, EdgesRow, EdgesColumn, MaxNumEdges, DetectionMode, Sigma, Threshold, Transition, EdgeWidth, Interpolation, SubPixel, PointsPerPixel, GenParamName, GenParamValue) ``` 其中,`Image`为输入的图像,`Edges`为输出的边缘信息,`EdgesAmplitude`为输出的边缘幅度信息,`EdgesDirection`为输出的边缘方向信息,`EdgesRow`和`EdgesColumn`为输出的边缘位置信息,`MaxNumEdges`为最大边缘数量,`DetectionMode`为边缘检测模式,`Sigma`为高斯滤波器的标准差,`Threshold`为边缘幅度的阈值,`Transition`为边缘的极性(上升沿/下降沿),`EdgeWidth`为边缘宽度,`Interpolation`为插值方式,`SubPixel`为是否计算亚像素级别的边缘位置,`PointsPerPixel`为每个像素点的采样点数,`GenParamName`和`GenParamValue`为其他参数。 例如,对一个灰度图像进行Canny边缘检测并计算亚像素级别的边缘位置: ``` read_image(Image, 'test.jpg') edges_sub_pix(Image, Edges, EdgesAmplitude, EdgesDirection, EdgesRow, EdgesColumn, 100, 'canny', 1.0, 20, 'positive', 3, 'bilinear', 'true', 1, [], []) ``` 这里,`MaxNumEdges`取100,表示最多检测100个边缘;`DetectionMode`取`'canny'`,表示使用Canny边缘检测算法;`Sigma`取1.0,表示高斯滤波器的标准差为1.0;`Threshold`取20,表示较低的边缘幅度阈值;`Transition`取`'positive'`,表示检测上升沿的边缘;`EdgeWidth`取3,表示边缘宽度为3个像素;`Interpolation`取`'bilinear'`,表示使用双线性插值计算边缘位置;`SubPixel`取`'true'`,表示计算亚像素级别的边缘位置;`PointsPerPixel`取1,表示每个像素点只采样一个点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

航天子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值