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