1.导入图片后进行预处理,包括灰度图、滤波、突出边缘、二值化。边缘检测方法有:'gaussian', 'sobel', 'prewitt', 'laplacian', 'log', 'average', 'unsharp', 'disk', 'motion'。

2.使用[H,theta,rho] = hough(f3,'RhoResolution', 0.2, 'Theta', -90:0.2:89)函数将预处理后的图片进行hough变换,得到H矩阵。

3.使用P=houghpeaks(H,5,'threshold', ceil(0.3*max(H(:))))函数取得H矩阵中5处最高值的位置,表示取得存在于原图中较长的5条直线。

4.使用lines=houghlines(f3,theta,rho,P,'FillGap',20,'MinLength',40)函数取得上述5条直线在图中的端点。

5.滤除长度与斜率不符合车道实际的线段后,划线显示检测得到的车道。

F=imread('D:\Desktop\2.png');
f=rgb2gray(F);
f1=medfilt2(f,[9,9]);              %中值滤波
H=fspecial('log');
f2=imfilter(f1,H);                 %突出边缘
thresh=graythresh(f2);
f3=imbinarize(f2,thresh);           %二值化
figure(1),imshow(f3);[H,theta,rho] = hough(f3,'RhoResolution', 0.2, 'Theta', -90:0.2:89);
figure(2),imshow(imadjust(rescale(H)),'XData',theta,'YData',rho,'InitialMagnification','fit');
title('Hough transform');
xlabel('\theta'), ylabel('\rho');
axis on, axis normal, hold on;
colormap(gca,hot);P=houghpeaks(H,5,'threshold', ceil(0.3*max(H(:))));
x = theta(P(:,2));
y = rho(P(:,1));
plot(x,y,'s','LineWidth',1.5,'Markersize',10,'color','green');lines=houghlines(f3,theta,rho,P,'FillGap',20,'MinLength',40);
line_length_thred=40;
slope_thred=0.1;
figure(3),imshow(f3);
L= length(lines);
for k=1:Lxy= [lines(k).point1; lines(k).point2];line_length=((xy(1,1)-xy(2,1))^2+(xy(1,2)-xy(2,2))^2)^0.5;
if line_length< line_length_thredcontinue;
end
slope=(xy(1,2)-xy(2,2))/(xy(1,1)-xy(2,1));
if abs(slope)< slope_thredcontinue;
end
line(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
end

预处理后的二值化图像如下:

hough变换后找到5个H矩阵中的最大值:

可看到(rho,theta)在图内部有2个高值在(100,-50°)、(400,40°)左右。

根据matlab中hough变换后的坐标关系,可知(rho,theta)为(100,-50°)正是检测到的右边的车道线。(rho,theta)为(400,40°)正是检测到的左边的车道线。

theta在-90°与90°附近检测到3个H矩阵中的高值,表示检测到图片中横向的线条。

滤除长度与斜率不符合车道实际的线段后,划线显示检测得到的车道。

matlab使用hough变换函数进行车道检测相关推荐

  1. 基于matlab的Hough变换图像直线检测算法仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下:

  2. MATLAB使用hough变换函数输出[H,theta,rho]的具体含义

    Hough 变换输出参数[H,theta,rho]的具体含义 F=imread('D:\Desktop\90.png'); f=rgb2gray(F); [H,theta,rho] = hough(f ...

  3. 【车道线检测】基于matlab Hough变换图片车道线检测 【含Matlab源码 276期】

    ⛄一.Hough变换图片车道线检测简介 1 引言 随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注.先进驾驶辅助系统 (Advanced Driver Ass ...

  4. 【车道线检测】Hough变换图片车道线检测 【含Matlab源码 276期】

    ⛄一.Hough变换图片车道线检测简介 1 引言 随着人们生活水平的提高, 科技的不断进步, 智能驾驶技术逐渐受到了研究者们的广泛研究和关注.先进驾驶辅助系统 (Advanced Driver Ass ...

  5. hough变换检测直线 matlab,Matlab实现Hough变换检测图像中的直线

    Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...

  6. 基于边缘检测与Hough变换的车道线检测

    基于边缘检测与Hough变换的车道线检测 第一章:绪论 1.1 研究意义及背景 高速公路的通行里程是一个国家发展水平的重要标志之一.高速公路具有车辆通行能力大.交通事故少.经济效益高的特点,它的不断发 ...

  7. 车道检测、自适应巡航控制和编队matlab simulink仿真建模模型

    车道检测.自适应巡航控制和编队matlab simulink仿真建模模型 ID:8630672358957146一無所有`

  8. matlab道路检测,基于MATLAB的车道保持辅助车道检测

    模拟车道以下 您可以修改LKA的Safe Lateral Offset的值以忽略驱动程序输入,将控制器置于纯通道跟随模式.通过增加该阈值,横向偏移总是在由车道保持辅助设定的距离内.因此,车道偏离的状态 ...

  9. hough函数 matlab,matlab中hough函数

    hough 变换提取直线(Matlab 实现) Hough 变换提取直线一.实验目标实现用 Hough 变换检测直线的算法二.实验内容 1.读入图像选取有较多直线及部分曲线以作对比的...... 基于 ...

最新文章

  1. 关于AndroidSDK配置时的tools目录下找不到adb.exe的错误
  2. KeilKill.bat删除keil编译生成的过程文件
  3. 个人觉得非常好的B树,B+树的总结
  4. 十字链表、邻接多重表
  5. 机器学习之-BoostedTree
  6. 03-Axure9默认元件库
  7. pythonista安卓_Android平台有哪些软件类似于iOS上的JSbox、Pythonista和Thor?
  8. “十四五”国家信息化规划发布,十大要点解读
  9. 饥荒如何修改服务器人数上限,《饥荒联机版》房间人数上限修改图文教程
  10. Flutter String 常用方法
  11. C语言排序(冒泡排序、选择排序、插入排序和快速排序)
  12. Spark ML 构建回归模型
  13. 吉他编曲--如何“扒带”(下)
  14. turn out用法
  15. 动态规划的一般解题思路-详解
  16. java 文件路径读取,java中依据路径读取文件
  17. 大数据开发常用的编程语言有哪些?
  18. 如何做好网络推广浅析SEO优化网站文章需要注意哪些技巧?
  19. Facebook前副总裁手撕老东家,叫板华尔街,怒怼风投圈……
  20. 参与社团活动的意义_学校开展社团活动有何意义

热门文章

  1. c#生成PPT总结(Microsoft.Office.Interop)
  2. 富士康将和台积电联手 竞购东芝半导体业务
  3. [论文笔记]CAB:CAching in Buckets CAB-ACME
  4. 测试必备的15个docker命令,你都掌握了吗
  5. 线索二叉树、选择树、堆
  6. php中的preg_replace函数,PHP正则替换preg_replace函数如何使用
  7. steam怎么设置邮箱令牌_steam收不到邮箱令牌验证码怎么办 这些知识你不一定知道...
  8. python3两个三阶矩阵相乘_两个三阶矩阵相乘的例子和方法!急!
  9. 已知校验矩阵(监督矩阵)或生成矩阵G怎样生成所有可能码字
  10. 微信公众号的封面图怎么拿到手