资源简介

读入图片,利用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;
       

评论

共有 条评论