直线检测原理matlab,Hough变换 直线检测原理及其Matlab实现

本文介绍了使用霍夫变换进行直线检测的原理,通过将笛卡尔坐标系中的直线转换为极坐标形式,计算每个像素点对应的所有可能角度的直线,并统计概率最高的(r, θ)值来确定直线。接着,文章展示了MATLAB代码实现,包括读取图像、初始化计数器、遍历像素点、计算概率和找到最可能的直线参数。最后,将检测到的直线标记出来并显示处理后的图像。" 98060958,5686716,SonarQube API设置Webhook详解,"['SonarQube', 'API', 'webhook', '自动化集成', '版本差异']
摘要由CSDN通过智能技术生成

霍夫变换直线检测的原理

笛卡尔坐标(x,y坐标)系上的直线y=kx+b 可以在极坐标系上可以用下式表示

r=x cosθ + ysinθ ,

其中r为该原点到该直线的距离,θ为该直线和x轴的夹角。

那么可以通过计算每个点x,y上,假设经过该点的直线与x轴为θ ,然后θ 从(1~180度)进行计算,分别得到不同的r值。

最后统计图片中经过各点,各个角度的直线概率最高的(r,θ)值,

我们认为这个值就是图片中真正的直线对应的r, θ值。 也即图片中直线对应的Normal Line(法线)长度r及其与x轴的夹角θ

以下是其Matlab程序实现。以下程序首先读取图片,并得到图片的大小rows,columns.

然后用Counters=zeros(rmax,180)数组用来统计各个r, θ的概率。

找到概率值最高的r, θ.

然后重新遍历图片,当x,y值满足r=x cosθ + ysinθ 时即认为该点是检测到的直线上的点。

A=imread('1.bmp');

imshow(A);

A_gray=rgb2gray(A);

%Get The Image Size

[rows,columns]=size(A_gray);

%define and initiate the Counters.

rmax=round(sqrt(rows^2+columns^2))

Counters=zeros(rmax,180);

%Begin to count

tic      %-------------start to timing.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值