0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过计算机视觉去识别车道线

深度学习实战 2018-01-15 10:03 次阅读

因为种种原因导致上个月没有更新推文,所以特此发此推文表示歉意。

今天介绍的是如何通过计算机视觉去识别车道线,其实现在也有各种方法去识别车道线了。这次是基于Matlab的实现,过几天会更新Python版本的实现,虽然用的语言不一样,但是原理都是一样的。

预处理

摄像机获得的视频图像,由于受到周围环境的影响,存在着很多无用信息和各种各样的噪声干扰。为了准确的检测到道路线必须对图像进行预处理。首先,通过灰度化处理将原始彩色图像转换为灰色图像,然后采用大小为5*5的模板进行高斯滤波平滑处理,减小噪声干扰。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。

若使用3×3模板,则计算公式如下

g(x,y)={f(x-1,y-1)+f(x-1,y+1)+f(x+1,y-1)+f(x+1,y+1)+[f(x-1,y)+f(x,y- 1)+f(x+1,y)+f(x,y+1)]*2+f(x,y)*4}/16;

其中,f(x,y)为图像中(x,y)点的灰度值,g(x,y)为该点经过高斯滤波后的值

由于天空并不存在车道的感兴趣区域,所以对图片进行了划分,将感兴趣区域划为一个三角形区域。如图1。

图一

预处理代码如下:

%读入RGB图片

I=imread('IMG00061.jpg');

%把RGB图转换为灰度图

I=rgb2gray(I);

%高斯滤波平滑处理

sigma = 1;

gausFilter =fspecial('gaussian', [5,5], sigma);

gaus= imfilter(I, gausFilter,'replicate');

%得到图片的宽和高

[h, w]=size(I);

%k是直线的斜率

%找出图片的感兴趣区域

k = 1.3;

for y=1:h

for x=1:w

if y < x*k + h-k*w || y < -k*x +h

I(y, x) = 0;

end

end

end

边缘检测

由于车道线的灰度比路面更加明亮,以此可以用边缘检测的方法把车道的边缘检测出来。在边缘检测中,我用了‘Sobel’算子。在技术上,它是一离散性差分算子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应的灰度矢量或是其法矢量

Sobel卷积因子为:

该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像灰度值,其公式如下:

如何通过计算机视觉去识别车道线

图像的每一个像素的横向及纵向灰度值通过以下公式结合,来计算该点灰度的大小:

通常,为了提高效率使用不开平方的近似值:

所得到的结果如图2:

图2

霍夫变换直线检测

有了边缘检测的二值图后可以对图像进行霍夫变换,霍夫变换是图像变换中的经典手段之一,主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。霍夫变换的原理是将特定图形上的点变换到一组参数空间上,根据参数空间点的累计结果找到一个极大值对应的解,那么这个解就对应着要寻找的几何形状的参数(比如说直线,那么就会得到直线的斜率k与常数b,圆就会得到圆心与半径等等)。经过霍夫变换后可得到如图3关于ρ和θ的图。

图3

图中最亮的几个点则为峰值,峰值中极有可能存在直线。可以选出一组候选的峰值,然后决定线的起始点和终点。函数houghlines用默认的语法执行这个任务:

lines = houghlines(f, theta,rho, peaks)

或者使用完整的语法形式:

lines = houghlines(...,'FillGap', val1, 'MinLength', val2)

其中,theta和rho是来自函数hough的输出,peaks是函数houghpeaks的输出。

效果

为了美观和效果,我对检测出来的线段进行了延长处理,效果如下图4。

图4

完整代码如下:

clear

close all

%读入RGB图片

I=imread('IMG00061.jpg');

%把RGB图转换为灰度图

I=rgb2gray(I);

%高斯滤波平滑处理

sigma = 1;

gausFilter = fspecial('gaussian', [5,5], sigma);

gaus= imfilter(I, gausFilter, 'replicate');

%得到图片的宽和高

[h, w]=size(I);

%k是直线的斜率

%切图,找出图片的感兴趣区域

k = 1.3;

for y=1:h

for x=1:w

if y < x*k + h-k*w || y < -k*x + h

I(y, x) = 0;

end

end

end

imshow(I)

%用Sobel算子做边缘检测

BW = edge(I,'sobel');

%霍夫变换

[H,T,R] = hough(BW);

imshow(H,[],'XData',T,'YData',R, 'InitialMagnification','fit');

xlabel(' heta'), ylabel(' ho');

axis on, axis normal, hold on;

%找出霍夫变换的峰值

P = houghpeaks(H,2);

%用霍夫变换检测和连接线

lines = houghlines(BW,T,R,P);

figure;

