当前位置:   article > 正文

MATLAB Radon检测图像,初学radon变换 检测直线 matlab程序实现

matlab radon线条检测

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

以一条直线为例:

6956135b146cdfef3c7d89e938545190.png

首先对图片进行处理:

srcImage=imread(fileName);

grayImage=rgb2gray(srcImage);

cannyImage=edge(grayImage,'canny',0.45);

2433b27cdc348bbc37e5bdf8832707fb.png

进行radon变换:

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

3044d9d646d5611dca3a10f23ce95f51.png

寻找峰值,可以根据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); % 在原图上绘出直线

结果:

c967e48e3476221dbf35f46423070b0f.png

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/90763
推荐阅读
相关标签
  

闽ICP备14008679号