博客專欄

EEPW首頁 > 博客 > LabVIEW儀表盤識別(實戰(zhàn)篇—6)

LabVIEW儀表盤識別(實戰(zhàn)篇—6)

發(fā)布人:美男子玩編程 時間:2022-06-22 來源:工程師 發(fā)布文章

機器視覺系統(tǒng)中常需要從各類儀表的顯示屏圖像中提取其讀數(shù)。這些儀表的顯示屏可以分為模擬指針顯示屏、LCD顯示屏和LED顯示屏等。


圖片


觀察模擬儀表可以發(fā)現(xiàn),它們的刻度被標記在一個由初始值和滿量程值限定的圓弧范圍內(nèi),儀表的指針基于圓弧的圓心旋轉(zhuǎn)以指示當前值。由此不難想到先使用兩條標記初始值和滿量程值的線段,加上一個標記圓心位置的點來校準儀表,然后就可以檢測指針的位置,并通過該位置占滿量程的比例來確定當前讀數(shù)。三點法是另一種校準此類儀表的方法。它在儀表初始值、滿量程值位置上分別選擇一點,再選擇指針旋轉(zhuǎn)的圓心,這樣圓心點即可與其他兩點分別構(gòu)成線段來實現(xiàn)儀表校準。

指針型顯示屏常用于速度表、流量表、電壓和電流表等,如下所示:


圖片


儀表讀取功能還能從具有LCD/LED顯示屏的儀表中檢測包含單個或多個七段數(shù)碼管類型數(shù)字的區(qū)域,并讀取包括小數(shù)點等分隔符的數(shù)值。


LCD/LED顯示屏則常采用7段數(shù)碼管來顯示數(shù)據(jù),如下所示:


圖片


Nl Vision提供了讀取上述幾種儀表顯示的函數(shù),它們對復雜的算法進行了封裝,位于LabVIEW的視覺與運動→Machine Vision→Instrument Readers函數(shù)選板中,如下圖所示:


圖片


其中IMAQ Get Meter、IMAQ Get Meter 2和IMAQ ReadMeter用于讀取模擬儀表的讀數(shù),IMAQ Get LCD ROI、IMAQ Read LCD和IMAQRead Single Digit用于讀取使用7段數(shù)碼管類型的LCD/LED儀表的讀數(shù)。


函數(shù)說明及使用可參見幫助手冊: 


圖片


1、模擬儀表識別


基于NI Vision的儀表讀取函數(shù)可快速構(gòu)建需要讀取儀表值的機器視覺系統(tǒng)。通過一個儀表讀取函數(shù)讀取油表顯示值的實例,了解模擬儀表識別的應用。


整個過程可分為學習和讀數(shù)兩個階段。在學習階段,程序先使用兩個IMAQ Convert Line to ROI函數(shù)指定了儀表的初始值和滿量程值位置。隨后IMAQ Group ROI對兩個線段ROI進行組合,作為儀表學習函數(shù)IMAQ Get Meter的輸入。學習過程完成后,會輸出儀表指針的旋轉(zhuǎn)中心位置和一個數(shù)組。其中數(shù)組元素代表儀表初始值和滿量程值之間一條沿著刻度的弧線上各點的位置,這些點將用于在讀數(shù)階段計算儀表的讀數(shù)。


讀數(shù)階段基于學習階段的輸出來完成,IMAQ Read Meter可以通過檢測儀表指針的位置來確定當前讀數(shù)所在位置占滿量程的百分比。而基于該百分比和滿量程值,就可以計算儀表的真實讀數(shù)。


程序設計如下所示:


圖片


程序運行結(jié)果中,除了顯示讀數(shù)值,還在圖像中顯示了ROI、學習過程所返回數(shù)組中的各點以及指針指向的位置,效果如下所示:


圖片


2、LCD/LED顯示屏識別


IMAQ Get LCDROI、IMAQ Read LCD可檢測包含多個七段數(shù)碼管類型數(shù)字的區(qū)域,并讀取包括小數(shù)點等分隔符在內(nèi)的數(shù)值。IMAQ Read Single Digit則用于讀取單個七段數(shù)碼管類型的數(shù)值。與讀取模擬儀表數(shù)值的過程類似,讀取LCD儀表數(shù)值的過程也包括學習和讀數(shù)兩個階段。


