matlab Hough变换提取车道线

这篇博客介绍了通过Hough变换来提取车道线的过程,包括图像预处理、边缘检测、绘制Hough曲线和提取交叉点。作者指出,虽然这种方法在实际应用中可能不是最佳选择,但它具有学习价值。此外,还提到了图像裁剪的重要性,特别是针对摄像头捕获的图像,通常只需要下半部分或特定三角形区域的有效内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hough变换提取车道线

  1. 图像前处理
clc;clear;close all;
Image=rgb2gray(imread('车道线.png'));
imshow(Image);
figure(2),imhist(Image);
Image = imbinarize(Image,0.90);
figure(3),imshow(Image);
bw=edge(Image,'log');
figure(4),imshow(bw);title("边缘检测后的二值图");
  1. 绘制Hough曲线并提取交叉点
[h,t,r]=hough(bw,'RhoResolution',1,'Theta',-90:0.1:89.5);
figure(5),imshow(imadjust(mat2gray(h)),'XData',t,'YData',r);
xlabel('\theta'),ylabel('\rho');
axis on,axis normal,hold on;%绘制hough曲线
P=houghpeaks(h,10,"NHoodSize",[31 31],"Threshold",25);
x=t(P(:,2));
y=r(P(:,1));%提取点
plot(x,y,'o','color','r');
  1. 提取直线并绘制
lines=houghlines(bw,t,r,P,'FillGap',100,'Minlength',30);
figure(6),imshow(Image);
hold on;
max_len=0;
for i=1:length(lines)
    xy=[lines(i).point1;lines(i).point2];
    plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','g');
    plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','y');
    plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','r');
end

Hough提取车道线并不是一种好的方法,个人认为只具有学习意义
原图
提取结果

事实上道路总是靠下,摄像头上部分的区域是无效内容,太靠左太靠右也是无效内容。所以可以对图像进行裁剪,例如裁剪为三角形区域内有效,或者图像矩形的下半部分有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值