一種基于Radon變換的車牌傾斜角度矯正方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,特別涉及一種基于Radon變換的車牌傾斜角度矯 正方法。
【背景技術(shù)】
[0002] 最近十多年,隨著平安城市項(xiàng)目的推廣,國(guó)內(nèi)各級(jí)城市在路面街道安裝了大量監(jiān) 控?cái)z像機(jī),協(xié)助公安辦案破案。同時(shí),隨著機(jī)動(dòng)車的大量普及,涉案機(jī)動(dòng)車信息也成為了案 件的重要線索。
[0003] 通過(guò)已建的天網(wǎng)攝像機(jī),對(duì)路面的機(jī)動(dòng)車進(jìn)行自動(dòng)化檢測(cè)識(shí)別,能夠?yàn)楣矌?lái) 極大的便利,提供豐富的數(shù)據(jù)來(lái)源。
[0004] 但是,路面的攝像機(jī),安裝位置大都在路邊,對(duì)機(jī)動(dòng)車的拍攝存在一個(gè)角度,就會(huì) 造成照片中機(jī)動(dòng)車的號(hào)牌出現(xiàn)一個(gè)傾斜。在自動(dòng)化識(shí)別時(shí),軟件就需要對(duì)該傾斜的號(hào)牌進(jìn) 行矯正。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的在于提供一種在自動(dòng)化識(shí)別時(shí),軟件就需要對(duì)該傾斜的號(hào)牌進(jìn)行矯 正的方法。
[0006] 本發(fā)明為解決上述技術(shù)問(wèn)題,提供以下技術(shù)方案:
[0007] -種基于Radon變換的車牌傾斜角度矯正方法,其特征在于,包括以下步驟:
[0008] 步驟1、用edge函數(shù)計(jì)算圖像的邊緣二值圖像,檢測(cè)出原始圖像中的直線;
[0009] 步驟2、計(jì)算邊緣圖像的Radon變換,對(duì)每一個(gè)象素為1的點(diǎn)進(jìn)行0-179度方向上 分別做投影,計(jì)算邊緣圖像的Radon變換,顯示變換效果圖;
[0010] 步驟3、檢測(cè)出Radon變換矩陣中的峰值,這些峰值對(duì)應(yīng)原始圖像中的直線,Radon 變換矩陣中的這些峰值的列坐標(biāo)Θ就是與原始圖像中的直線垂直的直線的傾斜角度,直 線的傾角為90-Θ。
[0011] Radon變換包括以下步驟:
[0012] 二元函數(shù)f(X,y)的投影是在某一方向上的線積分,f(X,y)在垂直方向上的線積 分是f(x,y)在X方向上的投影,在水平方向上的線積分是在y方向上的投影,沿y'方向的 線積分是沿X'方向上的投影,投影沿任意角度進(jìn)行,通常f(x,y)的Radon變換是f(x,y) 平行于y'軸的線積分,格式如下:
[0015] 綜上所述,由于采用了上述技術(shù)方案,本發(fā)明的有益效果是:
[0013]
[0014]
[0016] 本系統(tǒng)基于Radon變換理,對(duì)號(hào)牌圖像進(jìn)行傾斜矯正,提高號(hào)牌識(shí)別準(zhǔn)確率。
【附圖說(shuō)明】
[0017] 本發(fā)明將通過(guò)例子并參照附圖的方式說(shuō)明,其中:
[0018] 圖1是邊緣圖;
[0019] 圖2是矯正后所得圖像;
[0020] 圖3是矩形函數(shù)在水平垂直方向和沿Θ角方向的投影。
【具體實(shí)施方式】
[0021] 本說(shuō)明書(shū)中公開(kāi)的所有特征,或公開(kāi)的所有方法或過(guò)程中的步驟,除了互相排斥 的特征和/或步驟以外,均可以以任何方式組合。
[0022] -條直線沿它的法線方向投影所得的投影最長(zhǎng),而沿與其平行方向投影則所得的 投影最短。Radon變換理論就是這樣一種投影理論。用這種方法可以檢測(cè)圖像中的直線。
[0023]Radon變換的定義:二元函數(shù)f(x,y)的投影是在某一方向上的線積分,例如 f(x,y)在垂直方向上的線積分是f(x,y)在X方向上的投影,在水平方向上的線積分是在 y方向上的投影,沿y'方向的線積分是沿X'方向上的投影。投影可沿任意角度進(jìn)行,通常 f(X,y)的Radon變換是f(X,y)平行于y'軸的線積分,格式如下:
[0024]
[0025]
[0026] Radon變換與計(jì)算機(jī)視覺(jué)中的Hough變換很相似,我們可以利用Radon變換來(lái)檢測(cè) 圖像中的直線的傾斜角度。利用Radon變換檢測(cè)直線傾斜角度的具體步驟為:
[0027] (1)用edge函數(shù)計(jì)算圖像的邊緣二值圖像,檢測(cè)出原始圖像中的直線。
[0028] (2)計(jì)算邊緣圖像的Radon變換,對(duì)每一個(gè)象素為1的點(diǎn)進(jìn)行運(yùn)算(0-179度方向 上分別做投影)其命令格式如下:
[0029] theta= 0:179 ;
[0030] [r,xp] =radon(bwl,theta);%計(jì)算邊緣圖像的Radon變換
[0031]figure,image(theta,xp,r) 顯示變換效果圖
[0032] (3)檢測(cè)出Radon變換矩陣中的峰值,這些峰值對(duì)應(yīng)原始圖像中的直線。Radon變 換變換矩陣中的這些峰值的列坐標(biāo)Θ就是與原始圖像中的直線垂直的直線的傾斜角度, 所以圖像中直線的傾角為90- Θ。
[0033] 圖像傾角矯正具體程序?qū)崿F(xiàn)如下:
[0034]
[0035] 首先事件是指從客戶端頁(yè)面(瀏覽器)由用戶操作觸發(fā)的事件,Struts使用 Action來(lái)接受瀏覽器表單提交的事件,這里使用了Command模式,每個(gè)繼承Action的子類 都必須實(shí)現(xiàn)一個(gè)方法execute。
[0036]struts重要的表單對(duì)象ActionForm是一種對(duì)象,它代表了一種應(yīng)用,這個(gè)對(duì)象中 至少包含幾個(gè)字段,這些字段是Jsp頁(yè)面表單中的input字段,因?yàn)橐粋€(gè)表單對(duì)應(yīng)一個(gè)事 件,所以,當(dāng)我們需要將事件粒度細(xì)化到表單中這些字段時(shí),也就是說(shuō),一個(gè)字段對(duì)應(yīng)一個(gè) 事件時(shí),單純使用Struts就不太可能,當(dāng)然通過(guò)結(jié)合JavaScript也是可以轉(zhuǎn)彎實(shí)現(xiàn)的。
[0037]Struts是一個(gè)基于SunJ2EE平臺(tái)的MVC框架,主要是采用Servlet和JSP技術(shù)來(lái) 實(shí)現(xiàn)的。Struts把Servlet、JSP、自定義標(biāo)簽和信息資源(messageresources)整合到一 個(gè)統(tǒng)一的框架中,開(kāi)發(fā)人員利用其進(jìn)行開(kāi)發(fā)時(shí)不用再自己編碼實(shí)現(xiàn)全套MVC模式,極大的 節(jié)省了時(shí)間,所以說(shuō)Struts是一個(gè)非常不錯(cuò)的應(yīng)用框架。
[0038] 使用說(shuō)明
[0039] 流程說(shuō)明
[0040] 1.調(diào)用LPR_SetImageFormat設(shè)置識(shí)別圖像格式。此函數(shù)在調(diào)用LPR_InitEx之前 進(jìn)行設(shè)置。
[0041] 2.調(diào)用LPR_InitEx初始化核心庫(kù)。
[0042] 3.調(diào)用LPR_SetPlateType設(shè)置識(shí)別的車牌類型。此函數(shù)在調(diào)用LPR_InitEx之后 調(diào)用LPR_FileEx之前調(diào)用。
[0043] 4.調(diào)用LPR_SetSpecialParameters設(shè)置夜間模式、識(shí)別閾值、省份默認(rèn)值、單張 圖片識(shí)別的車牌個(gè)數(shù)。此函數(shù)在調(diào)用LPR_InitEx之后,調(diào)用LPR_FileEx之前調(diào)用。
[0044] 5.調(diào)用LPR_FileEx識(shí)別圖片。這個(gè)函數(shù)在識(shí)別圖片時(shí)可循環(huán)調(diào)用。
[0045] 6.程序退出時(shí)調(diào)用LPRJJninitEx卸載核心庫(kù)。
[0046] 接口函數(shù)說(shuō)明
[0047] LPR_SetImageFormat設(shè)置圖像格式
[0048] BOOLWINAPILPR_SetImageFormat(
[0049] BOOLbMovinglmage,BOOLbFlipVertical,intnColorOrder,
[0050] BOOLbVertCompress,intnMinPlateffidth,intnMaxPlateffidth,
[0051] BOOLbDwordAligned,BOOLblnputHalfHeightImage,
[0052] BOOLbOutputSingleFrame,intnChannel= 1);
[0053] bMovinglmage[in]:識(shí)別運(yùn)動(dòng)或靜止圖像;
[0054] bFlipVertical[in]:是否上下顛倒圖像后識(shí)別;
[0055] nColorOrder[in]:圖像格式;
[0056] bVertCompress[in]:是否垂直方向壓縮一倍識(shí)別;
[0057] nMinPlateWidth[in]:最小車牌寬度,以像素為單位;
[0058] nMaxPlateWidth[in]:最大車牌寬度,以像素為單位;
[0059] bDwordAligned[in]:是否四字節(jié)對(duì)齊;
[0060] blnputHalfHeightlmage[in]:是否輸入場(chǎng)圖像;
[0061] bOutputSingleFrame[in]:是否只輸出一個(gè)識(shí)別結(jié)果;
[0062] nChannel[in]:通道號(hào)。
[0063] 此函數(shù)在調(diào)用LPR_InitEx之前進(jìn)行設(shè)置,函數(shù)調(diào)用成功返回TRUE,否則返回 FALSE。LPR_SetPlateType