[发明专利]一种基于车窗角点检测和多方向投影的车窗精确定位方法在审
申请号: | 201711134164.3 | 申请日: | 2017-11-15 |
公开(公告)号: | CN108108656A | 公开(公告)日: | 2018-06-01 |
发明(设计)人: | 高飞;汪敏倩;王孖豪;葛一粟;卢书芳;毛家发;肖刚 | 申请(专利权)人: | 浙江工业大学 |
主分类号: | G06K9/00 | 分类号: | G06K9/00;G06K9/46;G06K9/62;G08G1/017 |
代理公司: | 杭州浙科专利事务所(普通合伙) 33213 | 代理人: | 杜立 |
地址: | 310014 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 车窗 多方向投影 车窗边缘 精确定位方法 车窗位置 粗略定位 定位操作 角点检测 上下边缘 角点 检测 | ||
1.一种基于车窗角点检测和多方向投影的车窗精确定位方法,包括如下步骤:
步骤1:对含有车辆的彩色图像image进行车牌定位,将定位到的车牌位置记为矩形区域plateRect;
步骤2:根据车牌位置plateRect定义车窗左下角角点的检测区域detectRoiL以及车窗右下角角点的检测区域detectRoiR;
步骤3:在detectRoiL内使用SVM检测到所有车窗左下角角点的候选区域,存储在链表中,记为链表leftCornersList,在detectRoiR内使用SVM检测到所有车窗右下角角点的候选区域,存储在链表中,记为链表rightCornersList;
步骤4:从leftCornersList和rightCornersList中分别选出最终的车窗左下角角点区域记为winCornerRectL和车窗右下角角点区域记为winCornerRectR,使其满足如下条件:在所有候选区域中,(winCornerRectR.x+winCornerRectR.width/2)–(winCornerRectL.x+winCornerRectL.width/2)的绝对值最大,并且(winCornerRectR.y+winCornerRectR.height/2)–(winCornerRectL.y+winCornerRectL.height/2)的绝对值要小于max(winCornerRectL.height,winCornerRectR.height);
其中winCornerRectL.x为winCornerRectL的左上角横坐标,winCornerRectL.width为winCornerRectL的宽度,winCornerRectL.y为winCornerRectL的左上角纵坐标,winCornerRectL.height为winCornerRectL的高度,winCornerRectR.x为winCornerRectR的左上角横坐标,winCornerRectR.width为winCornerRectR的宽度,winCornerRectR.y为winCornerRectR的左上角纵坐标,winCornerRectR.height为winCornerRectR的高度,max表示从两个数中取较大者;
步骤5:根据winCornerRectL和winCornerRectR的位置以及plateRect的宽度plateRect.width定义车窗左边缘检测区域winLeftRect、车窗右边缘检测区域winRightRect以及车窗下边缘检测区域winDownRect;
步骤6:在图像image中分别截取winLeftRect区域部分、winRightRect区域部分以及winDownRect区域部分,得到车窗左边缘检测区域图像、车窗右边缘检测区域图像以及车窗下边缘检测区域图像,并对截取得到的车窗左边缘检测区域图像和车窗右边缘检测区域图像进行图像灰度化、Sobel垂直边缘检测以及OTSU二值化操作,将最终得到的二值化图像分别记为winLeftImg和winRightImg,对截取得到的车窗下边缘检测区域图像进行图像灰度化、Sobel水平边缘检测以及OTSU二值化操作,将得到的二值化图像记为winDownImg;
步骤7:以winLeftImg的左上角为坐标系原点,水平向右为x轴正方向,垂直向下为y轴正方向,将坐标系中直线与x轴正方向的夹角记为θ,其中-90°≤θ≤-60°,在每一个θ方向上,对winLeftImg进行投影,将投影值最大处对应的角度θ记为θ1,并将投影值最大处对应的投影直线上的任意一点记为point1,根据θ1和point1计算该投影直线在原图image坐标系中对应的直线方程,记为l1;
其中原图image坐标系表示以原图image的左上角为坐标系原点,水平向右为x轴正方向,垂直向下为y轴正方向的坐标系;
步骤8:以winRightImg的左上角为坐标系原点,水平向右为x轴正方向,垂直向下为y轴正方向,将坐标系中直线与x轴正方向的夹角记为θ,其中60°≤θ≤90°,在每一个θ方向上,对winRightImg进行投影,将投影值最大处对应的角度θ记为θ2,并将投影值最大处对应的投影直线上的任意一点记为point2,根据θ2和point2计算该投影直线在原图image坐标系中对应的直线方程,记为l2;
步骤9:以winDownImg的左上角为坐标系原点,水平向右为x轴正方向,垂直向下为y轴正方向,将坐标系中直线与x轴正方向的夹角记为θ,其中-10°≤θ≤10°,在每一个θ方向上,对winDownImg进行投影,将投影值最大处对应的角度θ记为θ3,并将投影值最大处对应的投影直线上的任意一点记为point3,根据θ3和point3计算该投影直线在原图image坐标系中对应的直线方程,记为l3;
步骤10:计算直线l1和l3的交点,记为leftPoint,计算直线l2和l3的交点,记为rightPoint;
步骤11:根据winCornerRectL和winCornerRectR的位置以及leftPoint和rightPoint的位置定义车窗上边缘检测区域winUpRect;
步骤12:在图像image中截取winUpRect区域部分,得到车窗上边缘检测区域图像,并对截取得到的车窗上边缘检测区域图像进行图像灰度化、Sobel水平边缘检测以及OTSU二值化操作,将最终得到的二值化图像记为winUpImg;
步骤13:以winUpImg的左上角为坐标系原点,水平向右为x轴正方向,垂直向下为y轴正方向,将坐标系中直线与x轴正方向的夹角记为θ,在θ=θ3方向上对winUpImg进行投影,在得到的投影值中从下向上扫描,直到扫描到某一位置的投影值大于threshProject则停止扫描,将该投影值处对应的投影直线上的任意一点记为point4,根据θ3和point4计算该投影直线在原图image坐标系中对应的直线方程,记为l4,如果没有扫描到投影值大于threshProject的位置,则直接令l4为:y=(leftPoint.y+rightPoint.y)/2-(rightPoint.x-leftPoint.x)/3,其中threshProject为预先设定的投影阈值,该投影阈值设为84,leftPoint.x为leftPoint的横坐标,leftPoint.y为leftPoint的纵坐标,rightPoint.x为rightPoint的横坐标,rightPoint.y为rightPoint的纵坐标;
步骤14:计算直线l1和l4的交点,记为leftPoint1,计算直线l2和l4的交点,记为rightPoint1;
步骤15:根据leftPoint、rightPoint、leftPoint1和rightPoint1的位置计算得到车窗在图像image中的位置winRect;
步骤5中车窗左边缘检测区域winLeftRect、车窗右边缘检测区域winRightRect以及车窗下边缘检测区域winDownRect的定义如下:
5.1):winLeftRect.x=winCornerRectL.x;
5.2):winLeftRect.y=winCornerRectL.y+winCornerRectL.height-plateRect.width/2;
5.3):winLeftRect.width=plateRect.width;
5.4):winLeftRect.height=plateRect.width/2;
5.5):winRightRect.x=winCornerRectR.x+winCornerRectR.width-plateRect.width;
5.6):winRightRect.y=winCornerRectR.y+winCornerRectR.height-plateRect.width/2;
5.7):winRightRect.width=plateRect.width;
5.8):winRightRect.height=plateRect.width/2;
5.9):winDownRect.x=winCornerRectL.x;
5.10):winDownRect.y=Top;
5.11):winDownRect.width=winCornerRectR.x+winCornerRectR.width–winCornerRectL.x;
5.12):winDownRect.height=(Buttom–Top+plateRect.width)/2;
其中winLeftRect.x为winLeftRect的左上角横坐标,winLeftRect.y为winLeftRect的左上角纵坐标,winLeftRect.width为winLeftRect的宽度,winLeftRect.height为winLeftRect的高度,winRightRect.x为winRightRect的左上角横坐标,winRightRect.y为winRightRect的左上角纵坐标,winRightRect.width为winRightRect的宽度,winRightRect.height为winRightRect的高度,winDownRect.x为winDownRect的左上角横坐标,winDownRect.y为winDownRect的左上角纵坐标,winDownRect.width为winDownRect的宽度,winDownRect.height为winDownRect的高度,Top=min(winCornerRectL.y,winCornerRectR.y),Buttom=max(winCornerRectL.y+winCornerRectL.height,winCornerRectR.y+winCornerRectR.height),min表示从两个数中取较小者。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711134164.3/1.html,转载请声明来源钻瓜专利网。