您的位置:首页 > 游戏 > 手游 > Halcon 根据霍夫变换在图像中寻找直线

Halcon 根据霍夫变换在图像中寻找直线

2024/10/5 12:38:40 来源:https://blog.csdn.net/weixin_42291376/article/details/139939247  浏览:    关键词:Halcon 根据霍夫变换在图像中寻找直线

一 霍夫变换

1 定义

霍夫变换是图像处理中从图像中识别几何形状的基本方法之一.几何形状包括圆,椭圆,直线等等.

2 直线方程

直线的方程可以用y=k*x+b 来表示,其中k和b是参数,分别是斜率和截距;

3 霍夫变换原理:

设图像上的直线是y=x, 我们先取上面的三个点:A(0,0), B(1,1), C(2,2)。可以求出,过A点的直线的参数要满足方程b=0, 过B点的直线的参数要满足方程1=k+b, 过C点的直线的参数要满足方程2=2k+b, 这三个方程就对应着参数平面上的三条直线,而这三条直线会相交于一点(k=1,b=0)。 同理,原图像上直线y=x上的其它点(如(3,3),(4,4)等) 对应参数平面上的直线也会通过点(k=1,b=0)。
在这里插入图片描述
当直线与x轴垂直,直角的正切值无穷大,故此直线不存在斜率,所以实际应用中,是采用参数方程p=xcos(θ)+ysin(θ)。这样,图像平面上的一个点就对应到参数p—θ平面上的一条曲线上。

hough_lines(RegionIn : : AngleResolution, Threshold, AngleGap, DistGap :Angle, Dist)
RegionIn:二值化边缘图像
AngleResolution:角度的步进,步进大小为AngleResolution/1
Threshold:要寻找的直线的阈值
AngleGap:定义Hough图像中的点的邻域范围,从而确定局部最大值。
DistGap:定义Hough图像中的点的邻域范围,从而确定局部最大值。
Angle:找到的直线的角度
Dist:找到的直线到圆点的距离
read_image(Image,'D:/Halcon_Study/矩形.png')get_image_size(Image,Width,Height)dev_open_window(0,0,Width,Height,'black',WindowHandle)*剪切指定矩形的图像
rectangle1_domain(Image,ImageReduced,76,120.938,464.875,966.813)* 寻找图像中矩形的边缘
sobel_amp(ImageReduced,EdgeAmplitude,'thin_sum_abs',3)*设置输出对象
dev_set_color('red')*对上面获取的边缘图像进行阈值操作
threshold(EdgeAmplitude,Region,10,255)* 对阈值后的区域进行连通处理
connection(Region,ConnectedRegions)*根据面积过滤出图像中外矩形区域
select_shape(ConnectedRegions,SelectedRegions,'area','and',2500,99999)* 霍夫变换来寻找区域中的直线
hough_lines(SelectedRegions,4,50,5,5,Angle,Dist)* 设置输出对象的颜色
dev_set_color('blue')* 将直线转换为区域
gen_region_hline(Regions,Angle,Dist)* 根据方向特征来过滤想要的直线
select_shape(Regions,SelectedRegions1,'orientation','and',1.5,1.6)
select_shape(Regions,SelectedRegions2,'orientation','and',0,0.1)* 显示图像和结果直线
dev_display(Image)
dev_display(SelectedRegions1)
dev_display(SelectedRegions2)

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com