基于機(jī)器視覺的壓力表盤打印裝置
在基于機(jī)器視覺技術(shù)的基礎(chǔ)上,結(jié)合OpenCV視覺函數(shù)庫研究設(shè)計了一款壓力表盤打印裝置。該設(shè)計方案包括 硬件設(shè)計和軟件設(shè)計,硬件設(shè)計主要包括整個系統(tǒng)的搭建及硬件選型,軟件設(shè)計主要分為表盤配置模塊、拍照模塊、圖像預(yù) 處理模塊、模式識別模塊、標(biāo)定校準(zhǔn)模塊、表盤繪制模塊以及打印模塊,其中模式識別模塊主要是基于Hough變換的方法來 檢測表盤圓心及指針。實(shí)驗(yàn)結(jié)果表明該設(shè)計方案滿足精度等級要求,即生產(chǎn)表盤符合標(biāo)準(zhǔn)。
目前,指針式儀表的傳統(tǒng)讀數(shù)方法主要還是依賴于人眼的 識別然后再記錄保存,但是這種方式往往被操作人員的主觀因 素所影響,而且其獲取的讀數(shù)精度不高,在識別工作量大的情況 下又導(dǎo)致工作效率拖沓,傳統(tǒng)生產(chǎn)過程中利用人工讀數(shù)的非 接觸測量方法已經(jīng)越來越不能滿足日益提升的現(xiàn)代化生產(chǎn)需 求。因此,可以使用工業(yè)相機(jī)來替代人工人眼對儀表的觀察讀 取,通過PC對儀表的示數(shù)進(jìn)行處理,完成對儀表進(jìn)行自動識別 與實(shí)時的智能監(jiān)控,不僅有效地提高生產(chǎn)效率,消除人為因素所 造成的誤差影響,同時為企業(yè)帶來更多效益。
本文通過計算指針角度進(jìn)而獲得儀表示值,然后將示值進(jìn) 行標(biāo)定校準(zhǔn)后記錄下來保存到數(shù)據(jù)庫中,將整個表盤刻度信息 在計算機(jī)中重繪無誤后再在空白表盤上打印輸出。
1.系統(tǒng)搭建
本系統(tǒng)的硬件連線圖如圖1所示。照相機(jī)由12 V直流電 源供電,拍照獲得壓力表盤圖像后,采用以太網(wǎng)接口通過網(wǎng)線與 計算機(jī)連接傳輸圖像, 計算機(jī)將采集圖像進(jìn)行預(yù)處理后識別表 盤讀數(shù),完成表盤重繪后再送給打印機(jī)打印輸出表盤。
2.軟件系統(tǒng)
本軟件設(shè)計包括表盤配置模塊、拍照模塊、圖像預(yù)處理模
塊、模式識別模塊、表盤繪制模塊及打印模塊。其中圖像預(yù)處理 模塊和模式識別模塊是關(guān)鍵部分。
2.1拍照模塊
系統(tǒng)相機(jī)采用以太網(wǎng)接口連接,拍好的照片通過網(wǎng)絡(luò)上傳 至電腦,軟件實(shí)時顯示照相機(jī)圖像畫面,根據(jù)畫面手動調(diào)整焦 距;按下拍照命令,得到照片的JPG格式圖片文件,并利用計算 機(jī)保存,軟件采用對同一角度連續(xù)拍攝5張照片,分別對5張照 片進(jìn)行角度分析,去掉最大值和最小值的兩張,取剩下的3個角 度的平均值作為最終的打印角度,以確保同一角度的精確度。 2.2圖像預(yù)處理模塊
2.2.1圖像灰度化
由照相機(jī)采集得到的儀表圖像為彩色圖像,如果直接進(jìn)行處 理就面臨著數(shù)據(jù)量龐大、算法復(fù)雜并且會導(dǎo)致處理速度很慢,因 此需要將圖片進(jìn)行灰度化,在保留了圖像主要特征要素的前提 下,又減小了圖像的數(shù)據(jù)存儲量,提升了圖像處理的效率。圖像灰 度化就是將原本的彩色圖像轉(zhuǎn)化成為灰度圖像的處理過程。
2.2.2圖像二值化
二值化的目的是為了便于將儀表指針及刻度線從背景圖像 中抽取出來。然而實(shí)際的操作過程中,由于壓力表盤的表面一般 為玻璃鏡面容易反光,會造成圖像信息被淹沒,加之噪聲干擾等 影響,這些因素都會降低采集儀表圖像的質(zhì)量,因此需要選擇適 當(dāng)?shù)拈撝祦磉M(jìn)行二值化處理。
本程序采用迭代法來求取圖像二值化的閾值;迭代法基于 逼近的思想,其步驟如下:
求出圖像的最大灰度值和最小灰度值,分別記作Z_<和 ZMIN,令初始閾值 T0=(ZMAX+ZMIN)/2;
根據(jù)所得閾值Tk將圖象分割為前景和背景兩部分,再分 別求出兩者的平均灰度值記作Z。和Zb;
求出新閾值 JK+1:(Zo^Zb)/2;
若7K:7K+1,則所得即為閾值;否則轉(zhuǎn)2),迭代計算。
2.2.3圖像濾波去矂
本文選擇中值濾波進(jìn)行降噪濾波處理,中值濾波是一種非 線性信號處理方法。
2.3模式識別模塊
模式識別是本軟件最核心的模塊,主要包括了圓心識別、指 針識別以及指針角度計算三個部分,圓心識別主要利用Hough 圓變換,指針識別則首先利用Canny邊緣檢測算子檢測出圖像 的邊緣信息[2],然后用Hough直線檢測來提取識別指針直線。
2.3.1圓心識別
圓心識別的主要步驟為:
1)獲取圖像的中心區(qū)域圖像,中心區(qū)域是指整個圖片的中 心部分區(qū)域,在這里假定圓心一定在該區(qū)域。
2)對中心區(qū)域進(jìn)行平滑處理,然后對其進(jìn)行Hough圓變換, 檢測中心區(qū)域中所有圓。
3)對所有檢測出來的圓過濾,過濾規(guī)則:若圓中所有像素點(diǎn) 的灰度值在其所處背景灰度值范圍內(nèi)的百分比超過50%,則認(rèn) 為該圓無效。然后對剩余圓的圓心求平均值。
4)對求得的圓心做調(diào)整,調(diào)整方法基于本程序檢測對象特 征:圖片最小圓處灰度值相對于周圍相差較大。
調(diào)整的方法:調(diào)整范圍以檢測出圓的圓心為中心,長度(L) 為半徑的0.7的正方形調(diào)整區(qū)域。
調(diào)整思路:①先調(diào)整x軸向的坐標(biāo),計算以此坐標(biāo)為中心長 度為L的正方形的左半部分和右半部分的灰度平均,若左半部分 灰度值大,x向左移動(-1),反之;若上一次坐標(biāo)移動與本次移動 方向不同,則移動結(jié)束;②然后根據(jù)同樣的方法調(diào)整y坐標(biāo)。
其中Hough圓變換首先獲取的中心區(qū)域如圖2所示,經(jīng)過 Hough圓變換后得到圓心并進(jìn)行調(diào)整后的圓心位置對比效果 如圖3所示。
該段程序的思路如流程圖4所示。
2.3.2指針識別
指針直線識別的主要流程為:先將原始圖像灰度化,然后利 用Canny算子進(jìn)行邊緣檢測,再通過Hough直線變換去檢測 圖像中所包含的全部直線。對檢測出的直線進(jìn)行過濾,其過濾準(zhǔn) 則為:檢測出線段的端點(diǎn)至少有一個在圖片中心區(qū)域。
篩選過濾后的直線,求出直線遠(yuǎn)離圓心的點(diǎn)。其篩選規(guī)則為:
1)若只有一條直線,則本直線遠(yuǎn)離圓心的點(diǎn)為檢測直線的 端點(diǎn);
2)若有兩條直線,則取這兩條直線遠(yuǎn)離圓心的點(diǎn)的平均值作為檢測直線的端點(diǎn);
3)若有兩條以上的直線,對每條直線求灰度平均,選出平均 值最小的兩條,這兩條直線遠(yuǎn)離圓心的點(diǎn)的平均值作為檢測直 線的端點(diǎn)。
該段程序的思路如流程圖5所示。
2.3.3指針角度計算
運(yùn)行程序計算指針角度結(jié)果如圖6所示。
2.4表盤繪制模塊
表盤繪制模塊是本軟件的核心模塊之一。通過讀取對應(yīng)配 置文件的表盤信息,獲取表盤刻度線長度、大刻度數(shù)、中刻度數(shù) 及小刻度數(shù)等關(guān)鍵參數(shù)后,該模塊將對表盤做出圓心定位,角度 轉(zhuǎn)換為弧度,計算得出任意角上符合半徑要求的圓周點(diǎn)的象限 坐標(biāo),最后分別設(shè)置相應(yīng)的映射模式,把得到的成像映射到屏幕 和打印機(jī)上。
2.5打印模塊
在微軟的MFC單/多文檔程序中,打印機(jī)編程由類庫自動 封裝并提供,軟件開發(fā)時只需根據(jù)實(shí)際需要添加少量打印機(jī)打 印代碼就可以完成需求。程序調(diào)用Windows的打印驅(qū)動程序 后,再自動調(diào)用工業(yè)打印機(jī)所對應(yīng)的驅(qū)動程序,啟動打印機(jī)在空 白表盤上打印出重繪出的表盤。
3.壓力表盤標(biāo)定實(shí)驗(yàn)
本實(shí)驗(yàn)首先選用了某儀表廠生產(chǎn)的壓力表進(jìn)行驗(yàn)證,實(shí)驗(yàn) 數(shù)據(jù)及誤差如表1所示。
在標(biāo)定過程中需要執(zhí)行上行增負(fù)荷和下行減負(fù)荷各一次全 量程加壓過程。最終得到儀表準(zhǔn)確度為0.367%,該儀表的精度等級為0.4,因此可以認(rèn)定該表盤合格。此外,儀表的回程誤差取 上、下行程同一壓力負(fù)荷下的示值之差的最大值。計算得到最大 回程誤差為0.8,除以儀表量程得到回差準(zhǔn)確度為0.267%,在 可接受范圍內(nèi)。
4.結(jié)束語
結(jié)合具體試驗(yàn)結(jié)果,本文提出了一種新的的壓力表盤的標(biāo) 定打印裝置,能夠生產(chǎn)出合符標(biāo)準(zhǔn)的壓力表盤,以適應(yīng)市場需 要,但在一些實(shí)際應(yīng)用場合中還存在一定不足之處,有待改進(jìn)。