TWI742492B - 條碼偵測方法及系統 - Google Patents
條碼偵測方法及系統 Download PDFInfo
- Publication number
- TWI742492B TWI742492B TW108147519A TW108147519A TWI742492B TW I742492 B TWI742492 B TW I742492B TW 108147519 A TW108147519 A TW 108147519A TW 108147519 A TW108147519 A TW 108147519A TW I742492 B TWI742492 B TW I742492B
- Authority
- TW
- Taiwan
- Prior art keywords
- pane
- image
- gradient
- barcode
- changes
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06K—GRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
- G06K7/00—Methods or arrangements for sensing record carriers, e.g. for reading patterns
- G06K7/10—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation
- G06K7/14—Methods or arrangements for sensing record carriers, e.g. for reading patterns by electromagnetic radiation, e.g. optical sensing; by corpuscular radiation using light without selection of wavelength, e.g. sensing reflected white light
- G06K7/1404—Methods for optical code recognition
- G06K7/1439—Methods for optical code recognition including a method step for retrieval of the optical code
- G06K7/1443—Methods for optical code recognition including a method step for retrieval of the optical code locating of the code in an image
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Electromagnetism (AREA)
- General Health & Medical Sciences (AREA)
- Toxicology (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Abstract
條碼偵測方法包含取得影像中每一畫素的影像梯度,根據影像梯度,產生每一畫素的梯度相位角度及梯度能量強度,將每一畫素的梯度能量強度二值化以產生二值化影像,在影像上產生窗格,將窗格中將二值化影像進行垂直及水平取樣,以產生垂直與水平方向上的灰階值變化次數,根據垂直及水平方向上的灰階值變化次數定位最密集翻轉區域,根據最密集翻轉區域定位核心條碼區域,擷取核心條碼區域中畫素的梯度相位角度以產生梯度相位角度分佈,根據梯度相位角度分佈產生條碼的格式偵測結果,根據條碼的格式偵測結果定位條碼的影像區域。
Description
本發明揭露一種條碼偵測方法及條碼偵測系統,尤指一種具高速偵測能力的低複雜度之條碼偵測方法及條碼偵測系統。
隨著科技進步,各種條碼逐漸被應用在日常生活中,並慢慢地取代繁雜且易錯誤的文字資訊。例如,一維條碼將寬度不等的多個黑條(Bar)和白條(Space),按照一定的編碼規則(即黑白寬度比例)排列,用以表達一組資訊的圖形識別元。常見的一維條碼是由反射率相差很大的黑條和白條排成的平行線圖案。二維條碼則可為矩形,可視為將一維條碼的影像往另一個軸向延伸的影像,因此可帶有比一維條碼更多的資訊量。條碼可以標出物品的生產國、製造廠家、商品名稱、生產日期、圖書分類號、郵件起止地點、類別、日期等資訊,因而在商品流通、圖書管理、郵政管理、銀行系統等許多領域都得到了廣泛的應用。
一般而言,要將條碼識別以產生具有意義的資訊需要兩個步驟。第一個步驟稱為條碼取樣步驟。條碼取樣步驟可以利用相機、掃描器、雷射識別裝置等光元件擷取條碼的圖案。第二個步驟稱為解碼步驟。解碼步驟可以利用查詢表或是解碼器將取樣後的條碼轉換為有意義的資訊。在一般解碼步驟的前置步驟中,條碼的存在性以及條碼的格式(一維或是二維)需要先被偵測出來。然而,一般由相機所拍的影像中,偵測條碼的存在性與格式必須將影像的畫素一列一列地掃描。當影像的尺寸或解析度很高時,將非常耗時。並且,當條碼偵測失敗時,上述逐列掃描的程序又必須再一次地執行,因此這種效率低且耗時的偵測方式將會浪費系統資源。
本發明一實施例提出一種條碼偵測方法,包含相機取得影像,取得該影像中之每一畫素的水平影像梯度及垂直影像梯度,根據該水平影像梯度及該垂直影像梯度,產生該每一畫素的梯度相位角度及梯度能量強度,將該每一畫素的該梯度能量強度二值化,以產生二值化影像,於該影像中產生窗格,於該窗格內將該二值化影像以N個畫素為間隔的V個垂直掃描線進行垂直取樣以統計該二值化影像於垂直方向上的V個灰階值變化次數,於該窗格內將該二值化影像以M個畫素為間隔的H個水平掃描線進行水平取樣以統計該二值化影像於水平方向上的H個灰階值變化次數,若該垂直方向上的V個灰階值變化次數高於第一預定值及該水平方向上的H個灰階值變化次數高於第二預定值,則判定該窗格所覆蓋之區域為一最密集翻轉區域,若該窗格所覆蓋之區域被判定為該最密集翻轉區域,則擴張該窗格至該窗格覆蓋核心條碼區域,擷取該核心條碼區域中之複數個畫素的複數個梯度相位角度以產生梯度相位角度分佈,根據該梯度相位角度分佈產生該條碼的格式偵測結果,及根據該格式偵測結果擴張該窗格至該窗格完全覆蓋該條碼。
本發明另一實施例提出一種條碼偵測系統,包含相機、處理器及記憶體。相機用以取得影像。該處理器取得該影像中每一畫素的水平影像梯度及垂直影像梯度,根據該水平影像梯度及該垂直影像梯度,產生該每一畫素的梯度相位角度及梯度能量強度,將該每一畫素的該梯度能量強度二值化,以產生二值化影像,在該影像中產生窗格,於該窗格內將該二值化影像以N個畫素為間隔的V個垂直掃描線進行垂直取樣,以統計該二值化影像於垂直方向上的V個灰階值變化次數,於該窗格內將該二值化影像以M個畫素為間隔的H個水平掃描線進行水平取樣,以統計該二值化影像於水平方向上的H個灰階值變化次數,若該垂直方向上的V個灰階值變化次數高於第一預定值及該水平方向上的H個灰階值變化次數高於第二預定值,則判定該窗格所覆蓋之區域為最密集翻轉區域,若該窗格所覆蓋之區域被判定為該最密集翻轉區域,則擴張該窗格至該窗格覆蓋核心條碼區域,擷取該核心條碼區域中之複數個畫素的複數個梯度相位角度,以產生梯度相位角度分佈,根據該梯度相位角度分佈產生該條碼的格式偵測結果,及根據該格式偵測結果擴張該窗格至該窗格完全覆蓋該條碼。
第1圖是本發明之實施例條碼偵測系統100的示意圖。條碼偵測系統100可應用於偵測一維條碼以及二維條碼,常見的一維條碼有EAN/UPC,ISBN,Code 39,Code 93,Code 128等,常見的二維條碼有矩陣圖碼(quick response code, QR Code)、PDF417條碼、或是資料矩陣(data matrix)等。條碼偵測系統100包含相機10、處理器11及記憶體12。相機10用以擷取影像。相機10可包含任何影像擷取裝置。例如,相機10可內建鏡頭以及感光元件,用以擷取光訊號,並將光訊號進行處理以產生影像。相機10所擷取的影像可包含條碼影像。處理器11耦接於相機10,用以處理影像,以產生條碼的格式偵測結果。處理器11可為任何形式的處理裝置,例如中央處理器、微處理器、邏輯運算單元或是可程式化晶片等等。處理器11也可以判斷條碼影像是否可被偵測。記憶體12耦接於處理器11,用以緩存影像處理資料。記憶體12可為任何形式的記憶裝置,例如硬碟、隨機存取記憶體(random access memory, RAM)或是非揮發性記憶體(non-volatile memory)等等。記憶體12所儲存的影像處理資料可為後文提及之水平影像梯度、垂直影像梯度、水平方向的灰階值變化次數、垂直方向的灰階值變化次數、複數個梯度相位決策邊界等資料。條碼偵測系統100執行條碼偵測方法的步驟以及原理將於後文詳述。
第2圖是取得影像IMG中每一畫素的水平影像梯度及垂直影像梯度的示意圖。如前述提及,相機10具有影像擷取的能力。因此,當處理器11接收到相機10所擷取的影像IMG後,可以取得影像IMG中每一畫素的水平影像梯度及垂直影像梯度。例如,處理器11可以利用索伯(Sobel)演算法,以水平矩陣模板及垂直矩陣模板對影像之每一畫素的亮度做卷積(convolution)運算,以產生每一畫素的水平影像梯度及垂直影像梯度。然而,處理器11也可以僅針對影像IMG之一個區域內的每一畫素的水平影像梯度及垂直影像梯度進行計算,以降低複雜度。例如,影像IMG的區域可為影像IMG之某特定區域、影像IMG靠近中央的區域、或是將影像IMG之邊緣裁切後的子區域等等。任何合理的區域範圍以及位置之調整都屬於本發明所揭露的範疇。在其他實施例中也可以針對小於影像IMG範圍的一個區域進行梯度計算,以降低複雜度。在實際應用時,水平矩陣模板及垂直矩陣模板可為方陣(square matrix),用以與影像中每一畫素的資料向量做線性組合,再以此計算水平影像梯度及垂直影像梯度。在第2圖中,Y軸為垂直軸,X軸為水平軸。畫素A位於條碼BC之外,因此畫素A附近的顏色並無太大變化。因此,畫素A所計算出來的水平梯度以及垂直梯度A(▽XA
,▽YA
)都是很小的數值。然而,畫素B位於條碼BC之內,因此畫素B附近的顏色可能會有變化。因此,畫素B所計算出來的水平梯度以及垂直梯度B(▽XB
,▽YB
)中,至少一個會是較大的數值,依此類推。在處理器11將影像IMG中所有畫素的水平梯度以及垂直梯度都計算完成後,可將所有畫素的水平梯度以及垂直梯度資料儲存於記憶體12中。接著,處理器11可以依據每一畫素的水平影像梯度及垂直影像梯度,產生每一畫素的梯度相位角度及梯度能量強度。舉例而言,當某個畫素的垂直影像梯度非常高,但是水平影像梯度趨近於零,表示某個畫素的梯度相位角度趨近於π/2,畫素附近的影像邊緣近似垂直分佈。反之,當某個畫素的水平影像梯度非常高,但是垂直影像梯度趨近於零,表示某個畫素的梯度相位角度趨近於0,畫素附近的影像邊緣近似水平分佈。並且,每一畫素的梯度能量強度可視為利用引數為水平影像梯度及垂直影像梯度的非線性函數推導出來。梯度能量強度也會與梯度影像之亮度有關。梯度影像亮度越亮的畫素點表示其梯度能量強度越強,梯度影像亮度越暗的畫素點表示其梯度能量強度越弱。處理器11也可以將影像IMG中所有畫素的梯度相位角度以及梯度能量強度儲存於記憶體12中。
第3圖是實施例中影像二值化的示意圖。處理器11可以產生影像IMG中所有畫素的梯度能量強度。接著,依據門檻值與每一畫素的比較結果,將影像IMG中之每一畫素對應至第一灰階值或第二灰階值。例如,處理器11可以設定一個門檻值,當某個畫素的梯度能量強度比門檻值高,則將某個畫素對應至第一灰階值。當某個畫素的梯度能量強度比門檻值低,則將某個畫素對應至第二灰階值。第一灰階值可為趨近於灰階值為255的白色,而第二灰階值可為趨近於灰階值為0的黑色。利用上述的二值化程序,處理器11可以將第2圖中的影像IMG轉換為只有兩種顏色的二值化影像BIMG。例如,在第3圖之二值化影像BIMG中,二值化條碼BBC只包含黑白兩種顏色,而在二值化條碼BBC之外的區域R為背景區域,可為雜訊影像。藉由如前述之二值化程序後,可以降低雜訊的影響量,增加條碼偵測的可靠度。
第4圖是實施例中二值化影像BIMG中窗格SW的示意圖。處理器11可在二值化影像BIMG中產生窗格(sliding window)SW,窗格SW的初始位置可為影像BIMG的邊緣,例如左上角,或隨機在影像BIMG中的任一位置。窗格SW的尺寸可為2x2,4x4,5x5像素等正方形的窗格或可為長方形的窗格,根據需要來調整。
第5圖是在窗格SW中進行水平取樣以及垂直取樣的示意圖。為了降低運算時間以及計算複雜度,條碼偵測系統100可採用間隔取樣的機制,條碼偵測系統100可以使用以N個畫素為間隔的V個垂直掃描線進行取樣,以統計二值化影像BIMG在窗格SW內於垂直方向上的V個灰階值變化次數。舉例而言,相鄰的垂直掃描線可以間隔2~4個畫素(N為2~4之間)。在窗格SW內可用垂直掃描線SV1至SV3進行取樣,以統計二值化影像BIMG在窗格SW內於垂直方向上的灰階值變化次數。同理,條碼偵測系統100可以使用以M個畫素為間隔的H個水平掃描線進行取樣,以統計二值化影像BIMG在窗格SW內於水平方向上的H個灰階值變化次數。舉例而言,相鄰的水平掃描線可以間隔2~4個畫素(M為2~4之間)。在窗格SW內可用水平掃描線SH1至SH3進行取樣,以統計二值化影像BIMG在窗格SW內於水平方向上的灰階值變化次數。然而,本發明卻不以此為限制。由於條碼偵測系統100引入了間隔取樣的機制,因此可以有效地降低計算複雜度以及縮短操作時間。並且,N、M、V、H也可以依據不同的需求調整。例如需要高解析度的偵測品質下,垂直取樣間隔N以及水平取樣間隔M可以減少,以增加垂直掃描線的數量V以及水平掃描線的數量H。或者,兩相鄰的垂直掃描線之取樣間隔N以及兩相鄰的水平掃描線之水平取樣間隔M也可以動態地調整。例如,總數為V的垂直掃描線中,可以調整垂直掃描線的密度分佈,以使兩相鄰的垂直掃描線之取樣間隔N是可變的參數。並且,兩相鄰的水平掃描線之水平取樣間隔M可以動態地調整。例如,總數為H的水平掃描線中,可以調整水平掃描線的密度分佈,以使兩相鄰的水平掃描線之取樣間隔M是可變的參數。因此,藉由適當調整取樣參數,條碼偵測系統100將具有很高的操作彈性。
二值化影像BIMG只會有較亮的第一灰階值以及較暗的第二灰階值。因此,單一條掃描線所取樣的一列或一行畫素的顏色資料,可包含此列或此行畫素的顏色變化。例如,水平掃描線SH1、SH2、SH3掃描到窗格SW內二值化條碼BBC,因此偵測到灰階值變化的狀態,水平掃描線SH1、SH2、SH3所對應的灰階值變化次數分別為2、4、3,以SH1(2)、SH2(4)、SH3(3)表示。類似地,垂直掃描線SV1至SV3到窗格SW內二值化條碼BBC,因此偵測到灰階值變化的狀態,垂直掃描線SV1、SV2、SV3所對應的灰階值變化次數分別為4、4、5,以SV1(4)、SV2(4)、SV3(5)表示。更一般性地說,二值化影像BIMG於水平方向上的H個灰階值變化次數,為二值化影像BIMG於水平方向上,以H個水平掃描線進行水平取樣的H個第一灰階值與第二灰階值相互轉換的次數。類似地,二值化後的影像於垂直方向上的V個灰階值變化次數,為二值化後的影像於垂直方向上,以V個垂直掃描線進行垂直取樣的V個第一灰階值與第二灰階值相互轉換的次數。因此二值化影像BIMG在窗格SW內於水平方向上的灰階值變化次數則為水平掃描線SH1、SH2、SH3所對應的灰階值變化次數的總和,即為2+4+3=9;二值化影像BIMG在窗格SW內於垂直方向上的灰階值變化次數則為垂直掃描線SV1、SV2、SV3所對應的灰階值變化次數的總和,即為4+4+5=13。在窗格SW內,若垂直方向上的V個灰階值變化次數高於第一預定值及水平方向上的H個灰階值變化次數高於第二預定值,則判定窗格SW所覆蓋之區域為最密集翻轉區域,否則移動窗格SW以覆蓋另一區域。例如若第一預定值及第二預定值皆為8,則窗格SW所覆蓋之區域係可認定為最密集翻轉區域;而若第一預定值及第二預定值皆為9,則由於水平方向上的灰階值變化次數為9,沒有大於第二預定值,因此窗格SW所覆蓋之區域係可認定並非為最密集翻轉區域。
第6圖是窗格SW的移動示意圖。窗格SW可在影像BIMG中以任意方式移動,舉例而言,窗格SW可水平移動W個畫素及/或垂直移動Z個畫素,W、Z可為任何大於等於1的正整數。當窗格SW移至下一區域,便可重複上述之垂直掃描線及水平掃描線之取樣以統計二值化影像BIMG在窗格SW內的灰階值變化次數。若垂直方向上的V個灰階值變化次數高於第一預定值及水平方向上的H個灰階值變化次數高於第二預定值,則判定窗格SW所覆蓋之區域為最密集翻轉區域,否則移動窗格SW以覆蓋另一區域。重複上述之方法直到窗格SW所覆蓋之區域為最密集翻轉區域。舉例而言,根據影像參數,窗格SW可向上移動5畫素,並再執行取樣,若取樣結果未超過第一預定值及第二預定值,則窗格SW再向上移動5畫素。或者可根據影像參數,使窗格SW向右移動3畫素並再執行取樣,以此類推。
第7圖是窗格SW覆蓋核心條碼區域的示意圖。在最密集翻轉區域被確認後,窗格SW可開始擴張。窗格SW可先沿水平方向擴張,之後,於窗格SW之擴張區域內統計二值化影像BIMG於垂直方向上的灰階值變化次數,若於擴張區域內,二值化影像BIMG於垂直方向上的灰階值變化次數高於預定值,則再次往水平方向擴張窗格SW,重複執行上述步驟直到擴張區域內的垂直方向上的灰階值變化次數低於預定值時,即可停止擴張。同理,窗格SW可再沿垂直方向擴張,之後,於窗格SW之擴張區域內統計二值化影像BIMG於水平方向上的灰階值變化次數,若於擴張區域內,二值化影像BIMG於水平方向上的灰階值變化次數高於預定值,則再次往垂直方向擴張窗格SW。重複執行上述步驟直到擴張區域內的水平方向上的灰階值變化次數低於預定值時,即可停止擴張。如第7圖所示,若灰階值變化次數的預定值為10,水平掃描線SH1所對應的變化次數為8,水平掃描線SH2所對應的變化次數為6,皆低於預定值,窗格SW便停止往垂直擴張。垂直掃描線SV1所對應的變化次數為9,垂直掃描線SV2所對應的變化次數為9,皆低於預定值,窗格SW便停止往水平擴張。窗格SW所覆蓋的區域即為核心條碼區域。
第8圖是梯度相位決策邊界的示意圖。在條碼偵測系統100中,可以預先設定P個梯度相位決策邊界(Decision Boundary),其中相鄰的梯度相位決策邊界相差2π/P。例如,當P為8時,條碼偵測系統100可以預先設定8個梯度相位決策邊界,以DB1至DB8表示。梯度相位決策邊界DB1對應角度為0的相位、梯度相位決策邊界DB2對應角度為2π/8的相位、梯度相位決策邊界DB3對應角度為4π/8的相位,依此類推。因此,處理器11可將窗格SW所覆蓋區中之所有畫素的複數個梯度相位角度,利用P個梯度相位決策邊界以產生複數個梯度相位決策角度。換句話說,窗格SW所覆蓋區中之每一畫素的梯度相位角度,將會被量化為P個梯度相位決策邊界中的其中一個梯度相位決策邊界。因此,處理器11產生的複數個梯度相位決策角度只會有P種可能的組合。在此,由於二維條碼的轉折點對應π/2,因此P為大於等於4的偶數,如此才能有效地將窗格SW所覆蓋區域中二維條碼之梯度相位角度特性量化。
第9圖是梯度相位角度分佈僅包含一個峰度(Kurtosis)分佈C的示意圖。如前述,處理器11可將窗格SW所覆蓋區域中之所有畫素的複數個梯度相位角度,利用P個梯度相位決策邊界以產生複數個梯度相位決策角度。接著,可依此產生梯度相位角度分佈。例如,可將窗格SW所覆蓋區域中之所有畫素對應的複數個梯度相位決策角度(有P種角度的可能性)進行統計分析,統計當梯度相位決策角度為0(對應梯度相位決策邊界DB1)時的數量,統計當梯度相位決策角度為2π/8(對應梯度相位決策邊界DB2)時的數量,依此類推。最後產生如第8圖所示之梯度相位角度分佈。若梯度相位角度分佈僅包含一個峰度分佈C,處理器11可產生條碼為一維條碼的格式偵測結果,其原理描述於下。由於一維條碼為單一軸向的複數個黑條(Bar)以及白條(Space)所組成,因此其影像的梯度相位角度是單一的角度。在一維條碼未被旋轉的情況下,其梯度相位角度應為π/2。然而,當相機10擷取包含一維條碼的影像時,可能一維條碼的影像會被旋轉。然而,若是旋轉角度為θ,則一維條碼的梯度相位角度應為π/2+θ。因此,在第9圖中,若梯度相位角度分佈僅包含一個峰度分佈C,且峰值PK趨近於Φ,則可判斷掃描的條碼為一維條碼,甚至可以計算出旋轉角度θ為Φ-π/2。
第10圖是梯度相位角度分佈包含兩個峰度分佈C1及C2的示意圖。如前述提及,處理器11可將窗格SW所覆蓋區域中之所有畫素的複數個梯度相位角度,利用P個梯度相位決策邊界以產生複數個梯度相位決策角度。接著,處理器11可依此產生梯度相位角度分佈。例如,處理器11可將窗格SW所覆蓋區域中之所有畫素對應的複數個梯度相位決策角度(有P種角度的可能性)進行統計分析。例如,可依據窗格SW所覆蓋區域中之所有畫素對應的複數個梯度相位決策角度,統計當梯度相位決策角度為0(對應梯度相位決策邊界DB1)時的數量,統計當梯度相位決策角度為2π/8(對應梯度相位決策邊界DB2)時的數量,依此類推。最後產生如第10圖所示之梯度相位角度分佈。若梯度相位角度分佈僅包含兩個峰度分佈C1及C2,則產生條碼為二維條碼的格式偵測結果,其原理描述於下。由於二維條碼為雙軸向的複數個黑以及白色的影像區塊所組成,因此其影像的梯度相位角度是兩個角度。在二維條碼未被旋轉的情況下,其梯度相位角度的集合應包含0以及π/2。然而,當相機10擷取包含二維條碼的影像時,可能二維條碼的影像會被旋轉。然而,若是旋轉角度為θ,則二維條碼的梯度相位角度的集合應包含θ以及π/2+θ。因此,在第10圖中,若梯度相位角度分佈僅包含兩個峰度分佈C1及C2,峰值PK1以及PK2分別趨近於Φ1以及Φ2,且Φ1以及Φ2相差π/2時,則可判斷掃描的條碼為二維條碼,甚至可以計算出旋轉角度θ為Φ1。
第11圖是窗格定位條碼區域的示意圖。當條碼的格式偵測結果產生後,可根據格式偵測結果再次擴張窗格SW所覆蓋的區域至完全覆蓋二值化條碼BBC。擴張方式與第7圖中窗格SW擴張至覆蓋核心條碼區域的方式相同,但是降低灰階值變化次數的預定值至更低的數值,例如3或2。如第11圖所示,若灰階值變化次數的預定值為3,水平掃描線SH1所對應的變化次數為0,水平掃描線SH2所對應的變化次數為2,皆低於預定值,窗格SW便停止往垂直擴張。垂直掃描線SV1所對應的變化次數為2,垂直掃描線SV2所對應的變化次數為2,皆低於預定值,窗格SW便停止往水平擴張,窗格SW即可覆蓋並定位二值化條碼BBC。最後,若是應用上有需要,條碼偵測系統100可以將窗格SW的區間再稍微擴展,以保證可以涵蓋到條碼影像。
第12圖是第1圖之條碼偵測系統執行條碼偵測方法的流程圖。條碼偵測方法包含以下步驟:
步驟S1202: 相機10取得影像IMG;
步驟S1204: 取得影像IMG中每一畫素的水平影像梯度及垂直影像梯度;
步驟S1206: 根據水平影像梯度及垂直影像梯度,產生每一畫素的梯度相位角度及梯度能量強度;
步驟S1208: 將每一畫素的梯度能量強度二值化,以產生二值化影像BIMG;
步驟S1210: 於二值化影像BIMG中產生一窗格SW;
步驟S1212: 於窗格SW內對二值化影像BIMG以N個畫素為間隔的V個垂直掃描線進行垂直取樣,以統計二值化影像BIMG於垂直方向上的V個灰階值變化次數;
步驟S1214: 於窗格SW內對二值化影像BIMG以M個畫素為間隔的H個水平掃描線進行水平取樣,以統計二值化影像BIMG於水平方向上的H個灰階值變化次數;
步驟S1216: 垂直方向上的V個灰階值變化次數是否高於第一預定值,且水平方向上的H個灰階值變化次數是否高於第二預定值?若是,則判定窗格SW所覆蓋之區域為最密集翻轉區域,執行步驟S1220,若否,則執行步驟S1218;
步驟S1218: 移動窗格SW至二值化影像BIMG中另一位置,執行步驟S1212;
步驟S1220: 擴張窗格SW至窗格SW覆蓋核心條碼區域;
步驟S1222: 擷取核心條碼區域中之複數個畫素的複數個梯度相位角度以產生梯度相位角度分佈;
步驟S1224: 根據梯度相位角度分佈,產生條碼的格式偵測結果;
步驟S1226: 根據格式偵測結果擴張窗格SW至窗格SW完全覆蓋條碼。
經由以上步驟,條碼偵測系統100即可準確且快速的在影像IMG中定位條碼BC。
綜上所述,本發明描述了一種條碼偵測方法以及條碼偵測系統。條碼偵測系統可使用相機擷取影像,並用處理器計算影像中全範圍或是特定區域內之每一畫素的水平梯度以及垂直梯度,以產生每一畫素的梯度相位角度以及梯度能量強度。為了增加偵測精準度,系統可以將影像進行二值化處理。隨後,利用間隔取樣的機制以偵測二值化影像之顏色特性,可大幅降低計算複雜度和處理時間。之後,經由移動窗格及二值化影像分析,可定位核心條碼區域以進一步地分析梯度相位角度分佈並根據梯度相位角度分佈產生條碼的格式偵測結果。最終,系統可根據條碼的格式偵測結果進一步定位條碼影像區域。因此,本發明的條碼偵測方法以及條碼偵測系統,除了具有高偵測可靠度外,還具有低運算複雜度以及降低處理時間的優點。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:條碼偵測系統
10:相機
11:處理器
12:記憶體
BC:條碼
A、B:畫素
IMG:影像
R:背景區域
BIMG:二值化影像
BBC:二值化條碼
SH1至SH3:水平掃描線
SV1至SV3:垂直掃描線
SW:窗格
DB1至DB8:梯度相位決策邊界
C、C1及C2:峰度分佈
PK、PK1及PK2:峰值
Φ、Φ1及Φ2:梯度相位角度
S1202至S1226:步驟
第1圖是本發明之實施例條碼偵測系統的示意圖。
第2圖是實施例中取得影像中每一畫素的水平影像梯度及垂直影像梯度的示意圖。
第3圖實施例中是影像二值化的示意圖。
第4圖是實施例中二值化影像中窗格的示意圖。
第5圖是在窗格中進行水平取樣以及垂直取樣的示意圖。
第6圖是窗格的移動示意圖。
第7圖是窗格覆蓋核心條碼區域的示意圖。
第8圖是梯度相位決策邊界的示意圖。
第9圖是梯度相位角度分佈包含一個峰度分佈的示意圖。
第10圖是梯度相位角度分佈包含兩個峰度分佈的示意圖。
第11圖是窗格定位條碼區域的示意圖。
第12圖是第1圖之條碼偵測系統執行條碼偵測方法的流程圖。
S1202至S1226:步驟
Claims (15)
- 一種條碼偵測方法,包含: 一相機取得一影像; 取得該影像中每一畫素的一水平影像梯度及一垂直影像梯度; 根據該水平影像梯度及該垂直影像梯度,產生該每一畫素的一梯度相位角度及一梯度能量強度; 將該每一畫素的該梯度能量強度二值化,以產生一二值化影像; 於該影像中產生一窗格; 於該窗格內將該二值化影像以N個畫素為間隔的V個垂直掃描線進行垂直取樣,以統計該二值化影像於一垂直方向上的V個灰階值變化次數; 於該窗格內將該二值化影像以M個畫素為間隔的H個水平掃描線進行水平取樣,以統計該二值化影像於一水平方向上的H個灰階值變化次數; 若該垂直方向上的V個灰階值變化次數高於一第一預定值及該水平方向上的H個灰階值變化次數高於一第二預定值,則判定該窗格所覆蓋之區域為一最密集翻轉區域; 若該窗格所覆蓋之區域被判定為該最密集翻轉區域,則擴張該窗格至該窗格覆蓋一核心條碼區域; 擷取該核心條碼區域中之複數個畫素的複數個梯度相位角度,以產生一梯度相位角度分佈; 根據該梯度相位角度分佈,產生該條碼的一格式偵測結果;及 根據該格式偵測結果擴張該窗格至該窗格完全覆蓋該條碼。
- 如請求項1所述之方法,其中取得該影像中該每一畫素的該水平影像梯度及該垂直影像梯度,係為利用一水平矩陣模板及一垂直矩陣模板對該影像之該每一畫素的亮度做一卷積(convolution)運算,以產生該每一畫素的該水平影像梯度及該垂直影像梯度。
- 如請求項1所述之方法,其中將該每一畫素的該梯度能量強度二值化,以產生該二值化影像包含: 設定一門檻值;及 比較該門檻值與該梯度能量強度,以將該每一畫素對應至一第一灰階值或一第二灰階值; 其中該第一灰階值大於該第二灰階值。
- 如請求項3所述之方法,其中該二值化後的影像於該垂直方向上的V個灰階值變化次數,係為該二值化後的影像於該垂直方向上,以該V個垂直掃描線進行垂直取樣的V個該第一灰階值與該第二灰階值相互轉換的次數。
- 如請求項3所述之方法,其中該二值化後的影像於該水平方向上的H個灰階值變化次數,係為該二值化後的影像於該水平方向上,以該H個水平掃描線進行水平取樣的H個該第一灰階值與該第二灰階值相互轉換的次數。
- 如請求項1所述之方法,另包含: 若該垂直方向上的V個灰階值變化次數低於一第一預定值及/或該水平方向上的H個灰階值變化次數低於一第二預定值,於水平方向移動該窗格。
- 如請求項1所述之方法,另包含: 若該垂直方向上的V個灰階值變化次數低於一第一預定值及/或該水平方向上的H個灰階值變化次數低於一第二預定值,於垂直方向移動該窗格。
- 如請求項1所述之方法,其中擴張該窗格至該窗格覆蓋該核心條碼區域包含: 沿該水平方向擴張該窗格; 在沿該水平方向擴張該窗格之後,於該窗格之一擴張區域內,統計該二值化影像於該垂直方向上的灰階值變化次數;及 若於該擴張區域內,該二值化影像於該垂直方向上的灰階值變化次數高於一預定值,則再次往該水平方向擴張該窗格。
- 如請求項1所述之方法,其中擴張該窗格至該窗格覆蓋該核心條碼區域包含: 往該垂直方向擴張該窗格; 在沿該垂直方向擴張該窗格之後,於該窗格之一擴張區域內,統計該二值化影像於該水平方向上的灰階值變化次數;及 若於該擴張區域內,該二值化影像於該水平方向上的灰階值變化次數高於一預定值,則再次往該垂直方向擴張該窗格。
- 如請求項1所述之方法,其中根據該格式偵測結果擴張該窗格至該窗格完全覆蓋該條碼包含: 沿該水平方向擴張該窗格; 在沿該水平方向擴張該窗格之後,於該窗格之一擴張區域內,統計該二值化影像於該垂直方向上的灰階值變化次數;及 若於該擴張區域內,該二值化影像於該垂直方向上的灰階值變化次數高於一預定值,則再次往該水平方向擴張該窗格。
- 如請求項1所述之方法,其中根據該格式偵測結果擴張該窗格至該窗格完全覆蓋該條碼包含: 往該垂直方向擴張該窗格; 在沿該垂直方向擴張該窗格之後,於該窗格之一擴張區域內,統計該二值化影像於該水平方向上的灰階值變化次數;及 若於該擴張區域內,該二值化影像於該水平方向上的灰階值變化次數高於一預定值,則再次往該垂直方向擴張該窗格。
- 如請求項1所述之方法,另包含: 設定P個梯度相位決策邊界(Decision Boundary),其中相鄰的梯度相位決策邊界相差2π/P; 將該影像區域中之所有畫素的該些梯度相位角度,利用該P個梯度相位決策邊界以產生複數個梯度相位決策角度;及 根據該些梯度相位決策角度,產生該梯度相位角度分佈; 其中P為大於等於4的偶數。
- 如請求項1所述之方法,其中根據該梯度相位角度分佈,產生該條碼的該格式偵測結果包含: 若該梯度相位角度分佈僅包含一個峰度(Kurtosis)分佈,產生該條碼係為一維條碼的該格式偵測結果。
- 如請求項1所述之方法,其中根據該梯度相位角度分佈,產生該條碼的該格式偵測結果包含: 若該梯度相位角度分佈包含兩個峰度(Kurtosis)分佈,且該兩峰度分佈所對應的兩峰值相位差趨近於π/2,產生該條碼係為二維條碼的該格式偵測結果。
- 一種條碼偵測系統,包含: 一相機,用以取得一影像; 一處理器,耦接於該相機,用以處理該影像,以產生一條碼的一格式偵測結果;及 一記憶體,耦接於該處理器,用以緩存影像處理資料; 其中該處理器取得該影像中每一畫素的一水平影像梯度及一垂直影像梯度,根據該水平影像梯度及該垂直影像梯度,產生該每一畫素的一梯度相位角度及一梯度能量強度,將該每一畫素的該梯度能量強度二值化,以產生一二值化影像,在該影像中產生一窗格,於該窗格內將該二值化影像以N個畫素為間隔的V個垂直掃描線進行垂直取樣,以統計該二值化影像於一垂直方向上的V個灰階值變化次數,於該窗格內將該二值化影像以M個畫素為間隔的H個水平掃描線進行水平取樣,以統計該二值化影像於一水平方向上的H個灰階值變化次數,若該垂直方向上的V個灰階值變化次數高於一第一預定值及該水平方向上的H個灰階值變化次數高於一第二預定值,則判定該窗格所覆蓋之區域為一最密集翻轉區域,若該窗格所覆蓋之區域被判定為該最密集翻轉區域,則擴張該窗格至該窗格覆蓋一核心條碼區域,擷取該核心條碼區域中之複數個畫素的複數個梯度相位角度以產生一梯度相位角度分佈,根據該梯度相位角度分佈產生該條碼的一格式偵測結果,及根據該格式偵測結果擴張該窗格至該窗格完全覆蓋該條碼。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108147519A TWI742492B (zh) | 2019-12-25 | 2019-12-25 | 條碼偵測方法及系統 |
CN202010051373.7A CN113033234B (zh) | 2019-12-25 | 2020-01-17 | 条码检测方法及系统 |
US16/836,846 US10872257B2 (en) | 2018-06-06 | 2020-03-31 | Barcode detection method and barcode detection system for increasing detection efficiency |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108147519A TWI742492B (zh) | 2019-12-25 | 2019-12-25 | 條碼偵測方法及系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202125313A TW202125313A (zh) | 2021-07-01 |
TWI742492B true TWI742492B (zh) | 2021-10-11 |
Family
ID=76458591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108147519A TWI742492B (zh) | 2018-06-06 | 2019-12-25 | 條碼偵測方法及系統 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113033234B (zh) |
TW (1) | TWI742492B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI512640B (zh) * | 2013-02-18 | 2015-12-11 | Icp Electronics Inc | 自動描繪物件邊緣走向之方法 |
TWI676936B (zh) * | 2018-06-06 | 2019-11-11 | 偉詮電子股份有限公司 | 條碼偵測方法及條碼偵測系統 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101908128B (zh) * | 2010-06-01 | 2012-06-20 | 福建新大陆电脑股份有限公司 | Aztec Code条码解码芯片及其解码方法 |
CN104200561B (zh) * | 2014-06-16 | 2017-06-20 | 华中科技大学 | 一种基于纹理特征识别具有字迹污损人民币的方法 |
CN106548107B (zh) * | 2015-09-23 | 2019-03-22 | 株式会社理光 | 条形码定位装置和条形码定位方法、以及条形码读取装置和条形码读取方法 |
US10540532B2 (en) * | 2017-09-29 | 2020-01-21 | Datalogic Ip Tech S.R.L. | System and method for detecting optical codes with damaged or incomplete finder patterns |
CN108961262B (zh) * | 2018-05-17 | 2023-04-18 | 南京汇川工业视觉技术开发有限公司 | 一种复杂场景下的条码定位方法 |
CN109690562B (zh) * | 2018-05-18 | 2022-09-13 | 香港应用科技研究院有限公司 | 由全卷积神经网络加速细胞学图像分类的图像预处理 |
CN109165538B (zh) * | 2018-07-18 | 2021-10-22 | 苏州飞搜科技有限公司 | 基于深度神经网络的条形码检测方法及装置 |
CN110069983A (zh) * | 2019-03-08 | 2019-07-30 | 深圳神目信息技术有限公司 | 基于显示媒质的活体识别方法、装置、终端及可读介质 |
-
2019
- 2019-12-25 TW TW108147519A patent/TWI742492B/zh active
-
2020
- 2020-01-17 CN CN202010051373.7A patent/CN113033234B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI512640B (zh) * | 2013-02-18 | 2015-12-11 | Icp Electronics Inc | 自動描繪物件邊緣走向之方法 |
TWI676936B (zh) * | 2018-06-06 | 2019-11-11 | 偉詮電子股份有限公司 | 條碼偵測方法及條碼偵測系統 |
Also Published As
Publication number | Publication date |
---|---|
TW202125313A (zh) | 2021-07-01 |
CN113033234B (zh) | 2024-02-13 |
CN113033234A (zh) | 2021-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569683B (zh) | 条码检测方法及条码检测系统 | |
US11194984B2 (en) | Localization of machine-readable indicia in digital capture systems | |
CN109255271B (zh) | 用于读取光码的光电代码阅读器和方法 | |
US9785815B2 (en) | Imaging terminal, imaging sensor to determine document orientation based on bar code orientation and methods for operating the same | |
Liu et al. | Recognition of QR Code with mobile phones | |
US20020044689A1 (en) | Apparatus and method for global and local feature extraction from digital images | |
US11151346B2 (en) | Methods and apparatus for decoding under-resolved symbols | |
US6758399B1 (en) | Distortion correction method in optical code reading | |
US6895116B2 (en) | Automatically extracting graphical bar codes | |
EP3462372B1 (en) | System and method for detecting optical codes with damaged or incomplete finder patterns | |
JPH0276087A (ja) | バーコード読み取り技術 | |
JP2007213359A (ja) | 二次元コード検出システムおよび二次元コード検出プログラム | |
CN111783495A (zh) | 一种条形码识别方法、装置、电子设备及存储介质 | |
US9652652B2 (en) | Method and device for identifying a two-dimensional barcode | |
US8915443B2 (en) | Method for decoding a linear bar code | |
US10872257B2 (en) | Barcode detection method and barcode detection system for increasing detection efficiency | |
US20110073655A1 (en) | Blur Resistant Barcode | |
CN107609450B (zh) | 条码辨识方法 | |
TWI742492B (zh) | 條碼偵測方法及系統 | |
CN113312937A (zh) | 条形码识别方法及装置、存储介质、计算机设备 | |
US10303913B2 (en) | Virtual wave decoder for blurred images and subpixel performance | |
JP2023024994A (ja) | 解像度不足のシンボルをデコードするための方法と装置 | |
JPS62162181A (ja) | 光学読取装置 | |
JP7556088B2 (ja) | 1次元光学コードの読み取り | |
Liyanage | Efficient decoding of blurred, pitched, and scratched barcode images |