matlab Hough变换提取车道线

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提取车道线并不是一种好的方法,个人认为只具有学习意义
原图
提取结果

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

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值