代码实现:
clear;close all;img = imread('C:甥敳獲lenovoDesktop1(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实现——霍夫变换直线检测