初学radon变换 检测直线 matlab程序实现

关于Radon变换的原理网上有很多介绍了,这里根据radon变化的结果得到检测出的直线。

以一条直线为例:

 

首先对图片进行处理:

srcImage=imread(fileName);
grayImage=rgb2gray(srcImage);
cannyImage=edge(grayImage,'canny',0.45);

进行radon变换:

[R,x]=radon(cannyImage,theta);

 寻找峰值,可以根据findpeaks函数的用法进行设置变量。

si = size(R);
M=si(1);
N=si(2);
J=reshape(R,M*N,1);
[PKS,LOCS]= findpeaks(J,'THRESHOLD',6);

 

根据峰值计算垂线:

k=tan(true_theata*pi/180); %直线的斜率
b=y0-k*x0;
k2=-1/k;                 %直线垂线的斜率
syms x t f;
t=solve((k*x+b-y0)^2+(x-x0)^2==true_d^2,x);

 再根据垂线得出要检测的直线:

y=k*x_x+b;
b2=y-k2*x_x;      %得到直线截距
x1=0;              %任意求出直线上两点,用于画线
y1=k2*x1+b2;
x2=w;
y2=k2*x2+b2;
line([x1,x2],h-[y1,y2],'color','g','LineWidth',1);  % 在原图上绘出直线

结果:

 

整体的代码://download.csdn.net/download/liushangkun/12194414

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值