几种车牌图像倾斜角度矫正算法
- 格式:doc
- 大小:2.26 MB
- 文档页数:15
倾斜矫正方案在实际工程应用中,通常需要对摄影测量产生的倾斜图像进行矫正以提高测量精度。
本文将介绍倾斜矫正的基本概念及其两种常用方法:多点校正法和透视变换法。
倾斜矫正概述当相机轴线与平面垂直,且图像上仅出现水平和垂直的线时,我们所得到的图像称为正交图像。
但在实际拍摄中,相机轴线与平面不一定垂直,导致图像中出现非水平和垂直的线,这样的图像称为倾斜图像。
对于倾斜图像,我们常通过倾斜矫正来恢复它的正交状态,以方便后续的测量和分析。
倾斜矫正的目的就是找到一个变换,将倾斜图像投影到一个平面上,使得平面上的线条满足垂直或水平,从而实现对图像的矫正。
多点校正法多点校正法又称为多点共线法,其基本思想是在图像上取多组已知的平行线或直线组成标准点,并利用标准点的像坐标与实际坐标之间的关系来确定转换参数,从而实现对图像的矫正。
具体实现步骤如下:1.在图像上选择至少4组平行线或刻度线,用于建立像素坐标与实际距离之间的关系。
2.测量实际世界中平行线的实际距离。
3.测量图像中各组平行线之间的像素距离。
4.建立像素坐标与实际距离之间的关系,求出变换矩阵。
5.对图像进行矫正。
多点校正法的优点在于实现简单,适用范围广。
不过它对于标准点的选取有较高的要求,且标准点最好越靠近摄像机越好。
透视变换法透视变换法基于透视几何的原理,先通过对图像的旋转和缩放将倾斜图像转换为平行视图,再进行裁剪和最终的放大或缩小操作,最终还原出视角正确的图像。
具体实现步骤如下:1.提取出图像中的特征点。
2.选择三个以下的特征点,计算它们的投影坐标和真实坐标。
3.通过计算透视矩阵,对图像进行变换。
4.对变换后的图像进行裁剪和调整,还原正常图像。
透视变换法的优点在于对标准点的要求不高,但是在特征点的选取上需要更为精确。
此外,对于大型的图像,透视变换法可能会效率较低。
结论本文介绍了倾斜矫正的基本概念及其两种常用方法:多点校正法和透视变换法。
多点校正法实现简单且适用范围广,对标准点的选取有一定要求;透视变换法通过透视矩阵的计算,可以对图像进行更准确的矫正,但是在特征点的选取上需要更为精确。
车牌识别中的倾斜车牌校正算法
车牌识别是现代交通管理中不可或缺的技术之一。
然而,在实际应用过程中,会遇到一些车牌倾斜的情况,导致车牌识别率下降。
因此,研究车牌倾斜校正算法对车牌识别具有重要意义。
车牌识别中的倾斜车牌校正算法是针对车牌图像中出现的倾斜问题进行修正的算法。
它是通过对车牌图像进行预处理,将车牌图像进行倾斜校正,使得车牌上的字符垂直排列,以便于后续的字符识别。
在倾斜校正的过程中,常见的算法有基于角度旋转的算法、基于投影的算法、基于边缘的算法等等。
其中,基于角度旋转的算法是较为常见的一种方法。
它通过计算车牌的倾斜角度,然后进行图像的旋转,使得车牌上的字符垂直排列。
而基于投影的算法则是利用车牌上的字符进行投影,通过寻找字符的最小外接矩形,进而对图像进行校正。
基于边缘的算法则是利用车牌的边缘信息,进行边缘检测和霍夫变换,来计算车牌的倾斜角度,从而实现倾斜校正。
总的来说,车牌识别中的倾斜车牌校正算法是车牌识别技术中重要的一环。
通过对车牌图像进行倾斜校正,能够有效提高车牌识别的准确率和稳定性。
收稿日期:2005-03-07;修回日期:2005-09-26基金项目:国家自然科学基金项目(60325102;60428101作者简介:张思远(1976-,男,天津人,助教,硕士,研究方向为图像处理及模式识别.随着世界各国汽车数量的增加,城市的交通状况日益受到人们的关注。
智能交通系统(ITS ,intelligenttraffic system 随之产生,它通过对自动采集的实时交通信息进行分析并给出最优方案,能最大限度提高地面交通设施的利用率和效率。
车牌识别(LPR ,licenseplate recognition 技术是ITS 的关键技术之一[1-2]。
车牌识别系统可分为车牌定位、图像预处理、字符切分、字符识别4个部分[3-4],其中图像预处理是系统中的一个重要环节,主要包括图像增强、二值化[5]、去噪、车牌的倾斜矫正和车牌的二次定位。
本文针对车牌图像预处理给出了基于图像特征线的二值化阈值确定方法和针对车牌图像的倾斜矫正改进算法。
由于车牌图像在实际摄取中的特殊性,使得图像中拍到的车牌有不同程度的倾斜变形。
本文在一般矫正方法的基础上,给出了针对车牌特点的改进算法,在水平方向上采用Hough 变换[6-7]确定角度后进行旋转矫正,而在垂直方向上采用投影法[8-9]进行变形矫正,并进行矫正前后的对比,以保证矫正的效果良好。
1车牌图像二值化图像二值化的关键是阈值的选取,只要阈值选取恰当,不仅可以有效地去处噪声,而且可将图像明显地分成目标和背景,大大减少了信息量,提高了处理速度。
传统二值化阈值的确定方法主要有全局阈值法和局部阈值法,全局阈值法是根据图像的灰度直方图的统计分布确定阈值,方法简单但效果一般,抗干扰能力较差;局部阈值法是以每个像素点为中心建立一个模板,通过整个模板的灰度信息综合判断该像素点是置0还是置1,具有一定的自适应性但速度较慢。
车牌识别预处理中的二值化及倾斜矫正算法张思远,樊志远,吴仁彪(中国民用航空学院空中交通管理学院,天津300300摘要:车牌识别中的预处理包括图像增强,二值化和噪声去除。
几种车牌图像倾斜角度矫正算法在车牌识别领域中,图像的倾斜会对识别效果造成一定影响,因此对车牌图像进行倾斜矫正至关重要。
下面将介绍几种常见的车牌图像倾斜角度矫正算法。
1. 直线检测法直线检测法是一种常见的图像倾斜矫正方法,其基本思路是通过Hough变换检测车牌上的直线,然后根据检测到的直线的斜率来计算车牌的倾斜角度,最后对车牌进行旋转矫正。
使用直线检测法进行倾斜角度矫正的优点是算法简单易懂,适用于各种类型的车牌图像。
但是,由于车牌图像中存在干扰线条等因素,因此直线检测的准确性受到限制。
同时,该方法也存在计算量较大的问题。
2. 边缘检测法边缘检测法是一种常见的图像处理方法,在车牌图像倾斜矫正中也有广泛的应用。
该方法的基本思路是,通过边缘检测算法检测车牌图像的边缘,进而计算出车牌的倾斜角度。
最后对车牌进行旋转变换矫正。
与直线检测法相比,边缘检测法计算量较小,因此运行速度较快。
但是,由于车牌图像中存在噪点等因素,因此该方法的准确性也存在一定的局限。
3. 预处理法预处理法是一种非常有效的车牌图像倾斜矫正方法。
该方法的基本思路是,通过图像预处理算法对车牌图像进行处理,得到车牌上的字符或特征信息,进而计算出车牌的倾斜角度。
最后对车牌进行旋转矫正。
相比于直线检测法和边缘检测法,预处理法更加准确有效。
但是,该方法需要对车牌图像进行预处理,因此算法复杂度较高。
4. 模板匹配法模板匹配法是一种基于模板匹配的车牌图像倾斜矫正方法。
该方法的基本思路是,利用车牌模板进行匹配,找出车牌上的特征区域,进而计算出车牌的倾斜角度。
最后对车牌进行旋转矫正。
由于车牌模板具有良好的特征性,因此该方法对车牌图像的倾斜角度矫正具有很好的效果。
但是,由于模板匹配过程中需要对车牌模板进行匹配,因此算法复杂度较高。
同时,该方法也需要预先准备车牌模板,对通用性存在一定的限制。
结论以上介绍了几种常见的车牌图像倾斜角度矫正方法,每种算法都各有优缺点,应根据实际情况选择合适的算法。
常用的车牌识别算法包括以下几种:
1. 车牌定位算法:用于确定车辆图像中车牌的位置。
这种算法通常会使用图像处理技术,如梯度信息投影统计、小波变换、车牌区域扫描连线算法等,以识别图像中的车牌区域。
2. 字符分割算法:在车牌定位后,需要将车牌中的字符进行分割。
这种算法通常会使用图像处理技术和机器学习算法,如基于深度学习的字符分割算法,以准确地将各个字符分割开来。
3. 字符识别算法:用于识别分割后的字符。
这种算法通常会使用机器学习算法,如卷积神经网络(CNN)或循环神经网络(RNN),以对字符进行分类和识别。
4. 神经网络识别算法:大规模神经网络识别算法是一种深度学习算法,它能够同时处理车牌定位和字符识别两个任务,具有更高的准确性和鲁棒性。
5. 启发式车牌定位算法:综合利用了图像处理技术和机器学习算法,以提高车牌定位的准确性。
这种算法通常会使用一些特征选择方法,如SVM、HOG等,以将车牌区域和非车牌区域进行区分。
6. 角度偏差和光照波动控制算法:在车牌定位和字符识别过程中,车辆的角度偏差和光照波动会影响算法的准确性。
这种算法通常会使用一些图像处理技术,如滤波、归一化等,以减小这些因素的影响。
这些算法在车牌识别过程中相互配合,以实现准确的车牌识别。
车牌倾斜校正的方法
车牌要是倾斜了,可有点小麻烦呢。
咱得想办法把它校正过来呀。
有一种简单的办法是利用图像编辑软件。
如果是那种不是特别严重的倾斜,像在电脑上用Photoshop。
你打开有车牌图像的文件后,在菜单里找那个“自由变换”的功能,通常是快捷键Ctrl+T(Windows系统哦)。
这时候图片四周就会出现小方块,你就可以用鼠标拖动这些小方块来调整车牌的角度啦。
就像摆弄小玩具一样,把车牌摆到正正的位置。
不过这个得有点耐心,慢慢调整,可别一下子调过头咯。
还有呀,如果是想通过编程来校正车牌倾斜,那对于懂代码的小伙伴来说也不难。
比如说用Python语言和OpenCV库。
先把车牌图像读进去,然后通过一些算法来检测车牌的边缘。
检测到边缘之后呢,就可以根据边缘的角度来计算出车牌倾斜的角度啦。
再用旋转函数把车牌旋转到正确的角度。
这就像是给车牌做了一场精确的手术,让它“站”得笔直。
不过这对编程小白来说可能有点难,得花点时间去学习那些代码和算法呢。
要是不想这么复杂,还有一些专门的车牌识别软件本身就带有校正功能。
你只要把有倾斜车牌的图像或者视频导入到这个软件里,它就能自动把车牌校正过来,然后识别出车牌号码。
这就像是请了个小助手,它特别聪明,一下子就把问题解决了。
不管用哪种方法,校正车牌倾斜都是为了能更好地识别车牌,或者让车牌看起来更规范。
就像我们整理自己的仪容仪表一样,车牌也得整整齐齐的呢。
所以呀,要是遇到车牌倾斜的情况,别发愁,这么多办法总能找到适合你的那个小妙招。
汽车牌照图像倾角矫正方法研究首先我们对汽车牌照图像进行边缘检测,找出图像与背景的交线,然后就可以通过一定算法确定图像的倾斜角度了。
这里采用了Sobel水平方向算子对图像中的水平边缘直线进行检测[2]。
检测出图像中的直线后,我们要对其倾角进行计算,这里选用了Hough变换法、Radon变换法、最小二乘法和两点法四种方法来计算直线的倾角,下面将具体研究这四种方法并对其优缺点做出比较。
1 Hough变换法利用Hough变换法提取直线是一种变换域提取直线的方法,它把直线上的坐标变换到过点的直线的系数域,巧妙的利用了共线和直线相交的关系。
它的原理很简单:假设有一条与原点距离为s,方向角为θ的一条直线,如图3.1所示:图1 一条与原点距离为s,方向角为θ的直线直线上的每一点都满足方程:θs i nθ=(3.1)s+xc o s y证明过程如下:图2 坐标变换原理图如图3.2所示:θθc o s c o s x ob oc == (3.2) θθs i n s i n y nb nc == (3.3) 所以 :θθs i n c o s y x nc oc s +=+= (3.4) m 为直线l 上任意一点)1(,1x x md y y nd --=-= (3.5)因为:θθs i n )1(s i n y y nd df -== (3.6) θθc o s )1(c o s x x md df --== (3.7) 所以:θθθθc o s 1c o s s i n 1s i n x x y y +-=- (3.8) 所以:θθθθs i n 1c o s 1s i n c o s y x y x s +=+= (3.9)所以直线上任意一点都满足θθs i n c o s y x s += (3.10)图3 x-y 平面一点可以对应多个 s,θ值由图3.3可以看出点(x1,y1)即属于直线L1又属于直线L2,且满足:1sin 11cos 11θθy x s += (3.11) 2sin 12cos 12θθy x s += (3.12)所以,x-o-y 平面上的一点(x1,y1)对应于s-o-θ平面上的一条曲线。
车牌倾斜矫正实验报告一、实验目的本次实验旨在通过图像处理技术对倾斜的车牌进行矫正,以提高车牌识别的准确性和稳定性,进而提升交通管理和安全监控等领域的效率。
二、实验原理车牌倾斜矫正是基于图像处理技术,主要使用了以下步骤:1. 车牌检测:采用目标检测算法,例如Haar特征分类器或卷积神经网络(CNN),对车牌进行定位和识别。
2. 角度计算:通过对车牌边缘进行霍夫变换,计算车牌倾斜的角度。
3. 矫正变换:根据计算得到的角度,进行透视变换或仿射变换,将倾斜的车牌矫正为水平状态。
三、实验步骤1. 数据准备:收集包含倾斜车牌的图像数据集,数据集应包含多个角度的倾斜情况。
2. 车牌检测:使用已训练好的车牌检测模型对图像进行检测和定位,得到车牌区域的位置信息。
3. 角度计算:使用霍夫变换算法对车牌边缘进行检测,通过统计霍夫空间中的峰值,计算车牌的倾斜角度。
4. 矫正变换:根据计算得到的角度,进行透视变换或仿射变换,将倾斜的车牌矫正为水平状态。
5. 实验评估:对矫正后的车牌进行评估,包括正确率、稳定性和处理速度等指标。
四、实验结果经过多次实验与调优,得到如下实验结果:1. 车牌检测:成功检测出倾斜车牌区域,定位准确率达到90%以上。
2. 角度计算:通过霍夫变换计算得到的车牌倾斜角度与实际角度之间的误差小于0.5。
3. 矫正效果:经过透视变换或仿射变换后,倾斜车牌被成功矫正为水平状态,矫正后车牌清晰可见。
4. 实验评估:矫正后的车牌在正确率、稳定性和处理速度等指标上均有所提升,与未矫正状态相比有明显改善。
五、实验总结与展望本次实验通过图像处理技术对倾斜的车牌进行矫正,取得了较好的效果。
然而,仍存在一些问题需要进一步研究和改进:1. 复杂背景下的车牌检测:当车牌与复杂背景相似时,检测算法容易出现误判,需要对算法进行优化。
2. 矫正后车牌的清晰度:在一些特殊场景下,矫正后的车牌仍可能存在模糊或失真的情况,需要进一步改进变换算法。
车牌定位及倾斜校正方法姜谊,严京旗【摘要】提出了一种基于车牌字符信息的车牌定位及其校正方法。
首先使用灰度形态学的顶帽操作(top-hat)增强车牌区域,使其能在二值图中突出显示,然后根据二值图中车牌字符的连通元个数和排列位置来确定车牌的具体位置,最后对已定位的车牌进行方向校正,包括水平和垂直方向校正。
水平校正是根据这些字符连通元的中心确定车牌的水平倾斜角度,使用旋转几何变换使其水平方向得到校正,垂直校正则使用投影分析的方法求出水平校正后垂直方向的倾斜角度,再进行图像的像素平移。
实验结果表明,该方法能够在复杂背景下快速、准确定位到车牌,并且倾斜校正效果很好。
【期刊名称】微型电脑应用【年(卷),期】2010(026)004【总页数】3【关键词】车牌定位;倾斜校正;顶帽操作;连通元0 引言车牌定位和校正对车牌识别系统有着非常重要的作用,快速、准确的车牌定位及校正直接关系到整个系统的性能。
目前车牌定位的方法总的来说可以分为两大类,一类是基于灰度图像的车牌定位,另一类是基于彩色图像的车牌定位。
灰度图像数据量小,处理迅速简单,对于车牌的灰度图像处理的算法中,比较常用的算法有以下几种:(1)基于Hough变化法[1],利用车牌的矩形边框具有比较明显的直线边缘,通过边缘提取,再结合Hough变换检测出车牌边框直线来定位车牌,但是这种方法受车牌图像倾斜的影响较大,另外,还有很多车牌并没有明显的边框直线;(2)基于边缘和数学形态学的车牌定位算法[2,3],通过腐蚀和膨胀以及由其组合而成的开、闭运算,将目标区域显示出来;(3)基于统计学习的车牌检测方法 [4]。
在车牌校正方面,常用的方法有:(1)基于Hough变换算法,寻找车牌边框直线确定车牌水平倾斜角度[5];(2)使用投影法[6],该方法计算量较大,且对于本文所处理车牌图像不是很适用。
本文基于车牌的字符信息提出了一种准确、快速的车牌定位及其校正的方法。
除了水平校正外,还要对这种具有两排字符的车牌,做针对性的垂直校正。
车牌倾斜校正研究综述摘要:作为智能交通系统的核心技术之一,基于机器视觉的车牌识别一直受到广泛的关注。
对车牌图像进行倾斜校正是车牌识别的重要步骤,其目的是解决拍摄角度随机性对识别过程的影响。
该文将现有倾斜校正方法划分为直线检测、投影最值、角点检测、主方向分析四类,首先介绍了它们的研究成果,然后剖析了它们在鲁棒性方面存在不足的原因,展望了下一步的研究方向。
关键词:智能交通车牌识别倾斜校正Abstract:License plate recognition based on machine vision,one of the key technologies of intelligent transportation system,has been paid much attention to. Tilt correction for license plate image plays an important role in license plate recognition and its aim is to weaken the influence of capture angle randomness to recognition process. In this paper,tilt correction methods are divided into four types:line detection,projection maximum or minimum,corner detection and principal orientation analysis. After introducing research achievements of these methods,we analyze the causes of shortages related their robustness and look into the development trends of tilt correction.Key words:Intelligent transportation system license plate recognition tilt correction基于机器视觉的车牌识别是智能交通系统的核心技术之一,可广泛应用于高速公路自助缴费、城市交通监控、违章或犯罪监控以及智能停车场管理等方面,它主要包括图像获取、车牌定位、倾斜校正、字符分隔、字符识别五个部分。
沈算子在倾斜车牌校正中的应用摘要:提出了一种新的车牌倾斜校正方法,该方法首先根据沈算子检测出车牌边缘,然后将车牌区域平均划分为左右两个部分,分别计算这两个区域的重心,连接两个部分的重心,最后,计算出重心与水平方向的夹角,并按此夹角进行旋转。
实验证明,这种方法简单、实用,对光照、污迹等不敏感,抗干扰能力强。
关键词:沈算子;车牌边缘;边缘检测;倾斜校正;车牌重心0引言目前,智能交通系统已广泛应用于交叉路口监控、停车场监控以及高速公路收费等场合。
随着交通信息化越来越发达,交通智能化的研究理所当然成为研究热点之一。
车牌识别是计算机视觉与模式识别技术在智能交通领域应用中的一个重要研究课题,一个完整的车牌识别系统主要分为车牌定位、倾斜车牌校正、车牌识别几个步骤。
其中车牌图像往往会受到采集镜头与车牌之间的距离、道路坡度、汽车驾驶速度、天气、光照以及司机所挂车牌位置的影响等,我们所采集到的车牌图像往往会有一定程度的倾斜,给车牌字符分割和识别造成影响,车牌的倾斜校正是车牌图像识别至关重要的一步。
本文采用沈算子提取车牌边缘,然后根据图像重心计算出车牌倾斜角度。
实验表明,该算法具有运算速度快、抗噪效果好等特点。
1边缘检测1.1预处理由于相机成像的非均匀性,以及环境噪声影响,采集到的图像往往并不理想,在对图像进行其他操作以前,一般需要对图像进行预处理,例如使用A/D转换器将模拟信号转化成计算机可以处理的数字信号等。
图像在计算机中以二维矩阵的形式存储,以图像中每个点的灰度值或灰度级作为图像矩阵的元素。
彩色图像处理起来,算法比较复杂,在这里我们先把彩色图像(RGB)转换成灰度图像(Gray)。
1.2沈算子边缘检测本文选用二阶微分算子,即沈俊算子,通过寻找过零点,以完成边缘提取。
相比其他二阶微分算子,如Laplacian算子,沈俊算子实现简单,它只需要一个参数a0,而且具有很好的抗噪能力。
车牌边缘含有大量的视觉信息,我们要把车牌的边缘检测出来,为接下来的工作做好准备。
汽车牌照图像倾角矫正方法研究首先我们对汽车牌照图像进行边缘检测,找出图像与背景的交线,然后就可以通过一定算法确定图像的倾斜角度了。
这里采用了Sobel水平方向算子对图像中的水平边缘直线进行检测[2]。
检测出图像中的直线后,我们要对其倾角进行计算,这里选用了Hough变换法、Radon变换法、最小二乘法和两点法四种方法来计算直线的倾角,下面将具体研究这四种方法并对其优缺点做出比较。
1 Hough变换法利用Hough变换法提取直线是一种变换域提取直线的方法,它把直线上的坐标变换到过点的直线的系数域,巧妙的利用了共线和直线相交的关系。
它的原理很简单:假设有一条与原点距离为s,方向角为θ的一条直线,如图3.1所示:图1 一条与原点距离为s,方向角为θ的直线直线上的每一点都满足方程:θsinθ=(3.1)s+xcos y证明过程如下:图2 坐标变换原理图如图3.2所示:θcosθ=(3.2)oc=obcos xθsinθ=(3.3)nc=nbsin y所以:θθsin=s++=(3.4)cos yxncocm为直线l上任意一点nd--y-=(3.5)=()1y,1xxmd因为:θsinθdf-==(3.6)ndy)1(sin yθcosθ-==(3.7)df-md(cos xx)1所以:θθcosθθyy+x=--(3.8)sin x1cossin1所以:θsinθθθxs+==(3.9)+ycos y1cos1sinx所以直线上任意一点都满足θθsin=(3.10)s+cos yx图3 x-y 平面一点可以对应多个 s,θ值由图3.3可以看出点(x1,y1)即属于直线L1又属于直线L2,且满足:1sin 11cos 11θθy x s += (3.11) 2sin 12cos 12θθy x s += (3.12)所以,x-o-y 平面上的一点(x1,y1)对应于s-o-θ平面上的一条曲线。
由于一条直线上的点都满足θθsin cos y x s +=,所以x-o-y 平面上处在一条直线上的点经过变换在S-O-θ平面上所得的曲线相交于一点。
如下图所示:图4 Hough 变换前后对比图因此可以把x-o-y 平面内直线的问题转化为S-O-θ平面内点的问题[3]。
用Hough 变换检测汽车牌照图像中直线的具体步骤为:(1)对图像进行边缘检测,这里选用了Sobel算子检测图像中水平方向的直线。
图5 网格图(2)假设图像对应于x-o-y空间,定义一个S-o-θ(θ角的范围为1-180)空间,对图像中象素为1的每一个点进行计算(应用公式(3.10)),做出每一个象素为1的点的曲线,同时把S-θ平面分成等间隔(1×1)的小网格,这个小网格对应一个记数矩阵。
如图3.5所示,凡是曲线所经过的网格,对应的记数矩阵元素值加1,所以对原图像中的每一点进行计算以后记数矩阵元素的值等于共线的点数。
我们可以认为记数矩阵中元素的最大值对应原始图像中最长的直线。
(3)检测出记数矩阵的最大的元素所对应的列坐标θ,θ即为这条直线的法线与X 轴的夹角。
因此我们可以通过θ角来确定直线的倾斜角度,进而对图像进行矫正。
图6 倾角矫正前图像Hough变换法矫正图像程序实现如下:bw=edge(l,'sobel','horizontal');%检测图像边缘直线[m,n]=size(bw);%计算图像大小S=round(sqrt(m^2+n^2));%S可以取到的最大值ma=180;%θ角最大值r=zeros(md,ma);%产生初值为零的计数矩阵for i=1:mfor j=1:nif bw(i,j)==1for k=1:maru=round(abs(i*cos(k*3.14/180)+j*sin(k*3.14/180)));r(ru+1,k)=r(ru+1,k)+1;%对矩阵记数endendendend[m,n]=size(r);for i=1:mfor j=1:nif r(i,j)>r(1,1)r(1,1)=r(i,j);c=j;%把矩阵元素最大值所对应的列坐标送给c。
endendendif c<=90rot=-c; %确定旋转角度elserot=180-c;endpic=imrotate(l,rot,'crop'); %对图片进行旋转,矫正图像下面给出了Hough变换法对倾斜图像进行矫正后的图像:图7 Hough 变换法对图3.6矫正后图像2 Radon 变换法我们知道,一条直线沿它的法线方向投影所得的投影最长,而沿与其平行方向投影则所得的投影最短。
Radon 变换理论就是这样一种投影理论。
用这种方法可以检测图像中的直线。
Radon 变换的定义:二元函数f(x,y)的投影是在某一方向上的线积分,例如f(x,y)在垂直方向上的线积分是f(x,y)在x 方向上的投影,在水平方向上的线积分是在y 方向上的投影,沿y'方向的线积分是沿x'方向上的投影。
投影可沿任意角度进行,通常f(x,y)的Radon 变换是f(x,y)平行于y ’轴的线积分,格式如下:⎰+∞∞-+-=')cos 'sin ',sin 'cos '()'(dy y x y x f x R θθθθθ (3.13)其中⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡y x y x θθθθcos sin sin cos '' (3.14)图8 矩形函数在水平垂直方向和沿θ角方向的投影Radon 变换与计算机视觉中的Hough变换很相似,我们可以利用Radon变换来检测图像中的直线的倾斜角度[4]。
利用Radon变换检测直线倾斜角度的具体步骤为:(1)用edge函数计算图像的边缘二值图像,检测出原始图像中的直线。
图9 边缘图(2)计算边缘图像的Radon变换,对每一个象素为1的点进行运算(0-179度方向上分别做投影)其命令格式如下:theta=0:179;[r,xp]=radon(bw1,theta);%计算边缘图像的Radon变换figure,image(theta,xp,r);%显示变换效果图(3)检测出Radon变换矩阵中的峰值,这些峰值对应原始图像中的直线(上图中的四个亮点对应图3.9中的四条直线)。
Radon变换矩阵中的这些峰值的列坐标θ就是与原始图像中的直线垂直的直线的倾斜角度,所以图像中直线的倾角为90-θ。
图像倾角矫正具体程序实现如下:bw1=edge(l1,'sobel', 'horizontal');%用Sobel水平算子对图像边缘化bw1=imcrop(bw1,[0 0 500 100]);%对图像进行剪切,保留图像中的一条直线,减小运算量theta=0:179;%定义theta角度范围r=radon(bw1,theta);%对图像进行Radon变换[m,n]=size(r);c=1;for i=1:mfor j=1:nif r(1,1)<r(i,j)r(1,1)=r(i,j);c=j;endendend %检测Radon变换矩阵中的峰值所对应的列坐标rot=90-c;%确定旋转角度pic=imrotate(l1,rot,'crop');%对图像进行旋转矫正图10 矫正后所得图像3 线性回归法如果我们有一系列相互独立的点,其近似分布在一条直线附近,我们就可以通过一元线性回归法拟合这条直线。
图11 最小二乘原理图这条直线的一元线性回归模型为:εββ++=x y 10∞<=2D σε0=E ε (3.15)设上图中点的坐标分别是(x 1,y 1) , (x 2,y 2) , …… , (x n ,y n ) 。
用最小二乘算法来估计0β和1β。
则有:i i i x y εββ++=10 I = 1 , 2 , 3 , … ,n0=E i ε ,2D σε=i (3.16)用最小二乘算法来计算,找到准则函数,记为2110121,0)()(i ni ini ix yQ Q ∑∑==--===ββεββ (3.17)求Q 的最小值:0)(221100=---=∂∂∑=i ni i x y Qβββ (3.18)0)(221101=---=∂∂∑=i n i i i x y x Qβββ (3.19)由上式可得:xx xyL L =1β (3.20)xy 10ββ-= (3.21)其中:∑∑==-=-=ni i ni i xx x n x x x L 12221)( (3.22)∑∑==-=--=ni i i i n i i xy yx n y x y y x x L 11)()( (3.23)估计出了直线的斜率和截距,我们就可以估计出这条直线的方程了[5]。
将汽车牌照图像进行二值化,就可以得到其与背景的明显的交线,对于汽车牌照图像二值化的阈值完全可以取的高一点。
执行bw=im2bw(pic,0.3)我们可以得到下面的图像:图12 二值化后的汽车牌照图像从上图可以看出如果我们能够检测到图像上边缘的一系列的边界点,我们就可以通过最小二乘法拟合这条边界直线,从而确定图像的倾角。
具体方法如下:(1)找出边界直线上的点(每列第一次由黑变白的点,且这一列的下两点还是白的话就可以判为边界点[6]),将其行坐标存入数组a 即,列坐标存入数组b 。
(2)通过最小二乘法拟和这条边界直线,计算出其斜率L 。
(3)通过rot=atan (L ),计算直线的倾斜角度,然后对其矫正。
最小二乘法程序实现如下: [m,n]=size(l); bw=im2bw(l,0.3); %将图像二值化 t=1;s=1;for j=144:1: n-144 for i=1:fix(m/4)if bw(i,j)==0&bw(i+1,j)==1&bw(i+2,j)==1&bw(i+3,j)==1%检测边缘点c(t)=i;%边缘横坐标存入数组Cb1(s)=j;边缘纵坐标存入数组b1break;endendt=t+1;s=s+1;endx=0;y=0;x1=0;for i=1:length(c)x=x+c(i);x1=x1+c(i)^2;endfor i=1:length(b1)y=y+b1(i);endy=y/length(b1);x=x/length(c);c1=x;x=length(c)*x*x;lxy=x1-x;lxx=0;for i=1:length(b1)lxx=lxx+(c(i)-c1)*(b1(i)-y);endr=lxy/lxx;%以上为计算直线参数rot=atan(r);%取余切theta=rot*180/3.142;%将弧度转换为角度pic=imrotate(l,theta,'crop');图13 用最小二乘法对图6矫正后图像4 两点法这种方法理论上非常简单,就是:如果我们知道直线上不同两点的坐标,我们就可以求得到这条直线的斜率,进而确定直线倾角。