本發(fā)明屬于角度檢測領(lǐng)域,具體是一種基于三角形相似定理的角度檢測算法。
背景技術(shù):
在如今的生活當(dāng)中,身份證、名片等證件經(jīng)常進(jìn)行復(fù)印、傳真等方面的使用,因?yàn)槿藶椴僮鞯脑?,被掃描出來的圖像很多都會出現(xiàn)傾斜的現(xiàn)象,這些傾斜將會對名片等的版面分析、字符識別以及復(fù)印使用都會造成不良影響,因此需要對出現(xiàn)傾斜的圖像進(jìn)行傾斜角度檢測,而后根據(jù)傾斜角度進(jìn)行圖像校正。
在實(shí)際應(yīng)用當(dāng)中,現(xiàn)有的各類圖像傾斜角度檢測技術(shù)大多是先對輸入圖像進(jìn)行濾波、二值化等操作,得到一幅二值化圖像,將圖像的邊緣清晰的反映出來,然后通過hough算子、sobel算子、最小二乘法等算法分析圖像的邊緣曲線,最終得到圖像傾斜角度。上述方法的檢測精度高,然而會導(dǎo)致模塊總體的計(jì)算量偏大,增加了模塊對內(nèi)存的占用。
中國專利cn201210483489.3?!兑环N基于圖像處理的工件角度自動測量裝置及測量方法》公開了一種圖像處理方法,通過直方圖均衡化算法對圖像進(jìn)行增強(qiáng),使用susan角點(diǎn)檢測算法或者h(yuǎn)arris角點(diǎn)檢測算法檢測圖像角點(diǎn)(角點(diǎn):夾角的頂點(diǎn))計(jì)算圖像的角點(diǎn),提取邊緣檢測后角點(diǎn)周圍的局部圖像,提取形成夾角的兩條直線上的點(diǎn),對兩條直線上的點(diǎn)進(jìn)行擬合,得到兩條直線的斜率,進(jìn)而計(jì)算兩條直線的夾角。
中國專利cn200810246629.9《名片圖像傾斜角度的測量方法和裝置》提出了一種傾斜角度檢測的方法,通過名片圖像邊框直線的傾斜程度判斷圖像是否存在傾斜,而后對存在傾斜的圖片判斷其文字的編輯方向,并沿文字傾斜方向進(jìn)行投影,利用投影特征計(jì)算圖像的傾斜角度。
以上兩種方法,雖然檢測的精度高,但是其計(jì)算量大,占用內(nèi)存高,對于運(yùn)行平臺的配置有一定的要求,而對于某些配置較低的運(yùn)行平臺而言,以上方法無法完全適用。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)中存在的上述技術(shù)問題,本發(fā)明提供了一種基于相似三角形的角度檢測算法,包括如下步驟:
步驟一,圖像二值化:將圖像劃分為多個(gè)塊,每個(gè)塊內(nèi)包含n*n個(gè)像素點(diǎn),對塊內(nèi)的像素點(diǎn)進(jìn)行處理,最終得到二值化圖像,提取圖像邊緣;
步驟二,對生成的二值化圖像進(jìn)行膨脹操作,突出邊緣曲線;
步驟三,將二值化圖像由上向下以及由下向上進(jìn)行投影,分別得到圖像的上下邊緣曲線,并分別得到上下邊緣曲線第一個(gè)有效行的有效點(diǎn)起始地址及終止地址;
步驟四,將上下邊緣曲線組合成完整的矩形邊緣曲線進(jìn)行處理,分別在圖像上下邊緣曲線起始地址左側(cè)選擇一段橫坐標(biāo)相同的線段;對于以兩段選定線段為斜邊的三角形利用相似三角形定理進(jìn)行判斷,判斷兩段曲線的夾角是否為直角,以及所選擇的兩段曲線是否位于圖像邊緣曲線上的有效曲線;
步驟五,選擇一段符合要求的線段,利用快速倒數(shù)平方根算法以及勾股定理,計(jì)算斜邊的倒數(shù),進(jìn)而得到傾斜角度的正弦值和余弦值。
進(jìn)一步的,所述步驟一中,對每個(gè)塊內(nèi)像素點(diǎn)的變化劇烈程度進(jìn)行計(jì)算,可判斷該塊是否位于圖像邊緣,并進(jìn)行二值化處理。
進(jìn)一步的,所述步驟三中,在計(jì)算得到的圖像有效范圍內(nèi),對圖像從上下兩個(gè)方向進(jìn)行投影,分別得到圖像的上下邊緣曲線,得到上邊緣曲線第一個(gè)有效行的第一個(gè)有效點(diǎn)坐標(biāo)point_l1以及最后一個(gè)有效點(diǎn)坐標(biāo)point_r1,以及下邊緣曲線第一個(gè)有效行的第一個(gè)有效點(diǎn)坐標(biāo)point_l2以及最后一個(gè)有效點(diǎn)坐標(biāo)point_r2。
進(jìn)一步的,所述步驟三中,若是得到的point_l1或point_l2任意一個(gè)小于閾值參數(shù),則判定該圖像不存在傾斜,否則該圖像傾斜。
進(jìn)一步的,所述步驟四中,將分別得到的圖像上下邊緣曲線合成一幅完整的矩形圖像邊緣曲線,在上下邊緣曲線point_l1/point_l2左側(cè)共同范圍內(nèi),選擇起始點(diǎn)坐標(biāo)以及終止點(diǎn)坐標(biāo)相同的兩段曲線,利用三角形相似定理,判斷兩曲線夾角是否為直角,同時(shí)可以判斷所選擇的四點(diǎn)是否位于圖像邊緣曲線上。
進(jìn)一步的,步驟一中,在處理塊內(nèi)像素點(diǎn)的時(shí)候,圖像右側(cè)及底部不足n*n個(gè)像素點(diǎn)的塊不做任何處理。
進(jìn)一步的,若是以選擇的兩段曲線為斜邊的兩個(gè)三角形相似,判斷其夾角為直角,以及選定的兩段曲線是位于圖像邊緣上的有效曲線。
進(jìn)一步的,由于檢測對象是矩形名片,圖像四個(gè)角皆為90度,因此若兩段曲線的夾角為直角,則說明兩段曲線的起始點(diǎn)及終止點(diǎn)位于矩形圖像的邊緣上,使用這兩段曲線計(jì)算名片的傾斜角度;若兩段曲線的夾角不為直角,則說明選擇的兩段曲線的起始點(diǎn)以及終止點(diǎn)至少有一點(diǎn)不在矩形圖像的邊緣上,即該點(diǎn)為雜點(diǎn),需要另外選擇兩段曲線進(jìn)行判斷。
本發(fā)明的基于三角形相似定理的角度檢測算法適合于對精度要求不高且內(nèi)存較小的角度檢測系統(tǒng)。本發(fā)明只需要輸入單通道的圖像數(shù)據(jù),不需要將彩色圖像轉(zhuǎn)化為灰度圖像;對于圖像的二值化、膨脹、生成邊緣曲線可以同步進(jìn)行,不需要大空間來存儲圖像處理過程中的中間數(shù)據(jù);在保證精度的前提下,簡化了圖像的處理過程,提高了角度檢測的效率,節(jié)約了系統(tǒng)空間。
附圖說明
圖1是原始圖像示意圖;
圖2是圖像分割示意圖;
圖3是圖像膨脹示意圖;
圖4是邊緣掃描示意圖;
圖5是曲線分析示意圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步說明。
本發(fā)明以名片掃描圖像為例。本首先對輸入的圖像進(jìn)行二值化處理,通過投影的方法得到圖像的上下邊緣曲線,在上下邊緣曲線各自選擇一段對應(yīng)的曲線,判斷選擇的兩段曲線是否位于矩形圖像的邊緣曲線上,而后再選擇一段曲線計(jì)算名片的傾斜角度。
如圖1所示,系統(tǒng)接收一幅掃描得到的名片圖像,只需要其灰度圖像或者彩色圖像的單通道數(shù)據(jù),即可檢測得到其傾斜角度θ的正弦值與余弦值。
如圖2所示,將整幅圖像劃分為若干個(gè)塊(patch),每個(gè)塊(patch)內(nèi)包含n*n個(gè)像素點(diǎn),對圖像右側(cè)及底部不足n*n個(gè)像素點(diǎn)的patch,不做任何處理;對于符合要求的patch,首先計(jì)算其n*n個(gè)像素點(diǎn)的平均值,而后計(jì)算像素平均值和塊(patch)內(nèi)各像素點(diǎn)的差的絕對值,對絕對值求和取差值平均值,差值平均值與輸入的閾值參數(shù)進(jìn)行比較,若大于閾值,則該patch內(nèi)像素點(diǎn)大小變化較大,可能位于圖像邊緣,該塊(patch)為有效點(diǎn),將該patch記為1,否則為無效點(diǎn),記為0。最終得到一幅如圖3所示的二值化圖像。
如圖3所示,對得到的二值化圖像進(jìn)行膨脹處理,生成一幅新塊(patch)圖,新塊(patch)圖中各patch值預(yù)設(shè)為0,若是選中的m*m大小窗口內(nèi)的塊(patch)值的和大于閾值參數(shù),則進(jìn)行膨脹,將新塊(patch)圖內(nèi)對應(yīng)窗口內(nèi)的塊(patch)值全部記為1,否則保持新塊(patch)圖內(nèi)原塊(patch)值不變。將膨脹的選擇窗口向右平移一個(gè)單位,選擇下一個(gè)區(qū)域進(jìn)行膨脹操作;若該行膨脹完畢,則從下一行行首開始進(jìn)行膨脹操作。最終生成一幅膨脹后的二值化圖像,突出圖像曲線邊緣。對完成膨脹的patch值進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)每行/列的有效點(diǎn)的個(gè)數(shù),若是結(jié)果大于閾值參數(shù),則該行/列為有效行/列,由此可以確定圖像的有效區(qū)域。
如圖4所示,對膨脹后的二值化圖像從上下兩個(gè)方向進(jìn)行投影掃描,記錄每一列的第一個(gè)有效點(diǎn)以及最后一個(gè)有效點(diǎn),最終得到如圖4右側(cè)圖像所示的矩形圖像上邊緣曲線和下邊緣曲線。根據(jù)確定的圖像有效區(qū)域,記錄第一個(gè)有效行的第一個(gè)有效點(diǎn)point_l1以及最后一個(gè)有效點(diǎn)point_r1,以及最后一個(gè)有效行的第一個(gè)有效點(diǎn)point_l2以及最后一個(gè)有效點(diǎn)point_r2。若point_l1及point_l2都大于閾值參數(shù),則該圖像傾斜,否則判定該圖像不存在傾斜。
如圖5所示,圖像的上下邊緣曲線可組成整幅名片圖像的邊緣曲線,在point_l1和point_l2左側(cè)各自選擇一段地址相同的曲線,其寬度為預(yù)設(shè)的參數(shù)off_dis,計(jì)算上邊緣曲線選定曲線的高度差h1,以及下邊緣曲線選定曲線的高度差h2,利用三角形相似定理,計(jì)算|h1*h2–off_dis*off_dis|的絕對值,和閾值參數(shù)進(jìn)行比較,若結(jié)果小于閾值參數(shù),則判定兩段曲線對應(yīng)的三角形相似,兩段曲線所形成的夾角為直角,由于矩形圖像的四個(gè)角皆為直角,因此當(dāng)兩段選定曲線的夾角為直角的時(shí)候,說明選定兩段曲線都位于矩形圖像邊緣上的有效曲線,可用于計(jì)算圖像的傾斜夾角,否則選定的點(diǎn)為位于圖像邊緣曲線之外的雜點(diǎn),需要重新選定兩段曲線進(jìn)行判斷。
根據(jù)選定的一條有效曲線,利用快速倒數(shù)平方根算法以及勾股定理,計(jì)算斜邊的倒數(shù),進(jìn)而得到傾斜角度的正弦值和余弦值。