許立輝,楊開元,徐東東
(中核智能安防科技(西安)有限公司,西安 710061)
近年來,基于傳統(tǒng)模式識別與深度學習方法[1]的計算機視覺相關技術(shù)得到了長足發(fā)展。雖然基于深度模型的方案得到了更加廣泛的關注,但是深度模型在實際應用中往往依賴高性能的計算平臺與大規(guī)模高質(zhì)量的標注數(shù)據(jù)才能取得良好的實現(xiàn)效果。此外,深度模型因其推理過程的黑盒子屬性,在應用中還往往面臨可解釋性差的問題。因此,在計算資源相對有限、數(shù)據(jù)收集與標注成本昂貴或者場景多樣性有限等實際應用中,基于傳統(tǒng)計算機視覺的方法以其效率高、實現(xiàn)簡單以及良好的可解釋性等優(yōu)點,仍然是智能儀器儀表系統(tǒng)的流行方案,方便并廣泛應用在工業(yè)視覺、公共安防與自動駕駛等實際應用中,是視覺自動化系統(tǒng)的基礎模塊之一。
指針式儀表作為一種測量工具,具有結(jié)構(gòu)簡單、使用方便、可靠性高、價格低廉等優(yōu)點,在工業(yè)生產(chǎn)與生活日用中得到了廣泛的應用,比如電力系統(tǒng)、石油化工及鐵路系統(tǒng)等行業(yè)。傳統(tǒng)的指針式儀表讀數(shù)獲取方式主要依靠人工目視測量,這種方法費時費力,自動化程度低,工作量大,且容易受到人為因素影響,效率低,誤報率高,難以滿足實際生產(chǎn)和工作需要。因此,人工判讀來識別指針式儀表的方法受到了巨大挑戰(zhàn),亟需研發(fā)儀表自動化識別系統(tǒng),在讀表過程中盡量減少或完全消除人為因素,以實現(xiàn)高效的指針式儀表自動化識別。
通常,指針式儀表示數(shù)識別系統(tǒng)包含圖像采集系統(tǒng)和指針式儀表自動化識別算法,后者為此系統(tǒng)的核心,主要由儀表盤定位模塊、指針定位模塊與儀表示數(shù)識別模塊等3個部分組成。其中,表盤定位模塊主要負責通過計算機視覺技術(shù)在圖像中精確找尋儀表盤的位置區(qū)域;指針定位模塊則主要是在表盤定位模塊輸出的位置區(qū)域內(nèi),通過圖像處理或機器視覺技術(shù)確定儀表刻度與指針的相對位置進而確定指針位置,或者直接利用指針特征確定指針位置;而儀表示數(shù)識別模塊則是將通過預設刻度或者OCR等方法將指針位置、角度等轉(zhuǎn)換為明確的指針讀數(shù),進而輸出最終的儀表示數(shù)識別結(jié)果。
目前,國內(nèi)外相關領域?qū)τ谥羔樖絻x表的智能自動化識別做出了大量的研究,取得了一定的成果?,F(xiàn)有研究中采用的方法大體包括Hough相關算法[2-8]、中心投影法[9]、基于深度模型的方法[10]等。Hough直線變換法通常是在對儀表盤圖像進行二值化后,采用Hough變換來定位指針直線。其中,相關研究主要包括:李金彪等[2]提出了一種基于Snake算法的自動識別方法。該方法由Hough變換粗定位圓形特征、Snake算法精確定位圓形特征與Hough變換檢測直線特征等3個主要算法流程構(gòu)成,比較適合于恒定光照等場景變化因素較少的儀表指針檢測應用。此外,Han等[3]提出一種基于改進Hough變換的儀表識別方法。該方法首先通過自適應中值濾波與二值化方法對儀表圖像進行預處理,然后使用改進的Hough變換提取指針直線角度讀取示數(shù)。類似地,Yue等[4]也提出了一種基于Hough變換自動儀表讀數(shù)方法。該方法通過測量指針直線與零刻度直線的夾角來計算儀表示數(shù)。更近一步地,張永強等[5]提出了基于收斂映射CM-Hough變換進行指針檢測的算法。該方法直接利用Hough變換的檢測結(jié)果來計算指針位置。與Hough相關算法不同,中心投影法[6]則是采用Hough變換圓檢測和para空間均值圓心的方法來確定儀表盤的圓心,然后基于傳統(tǒng)中心投影法的雙向掃描求取均值確定角度的算法,并應用角度法計算出儀表指針讀數(shù)。該方法實現(xiàn)復雜,計算量較大,不適用于實際的工程應用。與Hough相關算法和中心投影法采用傳統(tǒng)模式識別技術(shù)進行指針儀表識別有所不同,基于深度模型的方法顧名思義是采用深度模型的識別方法。李金紅[10]等在指針式儀表識別系統(tǒng)中,率先采用了基于深度目標檢測Fast-RCNN算法[11]來直接定位指針的目標候選框,并據(jù)此裁剪得到指針圖像,然后計算指針示數(shù)。與前述兩種方法相比,該方法具有更緊湊的端到端推理優(yōu)勢,在大規(guī)模高質(zhì)量標注數(shù)據(jù)下具有檢測精度更佳的潛力。然而,正如上文所述,該方法基于深度檢測模型,在具體實現(xiàn)過程中需要采集大量包含指針定位框信息的儀表圖像,用于訓練深度模型。因此,在實現(xiàn)中更為復雜,對計算資源的要求也更高。此外,在數(shù)據(jù)標注有限的條件下,該方法對于光照變化大、有陰影干擾的環(huán)境,圖像不清晰的情況下,識別效果并不理想。綜上,現(xiàn)有儀表識別方法與系統(tǒng)仍無法有效兼顧通用性、復雜性與準確性,這在一定程度上限制了在實際場景中的應用。
為此,本文針對標度分布均勻的指針式儀表,利用計算機視覺技術(shù),提出了一種新的簡單有效的基于指針式儀表數(shù)據(jù)自動化讀取系統(tǒng)。本系統(tǒng)主要由兩個部分組成:圖像采集系統(tǒng)和指針式儀表自動化識別算法。圖像采集系統(tǒng)包含以下3個步驟:安裝儀表識別系統(tǒng),校準儀表與圖像采集攝像頭并建立儀表模板。儀表自動化識別算法為本系統(tǒng)核心部分,包含以下4個流程:讀取攝像頭圖像并對其進行預處理和連通區(qū)域的篩選,獲取圓形儀表盤圖像;采用Hough圓檢測方法定位圓形表盤;將Hough變換方法與邊緣聚類分析相結(jié)合,實現(xiàn)指針邊緣的精確定位;利用指針角度與儀器模板計算得到當前讀數(shù)。
本文為指針式儀表的數(shù)據(jù)讀取提供了一種基于圖像處理與模式識別的高精度自動化采集系統(tǒng)。實驗表明,此系統(tǒng)具有以下優(yōu)點:①通用性強。本系統(tǒng)通過修改閾值,即可適用于多種應用場景與多類指針式儀表;②準確性高。本系統(tǒng)在動態(tài)環(huán)境中具有較強的魯棒性,可正確讀取噪聲干擾情況下的儀表數(shù)據(jù);③實現(xiàn)簡單。本系統(tǒng)對監(jiān)控攝像頭的硬件配置要求不高,非高清圖像也可以通過該系統(tǒng)得到指針指示。
基于計算機視覺的高精度自動化指針式儀表識別系統(tǒng)的實現(xiàn),包含圖像采集系統(tǒng)的設計與指針式儀表自動化識別算法的設計。系統(tǒng)含有指針式儀表、網(wǎng)絡攝像頭與計算機3個組件,其中指針式儀表為圓形儀表,攝像頭可以是海康監(jiān)控攝像頭,計算機為常見的個人計算機。系統(tǒng)使用流程如下:安裝儀表識別系統(tǒng),校準儀表與攝像頭,使攝像頭指向儀表盤位置,并建立儀表模板與先驗信息;攝像頭采集儀表圖像并通過網(wǎng)絡傳輸至計算機;利用指針式儀表自動化識別算法對圖像進行分析與處理,實現(xiàn)儀表讀數(shù)的自動識別。
儀表模板與先驗信息的建立指采集并保存儀表的信息,不同類型儀表的標定信息可能不同,一般包含儀表量程、最小刻度線角度、刻度線范圍、刻度盤識別區(qū)域。每個系統(tǒng)安裝后需要進行一次校準,并將上述先驗信息記錄到儀表模板庫中,這將有助于后續(xù)算法對儀表讀數(shù)的快速識別。其中,為保證儀表自動化識別算法的準確性,刻度盤識別區(qū)域應包含整個儀表盤區(qū)域。
指針式儀表自動化識別算法是此智能儀表識別系統(tǒng)的核心,也是本文的研究重點。本文以圓形指針式儀表為研究對象,基于Windows系統(tǒng)Visual studio軟件開發(fā)平臺和OpenCV開源計算機視覺庫,利用圖像處理與模式識別技術(shù)實現(xiàn)了儀表自動化識別算法,其流程如圖1。
圖1 指針式儀表自動化識別算法流程圖Fig.1 Flow chart of automatic identification algorithm for pointer instrument
儀表自動化識別算法主要包含以下4個流程:①采集圖像預處理,包含圖像讀取、表盤區(qū)域提取、圖像灰度化與中值濾波;②圓形表盤定位,采用Hough圓檢測方法計算得到圓形的中心與半徑;③指針邊緣精確定位,將Hough變換方法與邊緣聚類分析相結(jié)合,定位指針;④示數(shù)識別,利用指針角度與儀器模板計算得到當前讀數(shù)。
相機拍攝的照片在拍攝過程中會受到各種因素的影響,如光照、溫度和濕度等影響,使采集的圖像中含有噪聲。高斯噪聲、椒鹽噪聲和隨機噪聲等普遍存在并混疊在一起,當信噪比低于一定水平時,圖像不清晰且質(zhì)量下降,將造成表盤讀數(shù)不精確。同時,除儀表盤外,圖像還包含其他背景信息,這些復雜的背景信息將嚴重影響圓形表盤與指針的定位精度。因此,為了最大限度地降低噪聲干擾和背景信息對儀表盤特征提取與讀數(shù)造成的誤差,突出圖像中表盤相關的有用信息,應對相機拍攝的圖片進行必要的預處理。
圖像預處理包括讀取圖像、表盤區(qū)域提取、圖像灰度化和中值濾波4個部分。表盤區(qū)域提取是指利用安裝系統(tǒng)時記錄的先驗信息,從攝像頭采集的整幅圖像中剪裁出一般為矩形的刻度盤識別區(qū)域,此步驟可以去除多余的復雜背景,降低儀表讀數(shù)自動化的難度。圖像灰度化指將彩色刻度盤圖像轉(zhuǎn)化為灰度圖像,由攝像頭采集的圖像一般為彩色圖像,通過圖像灰度化,可以去除大量顏色信息,減小后續(xù)運算復雜度和存儲空間。中值濾波的主要目的是減小噪聲并改善圖像質(zhì)量,在儀表盤反光產(chǎn)生光斑的情況下,灰度化處理容易給圖像帶來椒鹽噪聲。此外,攝像頭采集圖像時不可避免地出現(xiàn)其他不可見噪聲等,本系統(tǒng)采用中值濾波來濾除噪聲。
預處理后圖片如圖2。
圖2 預處理后子圖像(刻度盤識別區(qū)域)Fig.2 Sub image after preprocessing (dial recognition area)
預處理攝像頭采集圖像獲取刻度盤識別區(qū)域后,需要對儀表的讀數(shù)進行識別,其關鍵在于確定指針在表盤上的指向。對于實際的指針式儀表盤,指針已它的軸心為圓心,指針長度為半徑,在一個圓周(圓形、扇形或環(huán)形)區(qū)域內(nèi)旋轉(zhuǎn)。定位指針前,需要確認此圓周位置,即確定圓心(x0,y0) ,半徑R0。
本系統(tǒng)使用的圓檢測方案為霍夫曼(Hough Transform)圓檢測算法[12-14]。該檢測算法普及程度較高,占用內(nèi)存較少,計算量小,實現(xiàn)簡單,具有很好的情景兼容情況。經(jīng)過Hough圓檢測算法處理的圖像如圖3,繪制出表盤圓形的位置以及圓心的位置。
圖3 Hough圓檢測結(jié)果Fig.3 Hough circle inspection results
文中指針定位的為Hough直線檢測環(huán)向模板匹配法徑向灰度求和法。對于指針定位,本系統(tǒng)采用霍夫曼(Hough Transform)直線檢測的方法[15],而后通過直線上的點與圓的關系來將錯誤檢測的直線進行過濾。此方案的難點在于Hough直線檢測的方法經(jīng)常與Canny邊緣檢測算子進行聯(lián)合使用,而Canny算子的閾值選擇以及Hough直線的長度選擇都是比較動態(tài)的過程,在調(diào)節(jié)過程非常困難。本文采用可以連續(xù)調(diào)節(jié)Canny算子和Hough檢測閾值的方法來選擇適合于方案的值,初步測試有較好的效果。圖4展示了通過Hough直線檢測的方法找到的儀表指針位置(綠色直線)。
圖4 Hough直線檢測結(jié)果Fig.4 Hough straight line inspection results
在得到圓心坐標和直線信息后,需要轉(zhuǎn)化為角度參數(shù)。反切函數(shù)是以x,y相對于(0, 0)點的位置在不同象限上進行計算的,輸出范圍為(-π,π),因此需要對輸出值進行坐標系轉(zhuǎn)換,圖像坐標系和常見坐標系如圖5。
圖5 圖像坐標系和常見坐標系Fig.5 Image coordinate system and common coordinate system
常見坐標系和圖像坐標系[16]都在成像平面上,但它們的原點和度量單位不同。常見坐標系的原點通常為成像平面的中點,屬于物理單位,單位是mm。而圖像坐標系的單位是pixel,通常用行和列描述像素點位置。因此,二者之間的轉(zhuǎn)換如下:其中dx和dy表示每一列和每一行的個數(shù),即1pixel=dxmm,故成像平面與像素坐標系的關系如圖6。
圖6 成像平面與像素坐標系的關系Fig.6 Relationship between imaging plane and pixel coordinate system
故成像平面與像素坐標系的關系公式為:
推出:
文中識別的指針式儀表刻度是均勻的,指針夾角和儀表刻度的對應關系是線性的。儀表指針準確定位后,可計算出指針與最小刻度線之間的夾角,再將夾角轉(zhuǎn)化為指針示數(shù),具體函數(shù)為[7]:
其中:(x,y)表示指針遠點坐標,q表示屬于哪一個象限。根據(jù)模板庫文件已知的最小刻度值Vmin,最小刻度的初始角度θmin,最大刻度的角度θmax,儀表的量程Range,可計算出指針示數(shù)V:
圖7所示為壓力監(jiān)測儀表,量程為0MPa~25MPa,精度為1MPa。在實際應用中,指針角度的誤差允許范圍是±3°,讀數(shù)允許0.3MPa的誤差。表1展示了儀表在正常光照情況下實驗測試結(jié)果,其中真實值為多人視覺觀察的平均值。由表1可知,最大絕對誤差為不超過0.3MPa,滿足儀表自動示數(shù)的精度識別要求。
圖7 某品牌指針儀表識別結(jié)果Fig.7 Recognition results of a brand pointer instrument
表1 指針壓力表實驗結(jié)果Table 1 Test results of pointer pressure gauge
針對現(xiàn)有儀表識別方法與系統(tǒng)仍無法有效兼顧通用性、復雜性與準確性的問題,提出了一種新的簡單有效的基于指針式儀表數(shù)據(jù)自動化讀取系統(tǒng)。首先,安裝儀表識別系統(tǒng),校準儀表與圖像采集攝像頭并建立儀表模板;其次,儀表自動化識別算法對圖像進行預處理,使用Hough圓檢測方法定位表盤位置,并結(jié)合Hough變換與邊緣聚類分析識別指針角度,利用預設儀表模型計算得出指針讀數(shù)。本文提出的儀表識別方法與系統(tǒng)在設計中有效平衡了復雜性與準確性,具有通用性強、實現(xiàn)簡單與準確性高的優(yōu)點,將極大促進智能自動化在實際工業(yè)場景中的廣泛應用。