專利名稱:二維碼圖像的二值化方法
技術領域:
本發明涉及圖像轉化技術領域,尤其涉及一種二維碼圖像的二值化方法。
背景技術:
二維碼的識讀過程為:通過二維碼識讀設備中的圖像感應器抓取二維碼圖像,這里所述抓取的圖像,一般為8位灰度圖像。識讀設備抓取完灰度圖像后,二維碼識讀算法需要將8位灰度圖像逐像素的轉化為黑、白二值化圖,然后根據相應的二維碼碼制獲得二維碼二進制碼流,例如“黑”代表I,“白”代表O ;或者“黑”代表0,“白”代表I。之后,再依據二維碼編碼規則和糾錯算法對二維碼進行譯碼,完成二維碼的識讀。但是,由于二維碼依附的介質不同,所處的光照環境不同,以及成像系統的其它因素,會導致通過二維碼識讀設備抓取到的二維碼灰度圖像千差萬別,從而使得灰度圖像轉化為二值化圖像變得很復雜,而二值化過程的效果優劣又直接關乎二維碼的識讀效果。為了消除光照環境對二值化過程的影響,目前的二維碼圖像的二值化方法是:采用分塊區域法,而后逐塊使用大津(OTSU)算法計算閾值,并對得到的塊閾值進行平滑處理,以消除塊效應,最后對每個像素和相應的塊閾值作比較進而得到二值化圖像。這里,每個像素都對應灰度圖像中的某一塊或者說某一區域,這個塊或者區域都對應一個閾值,例如8位灰度圖像取值為O到255之間,若像素的灰度值大于該閾值,則判斷為白,取值為0,若像素的灰度值小于該閾值,則判斷為黑,取值為I ;當然也可以反過來,若像素的灰度值大于該閾值,則判斷為黑,取值為1,若像素的灰度值小于該閾值,則判斷為白,取值為O。至此,由灰度圖像就可以得到每個像素只取“黑“或者“白”的二值化圖像。但是,在包含有二維碼的灰度圖像中,二維碼僅占圖像的幾分之一,甚至更小,所以在分塊過程中,每個塊只包含二維碼的一小部分。而在使用大津算法時,在目標和背景比例失調的情況下,大津算法也失效,于是得到的二值化圖像也就失真了,二值化圖像失真,自然就影響到二維碼的識讀。
發明內容
為此,本發明所要解決的技術問題是:提供一種二維碼圖像的二值化方法,使得采用本發明所述方法得到二維碼二值化圖像,不但速度快,而且不失真,從而有利于二維碼的識讀。于是,本發明提供了一種二維碼圖像的二值化方法,包括:
根據二維碼灰度圖像的規格自適應確定該灰度圖像的分塊區域大小;
計算每個塊區域的對比度,判斷塊區域對比度的高低,將對比度低且平均灰度值低于整幅圖像平均灰度值的塊區域的閾值設為255,將對比度低且平均灰度值高于整幅圖像平均灰度值的塊區域的閾值設為0,對比度高的塊區域則要計算閾值;
對計算得到的所有塊區域的閾值進行平滑處理,并將二維碼圖像灰度圖像的每個像素與相應的經過平滑處理后得到的塊區域的閾值進行比較,得到二值化圖像。
其中,所述根據二維碼灰度圖像的規格確定該灰度圖像的分塊區域大小,包括:
以灰度圖像的寬和高的乘積的大小自適應確定分塊區域的大小。例如將752像素*480像素的二維碼灰度圖像分成40像素*40像素的塊區域,或者將1280像素*720像素的二維碼灰度圖像分成80像素*80像素的塊區域。其中,所述計算每個塊區域的對比度,包括:統計每個塊區域圖像的灰度直方圖: Li = ni/N i = 0,1,2,…,255,其中,ni為圖像的灰度值為i的像素個數;N為圖像
中的像素總數;
選擇閾值T,將圖像分為像素數量相同的亮暗兩個部分,即
權利要求
1.一種二維碼圖像的二值化方法,其特征在于,包括: 根據二維碼灰度圖像的規格確定該灰度圖像的分塊區域大小; 計算每個塊區域的對比度,判斷塊區域對比度的高低,將對比度低且平均灰度值低于整幅圖像平均灰度值的塊區域的閾值設為255,將對比度低且平均灰度值高于整幅圖像平均灰度值的塊區域的閾值設為O ;并計算對比度高的塊區域的閾值; 對計算得到的所有塊區域的閾值進行平滑處理,并將二維碼圖像灰度圖像的每個像素與相應的經過平滑處理后得到的塊區域的閾值進行比較,得到二值化圖像。
2.根據權利要求1所述的二值化方法,其特征在于,所述根據二維碼灰度圖像的規格確定該灰度圖像的分塊區域大小,包括以灰度圖像的寬和高的乘積的大小自適應確定分塊區域的大小。
3.根據權利要求1所述的二值化方法,其特征在于,所述計算每個塊區域的對比度,包括:統計每個塊區域圖像的灰度直方圖: Li = ni/N i = 0,1,2,.",255,其中,ni為圖像的灰度值為i的像素個數;N為圖像中的像素總數; 選擇閾值T,將圖像分為像素數量相同的亮暗兩個部分,即
4.根據權利要求1至3中任意一項所述的二值化方法,其特征在于,所述判斷塊區域對比度的高低,包括: 以整幅二維碼灰度圖像的對比度和鄰近的已判定為包含有二維碼圖像的塊區域的對比度做參照,設定閾值; 將閾值和當前塊區域的對比度做比較,若當前塊區域的對比度低于所述設定的閾值則認為是不包含二維碼部分的低對比度塊區域;若當前塊區域的對比度大于所述設定的閾值,則判定該塊區域為包含有二維碼的高對比度塊區域灰度圖像,該塊區域需要進一步計算閾值。
5.根據權利要求3所述的二值化方法,其特征在于,所述進一步計算該塊區域的閾值,包括: 截掉塊區域直方圖中灰度值最大的那部分,設塊區域直方圖灰度值的取值范圍為gmin, gmin+1,,gmax,像素總數為N,要截掉塊區域直方圖灰度部分為Delta,則截掉部分灰度值后,直方圖的取值范圍為: gmin+1, gmin+2,…,gmax- Delta ; 設用大津算法計算原塊區域的閾值為T0,則,灰度TO為閾值將原塊區域圖像像素分成兩類,即灰度值為gmin, gmin+1,..., TO的像素構成一類,記為CO,像素個數NO ;灰度值為TO + 1,T0+2,..., gmax的像素構成另外一類,記為Cl,像素個數為NI,以亮暗像素數比例1:1為參考比例,那么閾值TO分割偏離的像素數Diff為:Diff = NO - N/2|,塊區域直方圖中截掉的灰度部分范圍設定為: Delta= (gmax-gmin)* Diff/N 直方圖剩余部分灰度取值為:gmin, gmin+1,..., gmax- Delta ; 更新所述像素總數N參數,利用大津算法對直方圖剩余部分計算塊區域閾值T,該閾值T就是塊區域理想的閾值。
6.根據權利要求1所述的二值化方法,其特征在于,所述對計算得到的塊區域的閾值進行平滑處理,包括: 以某一塊區域為基準,對其周圍塊區域的閾值進行加權,加權后得到的閾值為該塊區域平滑處理后的閾值; 重復上述步驟,直到對計算得到的所有塊區域的閾值都進行完平滑處理。
全文摘要
本發明提供了一種二維碼圖像的二值化方法,包括根據二維碼灰度圖像的規格確定該灰度圖像的分塊區域大小;計算每個塊區域的對比度并判定對比度的高低,將對比度低且平均灰度值低于整幅圖像平均灰度值的塊區域的閾值設為255,將對比度低且平均灰度值高于整幅圖像平均灰度值的塊區域的閾值設為0;對比度高的塊區域則要計算塊區域的閾值;對計算得到的所有塊區域的閾值進行平滑處理,并將二維碼灰度圖像的每個像素與相應的經過平滑處理后得到的塊區域的閾值進行比較,得到二值化圖像。使用本發明所述方法得到二維碼二值化圖像,不但速度快,而且不失真,從而有利于二維碼的識讀。
文檔編號G06K9/38GK103093225SQ20131000278
公開日2013年5月8日 申請日期2013年1月5日 優先權日2013年1月5日
發明者丁偉軍 申請人:武漢矽感科技有限公司, 上海矽感信息科技有限公司