曹思佳,代揚,余洪山,2?,李斐,孫煒
(1.湖南大學電氣與信息工程學院/機器人視覺感知與控制技術國家工程實驗室,湖南長沙 410082;2.湖南大學深圳研究院,廣東深圳 518057)
機械表作為一種具有擺輪游絲振蕩系統(tǒng)的計時工具,它的走時精度每時每刻都在變化之中,根據機械手表評價細則,高精度的機械手表需滿足《高精度機械手表SQL/HSTU 009-2017》[1]標準才可獲得認證.為了保證手表的走時精度,每個手表出廠之前都需要進行16 天的走時測試,即在連續(xù)16 天的走時中,每天通過讀取手表與標準計時的走時差來計算手表精度,利用手表在不同位置走時的不同的精度誤差,可以糾正手表的快慢趨勢.目前這一步驟主要用人工方式來操作,該方式每天僅能檢測200~300 只成表,同時檢測的準確率易受工作人員的熟練程度和工作狀態(tài)影響,效率低,人力成本高.而機械手表作為一種中高端消費型的手表,它的市場份額隨著我國城鎮(zhèn)居民人均可支配收入的持續(xù)增長,人們的消費觀從實惠型到享受型的轉變而逐漸提高.根據預測,截止到2020 年,中國家庭的年均可支配收入水平將大幅提升,這將帶動中、高端腕表銷售增長.未來幾年鐘表行業(yè)將進入平穩(wěn)快速發(fā)展階段,對高精度的機械手表的需求量也將越來越高.所以,研究一種快速、精確的自動化機械表讀數檢測技術能夠大大提升企業(yè)的生產速度,提高精度機械手表的出品量.
目前,國內外的研究主要集中在儀表識別上,Sablatnig等人[2]首次用hough 變換實現了水表的讀數識別,Kyong-Ho Kim等人[3]提出了用閾值與區(qū)域分割相結合的方法來分割指針區(qū)域,確定指針讀數,這種方法受光照的影響較大.佘世洲等[4]利用ORB算法對表盤區(qū)域進行傾斜校正,通過計算表盤刻度線向心性得到指針旋轉中心,該方法只適用于刻度為線段的儀表.華雪[5]利用輪廓跟蹤法檢測表盤輪廓,采用LSD算法檢測刻度線段,根據指針到刻度線的距離來計算指針讀數,這種方法要求刻度線均勻分布,不適用于復雜的刻度線.湯亮等[6]利用邊緣提取得到表盤輪廓,將圓弧形的表盤轉換成矩形,通過圖像拼接處理構建無指針圖像,來確定指針位置和儀表讀數.該方法不適用于多指針的儀表.上述方法均受儀表指針和刻度的限制,不適宜用于機械表.胡彬[7]等人提出了基于KAZE 特征關鍵點的表盤區(qū)域匹配方法,采用概率霍夫變換擬合直線,根據角度計算出指針讀數.該方法主要用于室外環(huán)境遠距離下的儀表讀數識別,而機械表的檢測主要工作在室內環(huán)境.李巍等[8]使用機器學習提取圖像的HOG 特征,通過SVM 分類器對窗口是否含有儀表做判斷.利用圖像預處理,霍夫變換檢測指針位置.該方法對參數調節(jié)和函數的選擇敏感.侯忠輝等[9]利用改進的雙閾值霍夫變換突出圖像特征信息,確定指針所在的區(qū)域,此類方法參數較多,較為復雜.孫慧媛等[10]利用二維碼與儀表之間先驗的幾何位置關系快速地提取圖像中表盤所在的區(qū)域,根據儀表的類型選擇對應的圖像處理算法.這種方法的抗干擾能力不強,在保證儀表識別的基礎上還得保證二維碼識別的準確性.
上述各方法適用于單指針式儀表,由于機械表的刻度圖案復雜且指針種類眾多使得指針重合的情況較為常見,針對此類現象,本文設計了一個專用于采集機械表圖片的實驗臺和用于機械表圖像處理的軟件系統(tǒng),可以自動識別出機械表的讀數并且將機械表讀數存入數據庫,經過16 天的走時測試后,通過計算機械表的讀數偏差,判斷該機械表是否達到了高精度機械表的要求.
圖1 總體方案圖Fig.1 Entire scheme
總體方案圖如圖1 所示.第一步,在圖像采集模塊中,利用搭建的實驗平臺對機械表圖像進行采集,然后將采集的圖片送入測量線提取模塊.第二步,在測量線提取模塊中,依次進行指針和各區(qū)域提取、表盤中心提取以及指針中心線檢測等實驗步驟.在對指針和各區(qū)域進行分割提取時,由于指針的多樣性和重疊性,利用傳統(tǒng)的分割方法較為困難,所以本文在mask-rcnn[11]的基礎上進行改進,對指針和各區(qū)域進行了分割.在確定表盤中心時,利用canny 算子對表盤進行邊緣提取,并且確定各連通域的質心,根據各質心到12 點位與6 點位之間連線中點的距離關系,篩選出刻度質心,然后用刻度質心擬合表盤內圓,從而確定表盤中心的位置.最后使用RANSAC結合最小二乘距離法提取了指針的中心線.其中,12點位中心和表盤中心的連線為基準測量線,指針中心線為指針測量線.第三步,在讀數測量模塊中,通過計算指針測量線相對于基準測量線之間的旋轉角來計算機械表讀數,同時為了提高讀數測量的精確度,本文根據各指針之間的角度關系,提出了誤差校正原則.
采集圖片的實驗臺由相機、鏡頭,光源組成.采集圖片時,將機械表置于表盒內,將表盒固定在卡座上,用光源進行照明,由相機進行拍照.相機為500萬CMOS 相機,鏡頭為百萬像素,鏡頭距離表盤為340 mm,光源距離表盤110 mm,打光主視圖如圖2所示.本文中用到的機械手表為白表盤,為了使指針和背景分離,增強指針與表盤之間的對比度,避免反光,需要進行打光測試.由于方形白色光源的漫射光可以從低角度向工件的四個方向照射,避免使用低角度環(huán)形光時產生的不均勻照明,同時可以檢測角輪廓和防止眩光.所以本文選擇了方形白色光源來對機械表盤進行打光,此時指針與背景的對比度最明顯.現場打光圖如圖3 所示.
圖2 打光主視圖Fig.2 Lighting main view
圖3 打光現場圖Fig.3 Lighting scene
2.2.1 指針區(qū)域提取
在指針區(qū)域的提取方面,陳彬等人提出了中心投影法[12],即通過指針圖像向中心點投影確定指針位置.李治瑋等人提出了最大灰度相減法[13],對兩幅圖像運用灰度比較法獲得一個無指針的表盤指針參考圖像,將實測圖像與參考圖像作對比獲得無表盤的指針圖像.戴亞文等人提出了基于灰度信息的多特征模板匹配法[14],在步長法、圓周灰度檢測法、哈夫變換法的基礎上進行模板匹配來尋找指針.Sablating 等人[15]提出了儀表加壓法,通過加壓使得指針發(fā)生偏轉,從幾何特征檢測處置指針位置.Belan.P.A[16]等采用積分法標定指針位置.
中心投影法的使用前提是表盤中心必須定位準確,否則會極大影響讀數精確度.最大灰度相減法的先驗條件多且嚴格,抗干擾能力不強.模板匹配法在復雜的儀表表面使用時需要分別使用不同的模板,較為復雜.幾何特征法和積分法在光照較為復雜的情況下均不適用.現有的指針定位技術大多都是基于這些方法上的改進,或聯合使用.
機械表由于款式和設計的差別,指針的類型和表盤花紋多樣,當指針位于不同位置時,花紋對指針的干擾各不相同.機械表中多個指針的存在使得指針重合的情況較為常見,采用上述指針定位的方式,難以準確地定位手表指針,為此本文引入卷積神經網絡對指針區(qū)域進行分割,由于mask-rcnn 方法運算速度快,識別精度與目標切割效果較好,具有保持特定目標良好的輪廓信息的作用,因此本文在mask-rcnn 的基礎上進行了指針的分割提取.
數據集的制作上,本文用Labelme 軟件對分割區(qū)域進行標記,所述標記為用多邊形框框選出機械表中需要分割的指針和刻度,得到掩膜文件.分割的種類為1+5 類,分別為背景、時針、分針、秒針和12點位、6 點位.機械表圖片大小設置為512*512,在GTX1060GPU 上進行訓練.訓練集為不同位置,不同光照條件下采集的306 張機械表圖片和相對應的掩膜標記,測試集為76 張未標記的機械表圖片.訓練向著減小損失的方向進行.訓練完畢后,利用訓練好的最優(yōu)模型進行了各區(qū)域的分割提取.
本論文在FCN[17]分支中,將原有的4 層卷積神經網絡改成了8 層卷積神經網絡,并且將第三層和第八層提取到的特征進行了融合,使得最后一張?zhí)卣鲌D同時具備了底層的細節(jié)特征和高層的語義特征,改進之后的網絡與原網絡對比如圖4 所示.如表1 所示,經過測試,改進的FCN 分支與不同的底層網絡結合均增加了分割的準確率.
圖4 改進的mask-rcnn 網絡圖Fig.4 Improved mask-rcnn
表1 mask-rcnn 改進效果Tab.1 The effect of improved mask-rcnn
圖5 中,(a)(b)(c)(d)機械表均以12 點位、3點位、6 點位、9 點位依次朝上擺放,圖(e)(f)(g)為光照強度依次遞減的分割結果,圖(h)為指針重合時的分割結果,圖(i)(j)(k)(l)是用模板匹配法的分割結果,所用檢測圖片為圖(e)(f)(g)(h)中機械表的灰度圖.從圖5 可以看出,文中所述方法可以分割出不同光照強度和不同位置下的指針區(qū)域,而傳統(tǒng)的模板匹配法漏檢、錯檢概率較高.
圖5 區(qū)域分割圖Fig.5 Region segmentation map
2.2.2 表盤中心的確定
首先,對表盤進行邊緣檢測,找到各連通域,其次,確定各連通域的質心.刻度線的質心離表盤中心的距離應該大于等于12 點位與6 點位連線的中心,并且差值不超過15 個像素值.根據該條件找出刻度質心,各刻度質心的擬合圓應為表盤內圓,擬合圓心為表盤中心.
各區(qū)域質心的確定如下.
首先計算各連通區(qū)域的零階和一階矩.
零階矩:
只有0 或1 兩個取值,當前點為黑色時取0,為白色時取1.
一階矩:
然后確定區(qū)域質心為:
擬合圓和圓心如圖6 所示.
圖6 表盤中心的確定Fig.6 Determination of the center of the dial
2.2.3 中心線提取
為了得到指針所在的直線,在分割出來的指針區(qū)域上進行了中心線的提取.常見的指針均為直線型指針,可以用hough 變換和最小二乘法來檢測指針直線.由于機械表的指針較粗,且?guī)в幸欢ǖ幕《龋琱ough 變換法和最小二乘法均不適用.由于指針都是對稱的,本文提出了用RANSAC 結合最小二乘距離法[10]來進行中心線的擬合.對于對稱圖形上的各點,離中心線的距離應該是相等的,為了得到中心線的方程,需要使各點離中心線的距離的平方和最小.最小距離直線擬合法實際上是對最小二乘法的改進,最小二乘法的擬合原則是以殘差的平方和最小,即使得各點的縱坐標與直線上對應的縱坐標之差的平方和最小.
最小二乘樣本回歸模型:
所以
其中ei為樣本(Xi,Yi)的誤差.
平方損失函數為:
最小距離直線擬合法將平方損失函數改為點到直線的距離之和的平方:
所以,可以通過最小化Q 來確定這條直線.
由于最小二乘法對異常值比較敏感,為了減小噪聲的干擾,采用RANSAC 算法對最小距離直線擬合法進行改進.RANSAC 通過反復選擇數據中的一組隨機子集來達成目標.被選取的子集被假設為局內點,局內點為適應當前直線模型的數據,能近似地被當前直線模型所通過.中心線的檢測步驟如下:
1)用假設的局內點去擬合直線;
2)用直線模型去測試其它點,如果某個點也在直線上,則該點也是局內點;
3)如果有足夠多的點被歸類為假設的局內點,那么估計的模型就足夠合理;
4)再用所有假設的局內點去擬合直線,得到新的直線方程;
5)最后,通過估計局內點和模型的錯誤率來評估直線;
6)上述過程重復執(zhí)行,直到找到最好的中心線.
設置生成模型所需的最少樣本數為50,最大迭代次數為1 000.
圖7 中,圖(a)為Hough 直線檢測檢測到的錯誤中心線,圖(c)為在擬合較粗指針中心線時,最小二乘法和RANSAC 法的錯誤擬合直線.圖(b)(d)為RANSAC 最小二乘距離直線擬合的中心線圖.
圖7 各測量線擬合圖Fig.7 Fitting each measurement line
可以看出,文中所述方法可正確擬合指針中心線,擬合出的測量線如圖7(b)所示,圖中12 點位中心與表盤中心的連線為基準測量線,各指針中心線為指針測量線.
2.3.1 指針旋轉角計算
指針的方向由指針的中心相對表盤中心的位置來確定.
為了計算讀數,需要得到基準測量線(以下簡稱p1)與指針測量線(以下簡稱p2)之間的旋轉角φ,如圖8 所示,該旋轉角指的是從向量p1開始,順時針旋轉到向量p2時,所轉過的角度,范圍是0~360°.
圖8 旋轉角計算Fig.8 Rotation angle calculation
首先求出兩向量的夾角:
根據兩向量的叉乘,判斷兩向量的位置關系.
若p1×p2<0,則p2在p1的順時針方向,旋轉角即為夾角θ.
若p1×p2>0,則p2在p1的逆時針方向,旋轉角即為360°-θ.
若p1×p2<0,則p1與p2共線,同向時旋轉角為0°,反向時旋轉角為180°.
2.3.2 讀數計算
機械表的讀數與指針的位置和12 點位的位置相關,本文通過計算指針中心線相對于基準測量線的旋轉角來計算指針讀數.角度示意圖如圖9 所示.
角度與讀數的換算關系如下:時針每走360°,用時12 h,分針每走360°,用時60 min,秒針每走360°,用時60 s.所以時針的走速為30°/h,分針的走時為6°/min,秒針的走速為6°/s.已知旋轉角,可求得對應的時間如下:
式中:h、m、s 分別為時針、分針、秒針的讀數,單位分別為h、min、s;φh、φm、φs分別為時針、分針、秒針相對于基準線的旋轉角,單位為(°).
圖9 角度示意圖Fig.9 Angle diagram
2.3.3 誤差校正
機械表盤中,分針每秒走的度數為時針每秒走的度數的12 倍.
時針走6°時,分針走了72°,分針走6°時,秒針走了360°.
誤差校正原則設定如下:
式中:hr、mr為指針超過上一刻度的角度數.
當hr≥24 時,分針的角度應該在288°與360 度之間,如果此時測得的分針角度在0°與120°之間,則時針讀數加1;
當hr≤6 時,分針的角度應該在0°與72°之間,如果此時測得的分針角度在270°與360°之間,則時針讀數減1;
當mr≥5 時,秒針的角度應該在300°與360°之間,如果此時測得的秒針角度在0°與60°之間,則分針讀數加1;
當mr≤1 時,秒針的角度應該在0°與60°之間,如果此時測得的秒針角度在300°與360°之間,則分針讀數減1.
圖10(a)(b)(c)(d)中的機械表均以12 點位、3點位、6 點位、9 點位依次朝上擺放,(e)(f)(g)(h)為光照強度依次遞減的機械表圖片.從圖10 可以看出,本文所用方法具有良好的適用性,能識別出各類光照、各個位置下的表讀數.
圖10 讀數測量效果圖Fig.10 The effect of reading measurement
圖11(a)(b)為統(tǒng)一光照條件下的同一機械表盤圖,圖(a)為彩色圖,圖(b)為灰度圖.圖(a)為采用本論文所述方法檢測的指針重合的機械表測量結果,圖(b)為采用傳統(tǒng)模板匹配法測量的機械表讀數.可以看出,本文所述方法準確地測量出了機械表的讀數,而傳統(tǒng)模板匹配法由于未找到重合的時針和分針,導致讀數出錯.
圖11 讀數測量對比圖Fig.11 Reading measurement comparison
為了保證機械表的精度,每個機械表需要經過16 天的走時測試,每天同一時刻對機械表的讀數進行測量,表2,表3,表4 分別列出了第1 天,第2 天,第8 天的測量結果,將得到的讀數存入數據庫中,與標準計時做對比,得到日差,根據《高精度機械手表SQL/HSTU 009-2017》計算各指標,滿足各指標要求的即為精密手表.
表2 第1 天測量結果Tab.2 Measurement results of Day 1
表3 第8 天測量結果Tab.3 Measurement results of Day 8
表4 第15 天測量結果Tab.4 Measurement results of Day 15
表5 為經過16 天的走時檢測后,各精度指標的計算結果.可以看出1 表、2 表、3 表均為不合格機械表.文中所測機械表均為一類機械表,在對其他類別機械表進行精度測量時,可在本文數據集上加以擴充進行測量.
表5 各精度指標的計算結果Tab.5 Calculation result of each precision index
本文創(chuàng)新性的將深度學習方法運用在機械表的走時檢測中,相比于傳統(tǒng)的模板匹配法,效果更優(yōu)良,同時,根據12 點位和6 點位的中點位置,篩選出刻度質心,擬合出表盤內圓,準確地確定了表盤中心,并且在中心線的擬合上,用RANSAC 對最小距離直線擬合法進行了改進,最后針對機械表的讀數測量提出了誤差校正原則,在一定程度上降低了誤差,提高了精度.