學習階段需要基于所有數(shù)字的七段數(shù)碼管全部打開時的圖像(全部為數(shù)字8)來定位各個數(shù)字所在的矩形范圍。讀數(shù)階段則通過分析7段數(shù)碼管數(shù)字各段的線灰度分布以確定讀數(shù)結(jié)果。


下圖顯示了儀表讀取函數(shù)基于線灰度分布識別LCD/LED數(shù)碼管顯示的原理,其中數(shù)字為各段數(shù)碼管的索引。


圖片


上圖(a)顯示了背景為白色且七段數(shù)碼管全部打開時的情況,其中數(shù)字為各段數(shù)碼管的索引。假定已在學習階段從圖像中確定了各個數(shù)字所在的矩形位置,就可以在水平和豎直方向上設置與各段數(shù)碼管交叉的線段型ROI,用于后續(xù)分析。


由于數(shù)碼管關(guān)閉時,其圖像灰度與背景灰度接近,因此線ROI灰度曲線上的像素值分布較為集中。而數(shù)碼管打開時,因數(shù)碼段圖像灰度與背景反差較大,線ROI灰度曲線上的像素值分布較為分散,如上圖(b)所示。


標準差可用來衡量一組數(shù)據(jù)的分散程度,因此通過計算線ROI上像素灰度的標準差,并為其設置閾值即可判斷數(shù)碼管的開閉。綜合考慮7個數(shù)碼管的各種開閉組合,就能得到其顯示的數(shù)值。而重復該過程就能讀取LCD顯示屏中的多個數(shù)字。

由于LCD/LED儀表讀取函數(shù)基于線灰度分布來判斷數(shù)碼管的開閉,因此圖像的亮度漂移(Light Drift)、對比度、噪聲和分辨率將直接影響其讀數(shù)的準確性。


圖片


通過一個讀取LCD儀表顯示值的實例,了解LCD/LED顯示屏識別的應用方法,程序設計思路如下所示:

  • 程序總體上可分為使用IMAQ Get LCDROI的學習和使用IMAQ Read LCD的讀數(shù)兩大部分。

  • 程序開始先讀入儀表所有數(shù)字均為8時的圖像LCD0.jpg,并調(diào)用IMAQ Get LCD ROI,從指定的矩形ROI中搜索各個7段數(shù)碼管數(shù)字所在的矩形位置;

  • 一旦獲得各個數(shù)字位置所在的范圍,程序就讀取待測圖像LCD1.jpg,調(diào)用IMAQ Read LCD分析各個數(shù)字所在的范圍內(nèi)7個數(shù)碼管的顯示情況,以判斷最終讀數(shù);

  • 儀表學習和讀取過程均使用線灰度分布的標準差閾值Threshold來判斷數(shù)碼管的開閉,而且IMAQ Read LCD還支持數(shù)字的+/-符號和小數(shù)點的讀取;

  • IMAQ Read LCD以浮點數(shù)、字符串以及元素為圖形的數(shù)組返回所讀取到的值,其中字符串中的每個字符用小數(shù)點進行分割。


程序?qū)崿F(xiàn)如下所示:


圖片


 程序運行效果如下所示:


圖片


儀表和條碼讀取是機器視覺系統(tǒng)的常用功能。常見的各類儀表可按顯示方式分為模擬指針顯示屏、LCD顯示屏和LED顯示屏等幾大類。


機器視覺系統(tǒng)可以使用雙線法或三點法,對模擬顯示屏類型的儀表進行校準和讀取。對七段數(shù)碼管類型顯示數(shù)字的LCD/LED儀表的讀取,可以通過分析數(shù)字所在區(qū)域的線灰度分布來實現(xiàn)。數(shù)碼管關(guān)閉時,灰度曲線上的像素值分布較為集中,反之則分布較為分散。在讀取儀表過程中,應考慮圖像的亮度漂移、對比度、噪聲和分辨率對讀數(shù)準確性的影響。



*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。

汽車防盜機相關(guān)文章:汽車防盜機原理


關(guān)鍵詞: LabVIEW

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