[发明专利]基于单目视觉的道路边缘检测及粗定位方法有效
申请号: | 201210144082.8 | 申请日: | 2012-05-10 |
公开(公告)号: | CN102682292A | 公开(公告)日: | 2012-09-19 |
发明(设计)人: | 王宏;严润晨;赵云鹏 | 申请(专利权)人: | 清华大学 |
主分类号: | G06K9/00 | 分类号: | G06K9/00;G01C21/00 |
代理公司: | 北京思海天达知识产权代理有限公司 11203 | 代理人: | 楼艮基 |
地址: | 100080*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 目视 道路 边缘 检测 定位 方法 | ||
1.基于单目视觉的道路边缘检测和粗定位方法,其特征在于,是一种半自动式的基于移动机器人单目视觉的道路边缘检测和粗定位方法,是在由操作人员操控的计算机和装在移动机器人上的单镜头CCD摄像机共同串接而成的基于单目视觉的道路边缘检测和粗定位系统中实现的,该方法是依次按照以下步骤实现的;
步骤(1),单镜头CCD摄像机将机器人前进时拍摄到的能反映道路和非道路边界两侧颜色差异的路况图像输入到计算机中显示;
步骤(2),操作人员根据所述的道路和非道路边界两侧的颜色差异,来选择性的启动设在所述计算机内的两个不同的软件模块;
对于道路和非道路边界两侧颜色有显著差异的RGB颜色空间彩色路况图像,启动基于颜色的道路边缘检测模块;
对于道路和非道路边界两侧颜色模糊且无明显边界的RBG颜色空间彩色路况图像,启动基于阈值分割的道路边缘检测模块;
步骤(3),所述基于颜色的道路边缘检测模块依次执行以下步骤进行道路边缘的检测;
步骤(3.1),参数初始化,读入所述RBG颜色空间的彩色路况图像,设置感兴趣区域ROI的范围为所述路况图像的1/4~1/2大小,从所述彩色路况图像左下角开始划分;
步骤(3.2),从所述彩色路况图像中取出感兴趣区域ROI的图像并转换到HSV颜色空间,得到新的路况图像;
亮度V=max(R,G,B),
若H<0,则用(H+360)代替,其中RGB分别为原像素点红、蓝、绿三色的亮度值,令V′=255V,S′=255S,H′=H/2;
步骤(3.3),按以下方式用openCV库中的cvCanny函数模块进行canny抽边,得到canny图:
设定步骤(3.2)得到的结果图像边缘连接处作为控制边缘其梯度阈值为50,内侧初始分割处作为控制强边缘其梯度阈值为150,输入为所述感兴趣区域ROI的HSV颜色空间图像和上述两个参数;输出为canny抽边图;
步骤(3.4),设定HSV的颜色范围区间,把绿色区域或土黄色区域提取出来,其中绿色的范围区间为(20,0,0)~(70,40,0),土黄色的范围为(10,0,0)~(30,0,150);
步骤(3.5),利用openCV库中的cvErode函数模块对步骤(3.4)得到的绿色或土黄色区域进行腐蚀操作,输出为结果图像;
步骤(3.6),利用openCV库中的cvDilate函数模块对步骤(3.5)得到的结果图像进行膨胀操作,输出为经过腐蚀膨胀操作后的绿色或土黄色区域结果图像;
步骤(3.7),从步骤(3.6)得到的结果图像中提取拟合用的边缘点:为道路左侧边缘时,在步骤(3.6)得到的结果图像内,从右至左地扫描,若所述边缘区域内某个边缘点左侧的5个像素内有绿色点,而右侧的5个像素内对应的没有绿色点,则认为该边缘点为真实边缘点,所述边缘点左右不足5个像素的像素点直接舍去,得到一个真实边缘点样本集;对土黄色区域按同样步骤;
步骤(3.8),判断真实边缘点:
若所述真实边缘点样本集中,真实边缘点的个数m≥30,则执行以下步骤;
步骤(3.8.1),从所述真实边缘点样本集中,随机地选出两个真实边缘点,作为两个样本数据;
步骤(3.8.2),通过openCV库中的cvFitline函数模块,用最小二乘法拟合出一条直线;在计算误差类型为CV_DIST_L2,极坐标半径和角度误差均为0.01条件下,输出所拟合直线的参数;之后再统计与所述直线距离小于4个像素点的边缘点个数k,以此作为拟合用的点;
步骤(3.8.3),若k/m大于0.3,则接受拟合模型,再通过所述的k个点利用最小二乘法重新拟合直线,即得到最终结果;否则,返回步骤(3.8.1);当重复执行次数大于设定的最大循环次数200次时,则失败;若所述真实边缘点样本集中的真实边缘点数小于30时则失败;
步骤(4),所述基于阈值分割的道路边缘检测模块,在道路右侧边缘处,依次做以下步骤进行道路边缘检测;
步骤(4.1),设置感兴趣区域ROI的大小为图像右下角1/4部分;
步骤(4.2),取出所述感兴趣区域图像,并按下式转换为灰度图像;
v0(x,y)=0.212671×R(x,y)+0.715160×G(x,y)+0.072169×B(x,y),
x,y代表所述图像中以左上角为原点的像素点坐标值;v0表示(x,y)像素点的灰度值,R表示彩色图像中所在像素的红色通道值,G表示彩色图像中所在像素的绿色通道值,B表示彩色图像中所在像素的蓝色通道值,v0,R,G,B都在[0,255]内;
步骤(4.3),按下式对像素点(x,y)进行均值模糊处理,将以(x,y)为中心的5×5的像素值矩阵V与核矩阵K卷积,得到新的像素值V1;
v1(x,y)=V*K,*表示卷积,
步骤(4.4),计算每个灰度值对应的像素点数,制成颜色直方图;
步骤(4.5),设定CCD摄像机获取的所述感兴趣区域图像,在灰度空间中的值域为[0,l-1],l∈(0,255];
按下式计算评判值η(t),遍历所有灰度值的评判值,选出评判值最大的一个灰度值作为分类最优的灰度阈值;
其中,为根据灰度阈值t划分的大于和小于等于该值的两类像素点,通过计算出现概率P0(t)、P1(t)而得到的类间方差;
pi为灰度值i的像素点出现的概率;图像的总像素为n表示灰度值为i的像素点数,利用直方图的结果计算得到灰度为i的像素出现的概率为
P0(t)、P1(t)是根据所述灰度阈值t划分的两类的灰度值出现概率;μT(t)为整个灰度值值域内像素点的概率加权总和;
为根据灰度阈值t划分的大于和小于等于该值的两类像素点,通过计算出现概率而得到的类内方差;
其中,μ0(t)、μ1(t)分别为在阈值t以下和以上的灰度值值域中,像素点出现的概率的加权均值;
步骤(4.5),基于步骤(4.4)得到的灰度分类阈值t,分别把高于所述灰度分类阈值t以及低于所述灰度分类阈值t的两类像素点,将其灰度值按下式进行二值化处理;
v(x,y)为进行二值化处理后的像素灰度值;
步骤(4.6),利用所述openCV库中的cvCanny函数模块对步骤(4.5)得到的二值图像进行canny抽边,输出为canny抽边图像;设定作为边缘连接处的控制边缘连接的像素梯度阈值为50,作为边缘初始切割处的控制强边缘连接处的像素梯度阈值为100;
步骤(4.7),对于步骤(4.6)得到的二值化处理以后的canny抽边图,按照从左到右取得第一个白色边缘点,作为边界点,得到一个边界点集;
步骤(4.8),利用openCV库中的cvHoughLines函数模块对步骤(4.8)得到的边界点集中的所有边界点进行Hough直线拟合,得到道路边缘;设定极坐标半径的分辨率为3个像素点,极坐标角度分辨率为直线转换到极坐标上需通过它的曲线条数最少为50;
步骤(5),按一下步骤进行机器人和道路边缘的相对粗定位;
步骤(5.1),把步骤(4)检测得到的路况边缘的前向图通过做逆透视投影变换得到道路边缘的俯视图,步骤如下:
步骤(5.1.1),用机器人上的摄像机拍摄一幅带有梯形图像,在俯视图中为矩形的前向图;
步骤(5.1.2),在步骤(5.1.1)得到的前向图中选择一个梯形的四个顶点,记录坐标;
步骤(5.1.3),任意设置俯视图中矩形大小与像素的对应关系,从而得到所述四个顶点在做完逆透视投影变换后得到的俯视图中的四个顶点,记录坐标;
步骤(5.1.4),利用openCV中的cvWrapPerspectiveQMatrix函数模块,求出逆透视投影变换矩阵H,输入为步骤(5.1.2)、(5.1.3)中的两套坐标构成的两个4×2的矩阵,输出为逆透视投影变换矩阵H;
步骤(5.1.5),把所述前向图和逆透视投影变换矩阵输入openCV中的cvWrapPerspective函数模块中,得到逆透视投影变换后的俯视图;
步骤(5.2),按以下步骤航向角偏差和横向位移:
所述航向角偏差是指机器人行驶方向AC与道路边缘线的延长线AE之间的夹角θ,
所述横向位移是指所述机器人行驶方向AC上的机器人位置B到所述道路边缘延长线上的垂直距离BD;
步骤(5.2.1),求航向角偏差θ,
在所述前向图的道路边缘线上任意两点,将其中的每一个点的坐标乘以所述逆透视投影变换矩阵H,就得到所述道路边缘线的延长线上对应两点的坐标(x1,y1)、(x2,y2),相应的直线AE的斜率k=(y2-y2)/(x2-x1),则θ=90°-arctan(k);若x1=x2,则θ=0°;
步骤(5.2.2),求横向位移BD,
步骤(5.2.2.1),设定:所述俯视图的左上角为坐标原点,坐标用像素点表示,每一个像素点对应实际长度为∝mm,在步骤(5.1.3)中设置俯视图坐标时设定的;联立如下方程可得到机器人行驶方向AC中A的纵坐标为h;
步骤(5.2.2.2),设机器人行驶方向AC与所述俯视图的交点C的纵坐标为图像高度height,则从C点到道路边缘线的延长线的垂直距离为CE=sin(θ)*∝*(h-height);
步骤(5.2.2.3),按下式计算横向位移BD:
BD=sin(θ)*∝*(h-height-d/∝)
d是机器人中心B和俯视图下边缘的垂直距离BC,也是机器人前方的盲区距离,单位为mm。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210144082.8/1.html,转载请声明来源钻瓜专利网。