機(jī)器視覺(jué)系統(tǒng)中常需要從各類儀表的顯示屏圖像中提取其讀數(shù)呆万。這些儀表的顯示屏可以分為模擬指針顯示屏、LCD顯示屏和LED顯示屏等绊含。
觀察模擬儀表可以發(fā)現(xiàn)桑嘶,它們的刻度被標(biāo)記在一個(gè)由初始值和滿量程值限定的圓弧范圍內(nèi)炊汹,儀表的指針基于圓弧的圓心旋轉(zhuǎn)以指示當(dāng)前值躬充。由此不難想到先使用兩條標(biāo)記初始值和滿量程值的線段,加上一個(gè)標(biāo)記圓心位置的點(diǎn)來(lái)校準(zhǔn)儀表讨便,然后就可以檢測(cè)指針的位置充甚,并通過(guò)該位置占滿量程的比例來(lái)確定當(dāng)前讀數(shù)。三點(diǎn)法是另一種校準(zhǔn)此類儀表的方法霸褒。它在儀表初始值伴找、滿量程值位置上分別選擇一點(diǎn),再選擇指針旋轉(zhuǎn)的圓心废菱,這樣圓心點(diǎn)即可與其他兩點(diǎn)分別構(gòu)成線段來(lái)實(shí)現(xiàn)儀表校準(zhǔn)技矮。
指針型顯示屏常用于速度表、流量表殊轴、電壓和電流表等衰倦,如下所示:
儀表讀取功能還能從具有LCD/LED顯示屏的儀表中檢測(cè)包含單個(gè)或多個(gè)七段數(shù)碼管類型數(shù)字的區(qū)域,并讀取包括小數(shù)點(diǎn)等分隔符的數(shù)值旁理。
LCD/LED顯示屏則常采用7段數(shù)碼管來(lái)顯示數(shù)據(jù)樊零,如下所示:
Nl Vision提供了讀取上述幾種儀表顯示的函數(shù),它們對(duì)復(fù)雜的算法進(jìn)行了封裝孽文,位于LabVIEW的視覺(jué)與運(yùn)動(dòng)→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ù)說(shuō)明及使用可參見(jiàn)幫助手冊(cè):
1、模擬儀表識(shí)別
基于NI Vision的儀表讀取函數(shù)可快速構(gòu)建需要讀取儀表值的機(jī)器視覺(jué)系統(tǒng)豌习。通過(guò)一個(gè)儀表讀取函數(shù)讀取油表顯示值的實(shí)例霞势,了解模擬儀表識(shí)別的應(yīng)用。
整個(gè)過(guò)程可分為學(xué)習(xí)和讀數(shù)兩個(gè)階段斑鸦。在學(xué)習(xí)階段愕贡,程序先使用兩個(gè)IMAQ Convert Line to ROI函數(shù)指定了儀表的初始值和滿量程值位置。隨后IMAQ Group ROI對(duì)兩個(gè)線段ROI進(jìn)行組合巷屿,作為儀表學(xué)習(xí)函數(shù)IMAQ Get Meter的輸入固以。學(xué)習(xí)過(guò)程完成后,會(huì)輸出儀表指針的旋轉(zhuǎn)中心位置和一個(gè)數(shù)組嘱巾。其中數(shù)組元素代表儀表初始值和滿量程值之間一條沿著刻度的弧線上各點(diǎn)的位置憨琳,這些點(diǎn)將用于在讀數(shù)階段計(jì)算儀表的讀數(shù)。
讀數(shù)階段基于學(xué)習(xí)階段的輸出來(lái)完成旬昭,IMAQ Read Meter可以通過(guò)檢測(cè)儀表指針的位置來(lái)確定當(dāng)前讀數(shù)所在位置占滿量程的百分比篙螟。而基于該百分比和滿量程值,就可以計(jì)算儀表的真實(shí)讀數(shù)问拘。
程序設(shè)計(jì)如下所示:
程序運(yùn)行結(jié)果中遍略,除了顯示讀數(shù)值,還在圖像中顯示了ROI骤坐、學(xué)習(xí)過(guò)程所返回?cái)?shù)組中的各點(diǎn)以及指針指向的位置绪杏,效果如下所示:
2、LCD/LED顯示屏識(shí)別
IMAQ Get LCDROI纽绍、IMAQ Read LCD可檢測(cè)包含多個(gè)七段數(shù)碼管類型數(shù)字的區(qū)域蕾久,并讀取包括小數(shù)點(diǎn)等分隔符在內(nèi)的數(shù)值。IMAQ Read Single Digit則用于讀取單個(gè)七段數(shù)碼管類型的數(shù)值拌夏。與讀取模擬儀表數(shù)值的過(guò)程類似僧著,讀取LCD儀表數(shù)值的過(guò)程也包括學(xué)習(xí)和讀數(shù)兩個(gè)階段。
學(xué)習(xí)階段需要基于所有數(shù)字的七段數(shù)碼管全部打開(kāi)時(shí)的圖像(全部為數(shù)字8)來(lái)定位各個(gè)數(shù)字所在的矩形范圍障簿。讀數(shù)階段則通過(guò)分析7段數(shù)碼管數(shù)字各段的線灰度分布以確定讀數(shù)結(jié)果盹愚。
下圖顯示了儀表讀取函數(shù)基于線灰度分布識(shí)別LCD/LED數(shù)碼管顯示的原理,其中數(shù)字為各段數(shù)碼管的索引卷谈。
上圖(a)顯示了背景為白色且七段數(shù)碼管全部打開(kāi)時(shí)的情況杯拐,其中數(shù)字為各段數(shù)碼管的索引。假定已在學(xué)習(xí)階段從圖像中確定了各個(gè)數(shù)字所在的矩形位置,就可以在水平和豎直方向上設(shè)置與各段數(shù)碼管交叉的線段型ROI端逼,用于后續(xù)分析朗兵。
由于數(shù)碼管關(guān)閉時(shí),其圖像灰度與背景灰度接近顶滩,因此線ROI灰度曲線上的像素值分布較為集中余掖。而數(shù)碼管打開(kāi)時(shí),因數(shù)碼段圖像灰度與背景反差較大礁鲁,線ROI灰度曲線上的像素值分布較為分散盐欺,如上圖(b)所示。
標(biāo)準(zhǔn)差可用來(lái)衡量一組數(shù)據(jù)的分散程度仅醇,因此通過(guò)計(jì)算線ROI上像素灰度的標(biāo)準(zhǔn)差冗美,并為其設(shè)置閾值即可判斷數(shù)碼管的開(kāi)閉。綜合考慮7個(gè)數(shù)碼管的各種開(kāi)閉組合析二,就能得到其顯示的數(shù)值粉洼。而重復(fù)該過(guò)程就能讀取LCD顯示屏中的多個(gè)數(shù)字。
由于LCD/LED儀表讀取函數(shù)基于線灰度分布來(lái)判斷數(shù)碼管的開(kāi)閉叶摄,因此圖像的亮度漂移(Light Drift)属韧、對(duì)比度、噪聲和分辨率將直接影響其讀數(shù)的準(zhǔn)確性蛤吓。
通過(guò)一個(gè)讀取LCD儀表顯示值的實(shí)例宵喂,了解LCD/LED顯示屏識(shí)別的應(yīng)用方法,程序設(shè)計(jì)思路如下所示:
程序總體上可分為使用IMAQ Get LCDROI的學(xué)習(xí)和使用IMAQ Read LCD的讀數(shù)兩大部分会傲。
程序開(kāi)始先讀入儀表所有數(shù)字均為8時(shí)的圖像LCD0.jpg锅棕,并調(diào)用IMAQ Get LCD ROI,從指定的矩形ROI中搜索各個(gè)7段數(shù)碼管數(shù)字所在的矩形位置唆铐;
一旦獲得各個(gè)數(shù)字位置所在的范圍哲戚,程序就讀取待測(cè)圖像LCD1.jpg奔滑,調(diào)用IMAQ Read LCD分析各個(gè)數(shù)字所在的范圍內(nèi)7個(gè)數(shù)碼管的顯示情況艾岂,以判斷最終讀數(shù);
儀表學(xué)習(xí)和讀取過(guò)程均使用線灰度分布的標(biāo)準(zhǔn)差閾值Threshold來(lái)判斷數(shù)碼管的開(kāi)閉朋其,而且IMAQ Read LCD還支持?jǐn)?shù)字的+/-符號(hào)和小數(shù)點(diǎn)的讀韧踉 ;
IMAQ Read LCD以浮點(diǎn)數(shù)梅猿、字符串以及元素為圖形的數(shù)組返回所讀取到的值氓辣,其中字符串中的每個(gè)字符用小數(shù)點(diǎn)進(jìn)行分割。
程序?qū)崿F(xiàn)如下所示:
程序運(yùn)行效果如下所示:
儀表和條碼讀取是機(jī)器視覺(jué)系統(tǒng)的常用功能袱蚓。常見(jiàn)的各類儀表可按顯示方式分為模擬指針顯示屏钞啸、LCD顯示屏和LED顯示屏等幾大類。
機(jī)器視覺(jué)系統(tǒng)可以使用雙線法或三點(diǎn)法,對(duì)模擬顯示屏類型的儀表進(jìn)行校準(zhǔn)和讀取体斩。對(duì)七段數(shù)碼管類型顯示數(shù)字的LCD/LED儀表的讀取梭稚,可以通過(guò)分析數(shù)字所在區(qū)域的線灰度分布來(lái)實(shí)現(xiàn)。數(shù)碼管關(guān)閉時(shí)絮吵,灰度曲線上的像素值分布較為集中弧烤,反之則分布較為分散。在讀取儀表過(guò)程中蹬敲,應(yīng)考慮圖像的亮度漂移暇昂、對(duì)比度、噪聲和分辨率對(duì)讀數(shù)準(zhǔn)確性的影響伴嗡。