王 凱,劉 卓,孟憲哲,高 遠,吳 薇,丁雅婕,董陳鑫,陳 浩
(1.西安計量技術研究院,陜西 西安 710068;2.西安理工大學,陜西 西安 710048)
目前,使用液晶顯示屏(liquid crystal display,LCD)顯示七段碼數字的數字指示秤,由于其成本低、結構簡單、易被改裝等特點,導致其成為農貿市場的主要作弊秤。針對這些LCD顯示屏作弊秤進行執法檢測,識別其作弊性,能夠有效維護集貿市場的公平公正。目前,數字電子秤的作弊檢測過程中主要使用人工進行數字的讀取,這種方式效率低、易出錯,利用圖像識別方法進行圖像數字的識別讀取可大大提高數字電子秤讀取的準確性和效率。
目前,針對圖像中的數字進行識別讀取的主要方法有基于支持向量機(support vector machines,SVM)的識別方法[1-3]、基于K最近鄰(K nearest neighbor,KNN)的識別算法[4-6],以及其他機器學習領域方法[7-8]。這些方法主要是通過對數據集的訓練,將其分類能力泛化至新的測試數據來實現分類識別,其學習能力以及泛化能力都比較強,具有高效精準的優點,但需要大量的樣本數據支撐,且易受訓練函數的影響,實現代價較高,應用場景受限。除此之外,穿線法在七段碼數字識別方法中,應用較為廣泛。該方法通過建立數字識別表,對數字特征進行匹配,達到識別的目的。該方法簡單、速度快,但需對具體的七段碼數字字符信息要求完整,并重建字符表。由于數字電子秤的生產廠商較多、其數字顯示不統一,通過采集大量的圖像建立圖像訓練集顯然成本過高,因此,該文針對數字指示秤LCD顯示屏的七段碼數字特性,分析數字圖像特征,基于穿線法數字識別機制,利用數字圖像的邊緣灰度值軌跡,計算七段碼圖像的傾斜角,建立數字識別表,完成對LCD顯示屏數字指示秤的七段碼數字的識別。
為了獲得清晰的數字指示秤LCD顯示屏圖像,需要對電子秤的外殼進行拆除,再利用攝像頭捕獲LCD顯示屏圖像,其內容包括數字顯示區域和電子秤中LCD顯示屏的外圍電子器件部分。數字顯示區域是一塊矩形LCD顯示屏,其上顯示含有小數點的七段碼黑色數字,背景光為不均勻分布的灰色背光。顯示數字由七段發光二極管點亮、呈黑色,數字形態略微傾斜且規范。黑色數字與背景光呈現灰度效果,其顯示效果與光照強度相關,圖像效果如圖1所示。

