hough变换连接边缘matlab,边缘检测与Hough变换实验报告 Matlab

val给点的值,则它们被合并为一条直线。

实验程序与实验结果如下:

%canny算子边缘检测

clear all;

I1=imread('F:\robot\Images\sniper.jpg');

I=rgb2gray(I1);% 彩色图像灰度化

imshow(I1);

title('原始图像');

BW1= edge(I,'Canny',0.4,0.5) ; %edge调用Canny为检测算子判别阈值为0.5 figure,imshow(BW1);

title( '阈值为0.4,sigma值为0.5的Canny算子边缘检测图像');

BW2= edge(I,'Canny',0.4,0.8) ; %edge调用Canny为检测算子判别阈值为0.8 figure,imshow(BW2);

title( '阈值为0.4,sigma值为0.8的Canny算子边缘检测图像');

BW20= edge(I,'Canny',0.4,1) ; %edge调用Canny为检测算子判别阈值为1 figure,imshow(BW20);

title( '阈值为0.4,sigma值为1的Canny算子边缘检测图像');

BW21= edge(I,'Canny',0.4,1.5) ; %edge调用Canny为检测算子判别阈值为1.5 figure,imshow(BW21);

title( '阈值为0.4,sigma值为1.5的Canny算子边缘检测图像');

BW22= edge(I,'Canny',0.4,2) ; %edge调用Canny为检测算子判别阈值为2 figure,imshow(BW22);

title( '阈值为0.4,sigma值为2的Canny算子边缘检测图像');

%Hough变换检测直线程序

rotI=I;

BW=edge(rotI,'canny',0.4,1.5); %用canny算子提取图像边缘

[H,T,R]=hough(BW); %对图像进行Hough变换

figure;

imshow(H,[ ],'XData',T,'YData',R,...

'InitialMagnification','fit');

title('峰值提取效果');

xlabel('\theta'),ylabel('\rho');

axis on,axis normal,hold on;

%寻找参数平面上的极值点

P =houghpeaks(H,5,'threshold',ceil(0.3*max(H(:))));

x=T(P(:,2));y=R(P(:,1));

plot(x,y,'s','color','white');

%找出对应的直线边缘

lines=houghlines(BW,T,R,P,'FillGap',58,'MinLength',5);

figure,imshow(BW),

title('直线标记结果');

hold on

max_len=0;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值