imshow(I); hold on

%画线

for k = 1:length(lines)

p1 = lines(k).point1;

p2 = lines(k).point2;

syms slope b

[b, slope] = solve(slope*p1(1)-p1(2)+b, slope*p2(1)-p2(2)+b);

plot([(h-b)/slope, (0.4*h-b)/slope], [h, 0.4*h], 'g-', 'LineWidth',3);

end

代码中用到的图片:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    175

    文章

    2922

    浏览量

    228436
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66751
  • 计算机视觉
    +关注

    关注

    8

    文章

    1600

    浏览量

    45615

原文标题:项目实战 | 车道线检测与定位

文章出处:【微信号:gh_a204797f977b,微信公众号:深度学习实战】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    机器视觉计算机视觉的关系简述

    计算机视觉是一门独立的学科,有着30年左右的历史,集图像处理、模式识别、人工智能技术为一体,着重服务于一幅或多幅图像的计算机分析。机器视觉
    发表于 05-13 14:57

    让机器“看见”—计算机视觉入门及实战 第二期基础技术篇

    过优异成绩。其主要的兴趣是关注人工智能特别是计算机视觉技术如何从技术、产品和商业角度在真实世界中大规模落地。主题简介及亮点:本次直播,讲者将介绍计算机视觉领域人脸检测/跟踪/定位/
    发表于 09-04 17:56

    车道计算机显示器为什么会黑屏

    本文仅限于2010年收费系统改造批次设备,非此批设备有所差异,内容仅供参考。故障现象:车道计算机显示器黑屏(全屏)。原因1:电源供电故障。初步处置:检查显示器电源显示灯状态,没有显示,则查电源是否
    发表于 09-17 07:54

    AI新闻:计算机视觉和模式识别会议

    了解和注册计算机视觉和模式识别会议(CVPR 2018)!
    的头像 发表于 11-05 06:14 2891次阅读

    计算机视觉与机器视觉区别

     “计算机视觉”,是指用计算机实现人的视觉功能,对客观世界的三维场景的感知、识别和理解。计算机
    的头像 发表于 12-08 09:27 1.2w次阅读

    计算机视觉就业怎么样

    计算机视觉是指用机器模拟“视觉器官”,对目标进行识别、跟踪和测量等,并由计算机代替大脑完成进一步的图像处理和解释。目前我们手机常用的人脸
    的头像 发表于 04-04 16:06 1.5w次阅读

    计算机视觉中的重要研究方向

    计算机视觉是一门研究如何让计算机达到人类那样看的技术。使用摄像头和电脑来代替人类完成一些复杂的工作,例如对目标进行分类、识别、分割、跟踪等,计算机
    的头像 发表于 11-19 14:32 1.1w次阅读

    浅谈计算机视觉的无人车感知

    数据集 (5)路面与车道检测数据集 3、计算机视觉能解决的问题: (1)物体的识别与跟踪:识别(深度学习):
    的头像 发表于 03-24 15:23 1595次阅读

    剖析计算机视觉识别简史

    最近,物体识别已经成为计算机视觉和 AI 最令人激动的领域之一。即时地识别出场景中所有的物体的能力似乎已经不再是秘密。随着卷积神经网络架构的发展,以及大型训练数据集和高级
    的头像 发表于 04-30 10:14 2373次阅读
    剖析<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b><b class='flag-5'>识别</b>简史

    基于计算机视觉的客机舱门识别与定位方法

    基于计算机视觉的客机舱门识别与定位方法
    发表于 06-22 16:37 42次下载

    模式识别计算机视觉手册

    模式识别计算机视觉手册免费下载。
    发表于 06-24 10:02 3次下载

    计算机视觉识别是如何工作的?

    计算机视觉识别是一种人工智能技术,旨在使计算机系统从数字图像、视频等视觉信息中识别和提取有意义信
    的头像 发表于 02-09 13:41 2402次阅读

    计算机视觉中手语识别研究

    计算机视觉中手语识别研究 手语识别的目的就是通过计算机提供一种有效的、准确的机制将聋哑人常用的手
    的头像 发表于 04-14 16:11 821次阅读

    机器视觉计算机视觉的区别

    机器视觉计算机视觉的区别 机器视觉计算机视觉是两个相关但不同的概念。虽然许多人使用这两个术语
    的头像 发表于 08-09 16:51 1129次阅读

    人工智能计算机视觉方向是什么

    “看”并作出决策。 计算机视觉是人工智能领域的一大分支,是以计算机和数字图像处理技术为手段,通过视觉信息的处理和分析来实现人工智能的各类应
    的头像 发表于 08-15 16:06 1191次阅读