一種二維碼圖像二值化的改進方法與流程
2023-07-18 03:27:56 6
本發明涉及圖像處理技術領域,尤其涉及一種二維碼圖像二值化的改進方法。
背景技術:
二維碼因具有信息存儲能力強、識讀方便、保密性好等優點而被廣泛使用。二維碼圖像在識別過程中,通過掃描頭或攝像頭處理的圖片難免會出現失真、模糊、傾斜或者光照不均的現象,以致於影響識讀效果,現有的圖像處理方式是通過圖像灰度化處理之後對圖像進行二值化處理,但由於二維碼使用環境千差萬別,光照環境不均衡,在對圖像二值化處理的時候,往往不能對在光照不均勻和交黑暗地方獲取到的二維碼圖像進行較好的二值化處理,使之在後續的識別上往往無法識別出二維碼圖像的信息,或對二維碼圖像的信息識別錯誤。
技術實現要素:
本發明的目的在於克服現有技術的不足,本發明提供了一種二維碼圖像二值化的改進方法,能更好的針對在光照不均勻的條件下獲取到的二維碼圖像進行二值化處理,並獲取到較好的處理效果。
為了解決上述技術問題,本發明實施例提供了一種二維碼圖像二值化的改進方法,所述方法包括:
將採集到的二維碼圖像進行預處理,獲取預處理後的二維碼圖像,其中所述預處理包括設定二維碼圖像的長度為m,寬度為n,對所述二維碼圖像進行灰度化處理;
將所述預處理後的二維碼圖像進行分塊和標註處理,獲取分塊和標註處理後的二維碼圖像塊;
計算每個二維碼圖像塊的像素值和像素值閾值,採用ave[a]表示計算獲取的像素值,ta表示像素值閾值,其中所述a表示第a塊二維碼圖像塊;
將所有的二維碼圖像塊進行融合處理,獲取成完整的二維碼圖像。
優選地,所述將所述預處理後的二維碼圖像進行分塊和標註處理為將所述預處理後的二維碼圖像分成4塊,每塊分別記為pa,a=1,2,3,4。
優選地,所述計算每個二維碼圖像塊的像素值的公式為:
其中,p1,p2,p3,p4表示不同的二維碼圖像塊,a(i,j)表示待處理的二維碼圖像,m、n分別表示待處理的二維碼圖像的長和寬。
優選地,所述計算每個二維碼圖像塊的像素值閾值的公式為:
其中,ta表示像素閾值,ave[a]表示第a個圖像塊的像素值。
優選地,所述將所有的二維碼圖像塊進行融合處理,獲取成完整的二維碼圖像,包括:
採用自適應閾值調整的方式調整二維碼圖像塊融合時的像素閾值,使融合後完整的二維碼圖像像素值點均勻分布。
在具體實施過程中,能更好的針對在光照不均勻的條件下獲取到的二維碼圖像進行二值化處理,並獲取到較好的處理效果;使得在後續對二維碼圖像中的信息的識別中,能更快更準確的進行識別。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見的,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。
圖1是本發明實施例中的二維碼圖像二值化的改進方法的方法流程示意圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其它實施例,都屬於本發明保護的範圍。
為了提高二維碼圖像的快速識別能力,需要將灰度處理後的圖像轉化為二值圖像。圖像像素點的處理依據閥值,根據閥值t來劃分,一般劃分為兩部分,一部分是大於t的像素點,另一部分是小於t的像素點,劃分依據的表達式為:
其中,g(x,y)標示二值化後的像素點,f(x,y)表示原始圖像像素點,t是二值化閥值。
自適應閾值算法關鍵是要選取一個合適的閾值,通常求它所用的閾值選取方法是基於點的全局閾值算法,具體做法是首先選一個像素作為中心,然後參照此像素點再選擇一個鄰域,並以這個像素點作為鄰域的中心。然後在該鄰域內查找的最大像素值與最小像素值,要將選取鄰域中的最大像素值與最小像素值查找出來,計算最大像素值與最小像素值的平均值,把計算得到的平均值作為二值化的閾值。計算中,基本要選擇合適的窗口,窗口不能太大,也不能太小,如果選擇的窗口太大,要處理的像素就越多,運算多需要的時間就越長。首先,要選擇大小合適的窗口,儘可能的提高運算的速度,減少運算所需的時間,但前提是要保證二值化的同等效果。在這裡,將二維碼碼圖像分成四塊,每一塊選擇一個合適的閾值分別進行二值化。將圖像分成小塊分別進行處理,每一塊內像素值比較接近,沒有明顯的跳躍現象,這樣能夠得到比較理想的二值化效果。不會對二維碼圖像進行誤判,同時處理速度比較快,在實際應用中,能夠滿足要求。將目標從背景中快速的分離出來。
圖1是本發明實施例中的二維碼圖像二值化的改進方法的方法流程示意圖,如圖1所示,所述方法包括:
s11:將採集到的二維碼圖像進行預處理,獲取預處理後的二維碼圖像,其中所述預處理包括設定二維碼圖像的長度為m,寬度為n,對所述二維碼圖像進行灰度化處理;
s12:將所述預處理後的二維碼圖像進行分塊和標註處理,獲取分塊和標註處理後的二維碼圖像塊;
s13:計算每個二維碼圖像塊的像素值和像素值閾值,採用ave[a]表示計算獲取的像素值,ta表示像素值閾值,其中所述a表示第a塊二維碼圖像塊;
s14:將所有的二維碼圖像塊進行融合處理,獲取成完整的二維碼圖像。
對s11作進一步說明:
通過攝像頭或相機對二維碼圖像進行採集,然後將採集到的二維碼圖像傳輸到待預處理系統中,在待預處理系統中進行預處理,預處理過程中,首先,將待預處理的二維碼圖像設置為a(i,j),設定二維碼圖像的長度為m,寬度為n,然後再對二維碼圖像進行灰度化處理。
對s12作進一步說明:
對預處理之後的二維碼圖像進行分塊,然後對每一個分塊分別進行標註,在具體實施過程中,將預處理後的二維碼圖像分成4塊,每塊分別記為pa,a=1,2,3,4。因為在計算二維碼圖像像素時,需要選擇合適的窗口,窗口不能太小,如果太小,要處理的圖像塊太多,計算表述太複雜,也不能太大,如果選擇的窗口太大,要處理的像素就越多,運算多需要的時間就越長。要選擇大小合適的窗口,儘可能的提高運算的速度,減少運算所需的時間,但前提是要保證二值化的同等效果。因此本發明實施例中選擇將二維碼圖像分為4塊進行處理。
對s13作進一步說明:
分別計算每個二維碼圖像塊的像素值和像素閾值,採用ave[a]表示計算獲取的像素值,ta表示像素值閾值,其中所述a表示第a塊二維碼圖像塊;
其中,計算每個二維碼圖像塊的像素值的公式為:
其中,p1,p2,p3,p4表示不同的二維碼圖像塊,a(i,j)表示待處理的二維碼圖像,m、n分別表示待處理的二維碼圖像的長和寬。
其中,計算每個二維碼圖像塊的像素值閾值的公式為:
其中,表示像素閾值,表示第個圖像塊的像素值。
對s14作進一步說明:
將所有的二維碼圖像塊進行融合處理,獲取成完整的二維碼圖像。
進一步的,採用自適應閾值調整的方式調整二維碼圖像塊融合時的像素閾值,使融合後完整的二維碼圖像像素值點均勻分布。
在圖像融合過程中,採用horzcat函數和vertcat函數進行融合,這兩個函數是matlab自帶的函數,在融合過程中要經過嘗試選用不同合適的補償因子,用它調節自適應閾值中,不同子塊間的差異,儘可能的使整幅圖片的像素值點均勻的分布,降低客觀環境對圖像二值化帶來的影響,這裡主要是光照不均的影響。
在具體實施過程中,能更好的針對在光照不均勻的條件下獲取到的二維碼圖像進行二值化處理,並獲取到較好的處理效果;使得在後續對二維碼圖像中的信息的識別中,能更快更準確的進行識別。
本領域普通技術人員可以理解上述實施例的各種方法中的全部或部分步驟是可以通過程序來指令相關的硬體來完成,該程序可以存儲於一計算機可讀存儲介質中,存儲介質可以包括:只讀存儲器(rom,readonlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或光碟等。
另外,以上對本發明實施例所提供的一種二維碼圖像二值化的改進方法進行了詳細介紹,本文中應採用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。