资源简介
读入图片,利用radon变换进行直线检测,并将检测结果显示在图像上
代码片段和文件信息
clc
close all
clear all;
%radon变换
t=strcat(‘Stest‘int2str(15)‘.jpg‘);%读入图片名称
I=imread(t‘jpg‘);
I=imresize(I[128128]); %重置图片大小
I=mat2gray(I);
p1=figure(1);
theta=0:179; %radon变换。获得从0到179每个幅角的
[Rx]=radon(Itheta);
[MN]=size(R);
imagesc(thetaxR); %显示radon变换结果
colormap(hot);
title(‘Radon result‘);
xlabel(‘theta(幅角)‘);
ylabel(‘x(幅值)‘);
colorbar
p2=figure(2);
imshow(I);
%findpeaks函数只能对一维向量进行处理,因此对radon变换结果变形
J=reshape(RM*N1);
[PKSLOCS]= findpeaks(J‘THRESHOLD‘6); %利用峰值检测函数进行峰值检测,可设置阈值阈值因图而异
L=size( LOCS1); %检测到的峰值个数,即最终检测出的直线条数
d=zeros(size(LOCS)); %存放检测结果-距离
thetar=zeros(size(LOCS));%存放检测的直线角度
for i=1:L
d(i)=mod(LOCS(i)185)-(M-1)/2; %实际是距离
thetar(i)= fix(LOCS(i)/M); %实际是度数
end
thetar
d
%将直线进行呈现,原理参考https://cn.mathworks.com/help/images/detect-lines-using-the-radon-transform.html?searchHighlight=radon%20transform%20peak&s_tid=doc_srchtitle
for i=1:L
if thetar(i)==0
x1=64+d(i);
x2=x1;
评论
共有 条评论