1. 程式人生 > >數字影象處理之二維碼影象提取演算法(二)

數字影象處理之二維碼影象提取演算法(二)

二維碼標準:

國外:pdf417DatamatrixQR

國內:龍貝,漢信。

影象輸入-> 影象預處理-> 二維碼影象切割(定位)-> 二維碼影象校正-> 譯碼

譯碼:二維碼碼字提取-> 糾錯譯碼-> 資訊譯碼

糾錯譯碼:求解伴隨因子(判斷)

          正確碼字=Yji ^ 錯誤碼字。;

資訊譯碼:模式指示+字元段+資料位流

          判斷編碼模式和字元個數

          按照對應的編碼模式進行解碼。

彩色影象(RGB)影象索引。

影象的取樣和量化。

影象的取樣和數字影象的質量:二維矩陣。

1、對比度;

2、清晰度(亮度,對比度,尺寸大小,降低顏色飽和度);

3、等等。

數字影象的表示:順序存放的連續資料。點陣圖資訊頭,調色盤(儲存影象顏色值),實際的影象資料。

影象處理模組的實驗:

拍攝影象輸入->預處理->影象定位->影象校正->解碼

一、預處理:(增強影象的清晰度)

影象的灰度化處理:

攝像頭採集到的二維條碼圖片是RGB格式的彩色影象,由紅(Red)、綠(Green)、 藍(Blue)三種基本顏色按照一定的比例混合得到,每一種顏色分量有256個灰度級,2^24三種顏色組合可以表示出 種顏色,幾乎可以表示人類能夠感知到的所有顏色[34]。彩色影象包含了大量識別過程中不需要的色彩資訊,這些資訊都需要佔用儲存空間。在計算機中,R、G、B三個分量分別佔用一個位元組的記憶體,一個畫素至少需要佔用三個位元組的記憶體。灰度影象只表示亮度資訊,只需要佔用一個位元組記憶體。所以, 在影象處理過程中,通常都先將彩色影象轉換成灰度影象,這樣不但可以減少儲存開銷,而且可以減少後續影象處理的計算量,加快二維條碼識別速度。假設灰度影象中灰度值用 Y 表示,彩色影象各分量的灰度值分別為 R、 G、 B,那麼標準的灰度值Y的計算公式為:

0.30R+ 0.59G+0.11B

中值濾波:

普通CMOS攝像頭採集到的二維條碼影象中經常會含有一些噪聲點,導致影象 退化,對後續的條碼識別產生嚴重的干擾,降低條碼識別率。針對影象中普遍存在的高斯噪聲、椒鹽噪聲採取了中值濾波降噪處理,能夠有效的去除上述幾種噪聲,保護影象的邊緣資訊,不會對後續的邊緣提取產生很大的影響。

中值濾波[21]具有良好的噪聲抑制能力,是一種非線性平滑技術。 對於畫素點 , 它統計其領域視窗內所有畫素點的灰度值並進行排序,將這個畫素點的灰度值設定 為排序後的中間值。 一般選取視窗畫素點個數都為奇數,因此中值濾波的數學表達 式如下:

                    

視窗選取對影象中值濾波的效果也將產生很大的影響。根據不同的應用場合需 要採用不同的取樣視窗,常見的取樣視窗有十字形、米字型、稜形、矩形等,其中 矩形視窗最為常用。本文主要是去除二維條碼影象中含有的椒鹽噪聲,結合二維條 碼的特性,選用 3× 3 的矩形視窗作為濾波視窗:

                                                                              

中值濾波是通過對鄰域內畫素的灰度值進行排序,能後選取排序結果的中間值 作為該畫素點的灰度值來實現的。影象中存在的椒鹽噪聲一般是隨機分散分佈的, 在較小的領域內通常不會存在多個椒鹽噪聲,經過排序後,噪聲點通常是排在靠前或者靠後的位置,因此,中值點的值比較能代表這個畫素點的實際灰度值。中值濾 波的具體操作過程如下:(1) 遍歷這個模板中所有畫素點的灰度值;(2)將這些灰度值從小到大進行排序;(3)選取排序結果的中間值,並將其作為這個模板中心畫素點的灰度值。

二值化處理:

基於門限化的二值化方法。大津演算法(Otsu)就是其中的代表,對光照均勻的圖片具有良好的分割效果。但拍攝時,由於光源的不確定性 經常會導致拍攝到的影象存在光照不均的現象,影象中靠近光源那邊比較明亮,另一邊則比較暗,對後續的影象二值化處理產生嚴重的影響。這裡就採用了一種自適應亮度均衡化演算法

      日本學者大津展之首先提出了最大類間方差理論,也叫做大津演算法,簡稱 OTSU 演算法[10]。它的基本思想如下:設定一個閾值 t,它把一幅灰度影象分割成兩組,一組灰度對應目標影象,另一組對應背景影象。假設灰度影象的灰度值為0~k 級, t 從 0 開始取值,一直到 k, 當 t=T 使得這兩組灰度值的類間方差最大,類內方差最小時, 目標影象和背景影象兩部分的差別達到了最大化, 若將此時的閾值T 作為二值化的門限值, 將獲得最佳的二值化效果。

    比如:一幅大小為 M× N 的 QR 條碼影象, 設閾值 t 將影象分割成前景色和背景色兩組ni為影象中灰度值為 的畫素個數, G 為灰度圖的最大灰度級, 8位灰度圖的最大灰度級為 255,則:
前景/背景色畫素點佔整個影象的比例w1和w2分別為:

      

       

      

    由於大津演算法是全域性閾值法,影象分割閾值的選取是建立在整幅圖片前景色和背景色的區分基礎上的,當影象中存在比較嚴重的光照不均時,容易錯誤的將影象中較暗的部分認為是前景色, 較亮的部分背景色,而不是把條碼本身作為前景色,得到錯誤的門限閾值, 得到的效果並不理想.

       所以使用自適應亮度調節!