圖1 數字指示秤LCD顯示屏圖像
針對數字指示秤LCD顯示屏圖像中七段碼數字的提取與準確識別,首先對該圖像進行邊緣檢測與處理,截取LCD顯示屏區域圖像;其次,對顯示屏區域圖像進行灰度化、二值化、圖像去噪等處理,獲得清晰的數字顯示圖像;最后,通過圖像中像素點的灰度值對圖像進行分割處理,再利用七段碼筆畫邊緣處的灰度值計算數字的傾斜角,結合穿線法對數字進行識別處理,最終獲得圖像的數字。
數字指示秤的LCD顯示屏圖像內容包括數字顯示區域和該區域外的數字指示秤其他區域,兩處區域像素灰度有明顯的階躍變化。圖像區域邊緣分階躍性邊緣和屋頂狀邊緣兩種,階躍性邊緣兩邊的像素灰度值具有明顯不同分布,屋頂狀邊緣指邊緣處的灰度值從增加到減少的變化轉折點。數字指示秤的LCD顯示屏圖像中的數字顯示區域和其他區域是典型的階躍性邊緣。為了更加準確地識別出LCD顯示屏中的數字,需要準確地識別出圖像中的階躍性邊緣,提取出LCD顯示屏的數顯區域,用于數字的識別。這里使用基于Sobel的邊緣檢測方法[9-10]進行邊緣檢測。
Sobel算子是一種離散型差分算子,它根據當前像素周圍(上下或左右)相鄰的像素點的灰度值加權差,在該處是否達到極值以確定是否為邊緣來進行檢測。Sobel算子考慮了包括水平、垂直以及兩個對角共4個方向對的梯度加權求和,中心位置數值表示當前像素的位置和權值,是一個3×3的矩陣。
使用該矩陣分別與LCD顯示屏圖像G作如式(1)與式(2)的平面卷積,可得出橫向和縱向的亮度差分近似值,Gx和Gy分別用來表示經橫向和縱向邊緣檢測的圖像灰度值,則有:
(1)
(2)
得到Gx和Gy后,通過式(3)獲得圖像中每一個像素的綜合灰度值,再與設置的閾值相比較,來確定該點是否為邊緣點。
|G|=|Gx|+|Gy|
(3)
令LCD顯示屏圖像中任意坐標(a,b)處的像素值為f(a,b),則該點經橫向和縱向邊緣檢測的灰度值為:
Gx(f(a,b))=f(a+1,b-1)+2f(a+1,b)+
f(a+1,b+1)-f(a-1,b-1)-
2f(a-1,b)-f(a-1,b-1)
(4)
Gy(f(a,b))=f(a-1,b+1)+2f(a,b+1)+
f(a+1,b+1)-f(a-1,b-1)-
2f(a,b-1)-f(a+1,b-1)
(5)
利用上述公式,將f(a,b)的橫向和縱向灰度值結合,得該點的梯度|G(f(a,b))|的值,通過與閾值比較,即可確定(a,b)是否為邊緣點。
之后可提取出LCD顯示屏的數顯區域,用于進一步的處理。
邊緣檢測后提取到的LCD數字顯示區域圖像由于光照不均勻,導致圖像的顏色飽和度和亮度不均,不能準確反映圖像的形態特征,不利于對圖像中黑色七段碼數字的識別,影響圖像中數字的識別結果。因此,需要對圖像進行進一步的灰度化和二值化處理,以獲得更加明顯的色差圖像。
邊緣檢測后提取到LCD數字顯示區域圖像為RGB三通道彩色圖像,需要將R(紅)、G(綠)、B(藍)三個分量的值灰度化,轉換為同一個灰度值Gray,這里采用加權平均法對圖像的每一個像素進行灰度化[11],如式(6):
Gray=0.299*R+0.587*G+0.114*B
(6)
灰度化后的圖像減弱了不均勻光照對圖像識別的影響,但導致了LCD顯示屏中的七段碼數字色彩反差不明顯。這里采用OTSU大津法[12-13]對圖像進行二值化處理,增強圖像中七段碼的顏色反差程度。
設圖像G的數字顯示部分的前景色與背景色的分割閾值為T,根據T將LCD顯示屏圖像中的像素點劃分為前景色和背景色兩部分,像素點數量分別為N0和N1,其在整幅圖像G中的比例分別為ω0和ω1,平均灰度為μ0和μ1,則ω0+ω1=1,μ0+μ1=1。令圖像G尺寸為M×N,則N0+N1=M×N,整體灰度值為μ,兩部分方差為g,則有:
g=ω0ω1(μ0-μ1)2
(7)
其中,
ω0=N0/(M×N)
(8)
ω1=N1/(M×N)
(9)
μ=μ0ω0+μ1ω1
(10)
通過遍歷圖像G中的像素,可確定閾值T,使得方差g最大,即此時圖像的二值化效果最好。那么,LCD顯示屏圖像G任意像素(a,b)處的灰度值Gray(a,b)可二值化為灰度值Gray'(a,b),即:
(11)
二值化后的LCD顯示屏圖像G中的數字呈白色,背景呈黑色,數字與背景色黑白分明,有利于圖像中的數字識別。
經過二值化處理后的LCD顯示屏圖像,由于包含了較多白色顆粒噪點,使得圖像背景不夠純凈,且數字的邊緣會出現斷裂情況,影響了數字識別,因此,需要對LCD顯示屏圖像進行進一步的形態學處理以消除圖像背景中的白色噪點。這里使用開運算對圖像進行形態學處理,包含腐蝕和膨脹兩種組合操作[14]。具體方法如下:
腐蝕:選定一個3×3的矩陣作為結構元素B,用結構元素B依次遍歷二值化處理后LCD顯示屏圖像G,以B的中心點為中心,檢驗圖像G中在B周圍的像素是否與結構元素完全重合。若沒有,該點像素值則被設為0。
膨脹:用結構元素B依次遍歷二值化處理后LCD顯示屏圖像G,檢驗B是否與屏幕圖像G有所重疊,若有,則將該點像素值設為255。
通過開運算,有效地去除了LCD顯示屏圖像中孤立的噪點,同時在一定程度上彌補了數字邊緣的缺失和斷裂,得到一個清晰度高的屏幕圖像。
由于圖像中的小數點位置固定,為避免小數點對后續圖像數字識別過程的影響,將腐蝕掉圖像中的小數點。
為了對圖像中的數字進行識別,首先對圖像中的數字區域進行分割操作,將數字字符區域分割為獨立的數字圖像。具體分割方法如下。
對圖像G從上到下按行進行像素點遍歷,記錄每行中白色像素點的灰度值和,形成N個白色像素點灰度和數集合R。同理,對圖像G從左至右按列進行像素點遍歷,記錄每列中白色像素點的灰度值和,形成M個白色像素點灰度和數集合C。設有閾值rt,依次掃描集合R,若有ri>rt,1≤i≤N,ri∈R,則i為數字區域的上邊界高度值;繼續掃描集合R,若rj>rt,1≤j≤N,i 經過數字分割處理后,得到多個獨立數字圖像。數字指示秤的數字為七段數碼管式數字,筆畫相對較直,對于圖像中的數字識別傳統的穿線法可用于識別規則的七段碼數字[15]。然而數字指示秤的七段數碼管式數字在垂直方向上具有一定的傾斜角,導致數字在識別過程中產生混亂,文中針對此問題,利用數字圖像的邊緣灰度值軌跡,對傾斜數字進行修正,減少數字的傾斜對識別過程的干擾。 設數字圖像的高度為h,橫向數碼管寬度為l,傾斜角為θ,在圖像的h/4和3h/4處,分別繪制兩段l/2長度的線段,在過圖像中心的l/2處,分別繪制垂直高度為h/4,h/2,h/4,傾斜角為θ的線段,形成七條相交的線段,如圖2所示,其編號為七段數碼管的編號。 圖2 穿線法原理 通過線段的繪制,可得線段與圖像中數碼管前景色的重疊部分,這里使用線段與數碼管前景色重復的像素點數與整個線段的像素點的比例,判斷該段數碼管是否在圖像中顯示。 設線段與數碼管前景色重疊部分的重疊比例為p,s為判斷相應的數碼管是否顯示的比例閾值,若有p>s,則該段數碼管被點亮,即該段數碼管可被識別,可識別標識flag被置為true(1),否則置為false(0)。這里給出不同各段數碼管閾值s取值,編號為1-6的數碼管的閾值為40%,7號數碼管的閾值為20%。 對于數字的識別,這里使用數字圖像的寬度和數碼管狀態組合相結合的方法進行數字的確定。經過數字圖像的分割,單個數字的圖像寬度w與橫向數碼管寬度l、高度h的關系,有以下幾種情況: (1)若w=l+h*tanθ,數字圖像中包含數字0、2、3、5、6、8和9; (2)若w=l+h/2*tanθ,數字圖像中包含數字4; (3)若w=l,數字圖像中包含數字7; (4)若w 在情況(1)中,可根據每個數字的不同編號的數碼管狀態組合可識別相應的數字,其對應關系見表1。 結合數字指示秤LCD顯示屏的七段數碼管式數字的傾斜特點,這里使用以下方法進行傾斜角θ的估算。 在圖2中,數字8的七段碼圖的編號①、②與④、⑤所在的數碼管線段為平行的直線,過編號③與⑥的數碼管所在的直線,分別過其l/2處的點。以其圖像的左下角處為原點,建立如圖2的坐標系。 為了準確地繪制垂直方向上的傾斜線,需要準確獲得數字的寬度l和傾斜角θ。 表1 狀態與數字對應關系 l值的計算過程如下: (1)分別在圖像h/4處和3h/4處對圖像的像素點進行遍歷,記錄第一個與最后一個灰度顏色Gray(i,j)≠0的坐標點,獲得坐標點(x1,h/4)、(x2,h/4)、(x3,3h/4)、(x4,3h/4); (2)通過坐標點可以計算數碼管的寬度分別為l1=x2-x1,l2=x4-x3; (3)則數碼管的寬度l=(l1+l2)/2。 由此可獲得圖像寬度l的值。 傾斜角θ的計算從橫坐標l處根據像素點灰度值開始掃描筆畫在其縱坐標處的邊緣,記錄筆畫邊緣軌跡,并計算其斜率。計算過程,忽略0到l處的坐標點。 根據以上圖形,計算過程如下: (1)令i=l,j=0,即從坐標l處,開始掃描坐標(i,j)處的灰度值Gray(i,j),l≤i≤w,0≤j≤h; (2)若坐標(i,j)處的灰度顏色Gray(i,j)=0,則令j=j+1;若Gray(i,j)≠0,記錄坐標(i,j),(i,j)∈C,C為坐標集合,令i=i+1; (3)重復步驟(2),直到i=w; (4)獲得坐標集合C; (5)根據集合C,獲得該集合中坐標點的分布,通過坐標點進行線性擬合,或者直線y=kx+b,其斜率為k; (6)根據斜率k,可計算傾斜角θ。 獲得傾斜角后,在圖2中進行穿線法線段與數字的識別。 對于小數點的識別,主要考慮了數字電子秤的數字顯示特性,其小數點位置固定,因此,經過數字識別,在右側第三位數字前加小數點即可。 為了驗證上述數字指示秤LCD顯示屏數字識別方法的可行性,實驗搭建了作弊數字電子秤檢測平臺,對檢測平臺所拍攝的數字指示秤LCD顯示屏的圖像根據上述方法進行數字識別檢測。實驗所用PC機環境為:CPU i5-8300H,RAM 8G,Microsoft Windows 10操作系統,數字指示秤型號為津鷹219,其拍攝的原始LCD顯示屏圖片如圖1所示。 對圖1中的圖像進行處理和邊緣檢測,獲得圖像中的邊緣部分,LCD屏幕的顯示區域為規則的矩形。經圖像裁剪后,經過灰度化、二值化、圖像形態學處理,后進行數字分割,分別按行和列進行像素的灰度值之和統計,得到的灰度值之和的分布情況如圖3所示。 圖3 灰度值和分布 圖3中的實線條表示水平投影,其在0~24像素點的灰度值和為0,表明此部分為圖像的上邊界的黑色區域,24~145之間為數字顯示區域,其最低值出現在像素點90處,灰度值和約為12 000,145~165為圖像的下邊界的黑色區域。因此,上下部分的圖像分割的閾值設置為小于12 000,即可分割上下邊界的黑色部分,分割效果如圖4(a)所示。 圖3中的虛線條表示垂直投影,其在0~180的灰度值和為0,表明此部分為圖像左側黑色部分,180~460處為灰度值波動部分,為數字顯示區域,大于460像素部分為圖像右側黑色部分,為需要分割部分。在約210處,有一處波峰,灰度值約為2 000,表明此處為小數點顯示部分,因此對垂直方向的切割閾值選在小于2 000,避免分割小數點部分,分割效果如圖4(b)所示。 (a)水平分割 數字部分的圖像分割完后,利用3.2節的數字識別方法對數字進行識別。首先計算橫向數碼管寬度l和傾斜角θ。這里使用數字0的圖片進行計算。 分別在圖像h/4處和3h/4處對圖像灰度值進行遍歷,灰度值軌跡如圖5所示。 圖5 灰度值軌跡 圖5中顯示了在圖像h/4處和3h/4處的灰度值軌跡,可以準確地獲得兩處數字的寬度,經計算,l=49。對數字0的圖片從l處開始統計其灰度值為255的坐標點,其坐標分布如圖6中的點,通過這些分散點擬合直線如圖6中的虛線,經計算得傾斜角θ=5.7°。 圖6 斜率計算示意圖 通過以上過程,即可識別圖像數字為1.240。 為了進一步分析基于傾斜角穿線法的數字識別算法(threading method with tilt angle,TMTA),選取常用的KNN與SVM方法進行對比,從識別準確率與識別速度方面進行算法的比較分析。實驗隨機采集從100到1 000張圖片,使用上述三種方法進行數字識別,三種方法的識別率與識別速度如圖7和8所示。 圖7 識別率對比 從圖7可以看出,TMTA方法與KNN在識別率方面基本相同,保持在95%左右,而SVM方法準確率在92%左右。這是由于KNN和SVM方法都需要大量的樣本進行訓練,以提高識別誤差,樣本的質量以及選用的訓練方法參數等直接決定了識別率,其識別結果不穩定。而在數字指示秤的作弊檢測過程中又無法保障樣本的質量,因此KNN和SVM的識別結果存在偶然性。 從圖8可以看出,TMTA方法和SVM的方法在識別速度上處于較低的水平,而KNN方法識別速度較大,這與KNN方法在識別過程中需要進行大量計算相關。綜合圖7和8的結果,表明文中的TMTA在兼顧識別率和識別速度方面優于KNN和SVM方法。 圖8 識別速度對比 論文分析了數字電子秤LCD顯示屏圖像數字的特性,利用數字圖像的邊緣灰度值軌跡,對數字傾斜角進行計算,快速獲得整體圖像中數字的傾斜角,引入穿線法的識別過程中,使得數字電子秤LCD顯示屏圖像數字識別率得到提高。 實驗結果表明,該方法能夠有效識別數字電子秤的LCD顯示屏圖像數字,且在綜合考慮識別率和識別速度方面有一定的優勢,為作弊數字電子秤的準確檢測提供了可靠的技術基礎。3.2 數字識別


4 實驗結果與分析






5 結束語