直线检测原理matlab,matlab-哈夫变换识别图像(棋盘)直线/直线检测

个人邮箱:570664186@qq.com,如有疑问请备注CSDN

代码实现:

clear;

close all;

img = imread('C:\Users\lenovo\Desktop\1(1).bmp');

figure(1),

subplot(1,2,1);

imshow(img);

title('原始图像');

img=rgb2gray(img);  % 灰度图像

subplot(1,2,2);

imshow(img);

title('灰度图像');

thresh=[0.01,0.10];  %敏感度阈值

sigma=3;%定义高斯参数

f = edge(double(img),'canny',thresh,sigma);  %边缘检测

figure(2),

imshow(f);

title('canny 边缘检测');

% 检测函数;

[H, theta, rho]= hough(f,'Theta', 20:0.1:75);  %0-1

% H->累计数组 , thetaH:对应的θ,实际上H的大小就是Rho×Theta

% Rho:H对应的ρ

peak=houghpeaks(H,1);  %峰值提取

hold on  %保留当前的图和特定的坐标轴属性,以便后续的绘图命令添加到现有的图表。

%得到线段信息

lines=houghlines(f,theta,rho,peak);

figure(3);

imshow(f,[]);

title('霍夫变换检测结果');

hold on  ;

for k=1:length(lines)

xy=[lines(k).point1;lines(k).point2];

plot(xy(:,1),xy(:,2),'LineWidth',4,'Color',[.6 .6 .6]);

end

运行结果:

致谢:本篇博客参考以下大佬的内容;

Hough直线检测原理及Matlab函数详解 Matlab实现——霍夫变换直线检测

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值