本發(fā)明涉及二維碼領域,具體涉及一種二維碼圖像質量的預判斷方法。
背景技術:
二維碼是用某種特定的幾何圖形按一定規(guī)律在平面也就是二維方向上分布的黑白相間的圖形記錄數據符號信息的;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現(xiàn)信息自動處理:它具有條碼技術的一些共性:每種碼制有其特定的字符集;每個字符占有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、及處理圖形旋轉變化點。
二維碼由于其低成本生產而被廣泛使用。二維碼可以通過在紙上打印或電子傳送而容易地共享??梢允褂靡苿与娫捳障鄼C或二維碼掃描器來捕獲二維碼。然后,通過定位器圖案的位置來分割二維碼區(qū)域。具有實線邊界的取景器圖案由標準邊緣檢測器檢測,接著進行霍夫變換;二維碼圖像的質量被增強,并且二維碼被恢復為黑色和白色格式的原始版本。從而得到二維碼中的位值,然后讀出并執(zhí)行誤差校正步驟以產生解碼數據。
二維碼應用范圍廣,因此其應用環(huán)境相對復雜。在實際的日常移動端的生活中,這些二維碼是使用各種類型的手機相機收集的。由于手抖或者便宜的內置移動電話相機和不均勻的照明條件,一些捕獲的二維碼圖像不可解碼。因此在生成的二維碼投入使用之前,如何保證二維碼的質量是有待解決的問題。
技術實現(xiàn)要素:
為了解決上述問題,本發(fā)明提供了一種二維碼圖像質量的預判斷方法。本發(fā)明提供的一種二維碼圖像質量的預判斷方法,在二維碼投入使用之前,先對其的質量進行預判斷,判斷該二維碼能否被正常解析,如果能,才允許其正常投入使用,如果不能,則淘汰。通過本發(fā)明可進一步保證了二維碼的質量,從而進一步的為人們的工作生活帶來便利。
本發(fā)明采用的技術方案如下:
一種二維碼圖像質量的預判斷方法,包括如下步驟:
S1,建立二維碼檢測模塊數據庫;
S2,對對象二維碼圖像進行預處理,獲取對應的二值化圖像;
S3,在二維碼檢測模塊數據庫中查找與步驟S2中的二值化圖像對應的二維碼檢測模塊;
S4;通過SVM算法進行分類決定S3中獲取的二維碼檢測模塊能否識別S2中的二值化圖像,如果能,則對象二維碼圖像可別使用,如果不能,則對象二維碼圖像被淘汰。
上述的一種二維碼圖像質量的預判斷方法,其中,所述步驟S3具體包括通過定位算法獲得二維碼檢測模塊,將從中提取可檢測的取景器中二維碼檢測模塊圖案的數目作為特征。以能夠找到的檢測模塊的數目作為特征,進行判斷該圖形是否可以被識別。
上述的一種二維碼圖像質量的預判斷方法,其中,采用默認的尋找器圖案檢測算法。
上述的一種二維碼圖像質量的預判斷方法,其中,所述步驟S4具體包括
S41,當對象二維碼圖像同時能夠通過SVM預測出N個檢測模塊時,至步驟S42,否則,直接判斷該對象二維碼圖像淘汰;
S42,通過對象二維碼圖像的二值化圖像獲取與其對應的灰度直方圖;
S43,通過S42中所述的灰度直方圖獲取二維碼圖像編碼過程中的參數,所述參數分別為:可分度閾值、黑白平衡度、黑白像素均值置產、峰值與谷值的比率;其中:
(1)可分度閾值T:
arg max f(x):表示當f(x)取最大值時,x的取值,在這里x表示的是0~255范圍的像素值。σ表示oust算法中選定閾值T后圖像的方差σ20=ωB(i)[μB(i)-μT]2+ωw(i)[μw(i)-μT]2。所述可分度閾值用以判斷該圖像是否可以有效的進行二值化;
(2)黑白平衡度B:
其中表示二值化圖像的黑色像素的總個數,表示二值化圖像的黑色像素的總個數,所述黑白平衡度B用以判斷圖像的暗亮程度;
(3)黑白像素均值之差C:
W和B分別是基于閾值T計算的白色和黑色像素的平均強度值。所述與是基于Ostu方法得到的閾值進行計算的。
(4)峰值的比率Rb與谷值的比率Rw:
所述Rb與Rw用以表示圖像的模糊程度,如果兩個值越小證明峰值與谷值越接近,就表示模糊程度越高。其中h(i)是第i個強度級中的像素計數。
S44,基于可分度閾值、黑白平衡度、黑白像素均值置產、峰值與谷值的比率,通過神經網絡回歸預測器得到該對象二維碼圖像可以被正確解碼的概率。
上述的一種二維碼圖像質量的預判斷方法,其中,所述步驟S2包括:
S21,獲取輸入圖像;
S22,將S21獲取到的彩色圖像轉換成灰度圖像。
本發(fā)明解決了移動端得到二維碼后進行解碼,但最終經過一系列耗時操作后發(fā)現(xiàn)并無法解碼而消耗大量時間和運算,以及可能產生解碼錯誤的問題。通過上述的技術手段能夠有效快速的提前判斷該輸入二維碼是否能夠被正確解碼。在二維碼解碼之前,將二維碼基于本發(fā)明先行判斷能否被解碼。最后采用的機器學習算法即SVM算法得到的是一個0~1之間的概率值,這個分數可以由該方法的使用者自己根據不同的條件來決定最后的這個值到底是不是所能接受的誤差,這個與使用本發(fā)明的設備的攝像頭等設備有關。比如使用者認為的設備大于0.6的時候就可以判斷為該二維碼可以被解碼,而小于0.6時即為不良質量二維碼圖像,則其將被拒絕。質量良好的二維碼圖像將被轉發(fā)到增強處理并由解碼器讀取。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發(fā)明一種二維碼圖像質量的預判斷方法的流程圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例
如圖1所示,一種二維碼圖像質量的預判斷方法,包括如下步驟:
S1,建立二維碼檢測模塊數據庫;
S2,對對象二維碼圖像進行預處理,獲取對應的二值化圖像;具體如下:
S21,獲取輸入圖像;
S22,將S21獲取到的圖像轉換成灰度圖像。
S3,在二維碼檢測模塊數據庫中查找與步驟S2中的二值化圖像對應的二維碼檢測模塊;通過定位算法獲得二維碼檢測模塊,將從中提取可檢測的取景器圖案的數目F作為特征。以能夠找到的檢測模塊的數目作為特征,進行判斷該圖形是否可以被識別。采用默認的尋找器圖案檢測算法,能夠提高效率和尋找圖案的特殊性。
S4;通過SVM算法進行分類決定S3中獲取的二維碼檢測模塊能否識別S2中的二值化圖像,如果能,則對象二維碼圖像可別使用,如果不能,則對象二維碼圖像被淘汰。其中,所述SVM算法為已經訓練好得到的SVM算法,即通過輸入大量的可以解碼以及不可解碼的訓練樣本進行訓練得到的框架。
步驟S4具體包括:
S41,當對象二維碼圖像同時能夠通過SVM預測出N個檢測模塊時,至步驟S42,否則,直接判斷該對象二維碼圖像淘汰;取N為3時,當對象二維碼經由上述步驟通過SVM預測出3個檢測模塊時,之步驟S42,否則,直接判斷對象二維碼不可解碼。即:
S42,通過對象二維碼圖像的二值化圖像獲取與其對應的灰度直方圖;
S43,通過S42中的灰度直方圖,可以發(fā)現(xiàn)由于編碼過程中的數據掩蔽方案和數據的隨機性,對象二維碼圖像的QR碼具有黑色和白色像素的兩個均勻分布的峰值,當模糊半徑增加時,灰度直方圖中的主要黑色和白色峰減少,最后,黑白像素峰減少,灰色像素占優(yōu)勢。因此我們如果需要判斷一個圖片的模糊程度可以通過該灰度直方圖的雙峰特性。通過S42中所述的灰度直方圖獲取二維碼圖像編碼過程中的參數,
所述參數分別為:可分度閾值、黑白平衡度、黑白像素均值置產、峰值與谷值的比率;其中:
(1)可分度閾值T:
arg max f(x):表示當f(x)取最大值時,x的取值,在這里x表示的是0~255范圍的像素值;σ表示oust算法中選定閾值T后圖像的方差σ20=ωB(i)[μB(i)-μT]2+ωw(i)[μw(i)-μT]2。所述可分度閾值用以判斷該圖像是否可以有效的進行二值化。
(2)黑白平衡度B:
其中表示二值化圖像的黑色像素的總個數,表示二值化圖像的白色像素的總個數,所述黑白平衡度B用以判斷圖像的暗亮程度;
這是一個基于Otsu的方法獲得條形碼圖像的全局二值化閾值。用來判斷該圖像是否可以有效的進行二值化。,其中T表示通過Otsu方法得到的閾值,所以在二值化圖像中T的左半部分表示為黑色,右半部分表示為白色,兩者的累加可以分別得到黑色和白色像素的總個數,通過兩者相除得到的參數可以表示圖像是否會過暗或過亮。在通常情況下認為B的值[0.25,0.75]的范圍時會是一個較好的圖片。當值過大則表示圖片過暗,小則表示過亮,但是不能排除有奇異點的存在,因此該指標也是跟其余指標一樣,加入到機器學習算法中作為參數進行訓練,最終算法返回的會統(tǒng)一告訴使用者是否能被解碼。
(3)黑白像素均值之差C:
所述與是基于Ostu方法得到的閾值進行計算的;黑白像素均值之差C用以表示圖像的可分度??煞侄仍诨叶戎狈綀D上的直接體現(xiàn)是二維碼在給定閾值時候黑白兩個部分的像素強度級的差距,這個差距越大表示原二維碼圖像黑白清晰度越高,能被解碼的可能性就越強。
(4)峰值的比率Rb與谷值的比率Rw:
所述Rb與Rw用以表示圖像的模糊程度,如果兩個值越小證明峰值與谷值越接近,就表示模糊程度越高。其中h(i)是第i個強度級中的像素計數。
S44,基于可分度閾值、黑白平衡度、黑白像素均值置產、峰值與谷值的比率,通過神經網絡回歸預測器得到該對象二維碼圖像可以被正確解碼的概率。所述神經網絡回歸預測器為已經訓練好的神經網絡回歸預測器,即通過大量的帶標簽的訓練集進行訓練得到的神經網絡回歸預測器。根據神經網絡回歸器輸入大量的帶標簽(標簽表示已知是否被正確解碼)的訓練樣本二維碼進行對機器學習算法的訓練。當隨著訓練樣本的增加,預測的準確性也會增加。在不同的手機中可以通過調整步長和懲罰值來改變神經網絡的學習效率,一般采用步長為0.02,懲罰值為0.03即可,步長越大收斂則越快,這個跟算法本身有關。最終算法會返回一個0和1兩個值,0表示該二維碼不可以被正確識別,1表示該二維碼不可被正確識別。該算法當前在輸入訓練樣本個數為4000時的準確性能在97.15%~98.45%之間。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。