摘 要:利用Matlab的圖象處理功能對(duì)攝象頭采集到的儀表圖象進(jìn)行分析,得到指示值,同時(shí)利用dll技術(shù),在虛擬儀器編程軟件Labview中調(diào)用,輸出得到對(duì)應(yīng)的計(jì)算值,實(shí)現(xiàn)了對(duì)指針式儀表的自動(dòng)監(jiān)控,增加了整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。
關(guān)鍵字:數(shù)據(jù)采集;Labview;Matlab;圖象處理
Abstract: The appearance of the point-like meter is snapped and analyzed by camera and Matlab image manipulation module. The point value is calculated and transferred in Labview software through dll technology. The program achieves the auto- surveillance function of the point-like meter and greatly increases the steadiness and robustness of the whole system
Key Words: Data Acquisition; Labview; Matlab; image manipulation
一、 引言
隨著技術(shù)的提高,儀器越來(lái)越先進(jìn),一般的數(shù)據(jù)采集儀器或采集卡都自帶了與電腦的接口,如網(wǎng)絡(luò)分析儀和頻譜儀等的GPIB接口,一般采集卡的RS232口,以及USB接口等等。但以前的一些比較舊的設(shè)備,特別是指針式儀表等等,沒(méi)有接口,因而無(wú)法與電腦通訊,只能人為的讀取表值,這嚴(yán)重的影響了整個(gè)系統(tǒng)的效率。
攝象頭監(jiān)控技術(shù)的應(yīng)用十分廣泛,也可以應(yīng)用到實(shí)驗(yàn)監(jiān)控系統(tǒng)中,得到圖象處理方法也有很多,一般采用圖象處理功能比較強(qiáng)大的Matlab軟件,可以有效的去除干擾數(shù)據(jù),然后對(duì)指針數(shù)據(jù)進(jìn)行判斷,得到當(dāng)前指針的讀數(shù)。而虛擬儀器的顯示則采用Labview軟件,采用與指針儀表相對(duì)應(yīng)的表或顯示儀器,顯示出當(dāng)前指針值。
二、 程序設(shè)計(jì)與流程
首先,利用攝象頭自帶驅(qū)動(dòng)程序中的動(dòng)態(tài)鏈接庫(kù)文件,如AVICAP32.dll,加上WIN的API,或者正確安裝了攝像頭驅(qū)動(dòng)后,在Labview中調(diào)用其控件,這樣就可以正確的使用攝像頭,如要存儲(chǔ)圖片可以先SendMessage發(fā)送命令給控件,再用Clipboard的getdata將圖片讀出。
其次,得到當(dāng)前圖象后,利用Matlab中圖象處理函數(shù)對(duì)圖象進(jìn)行預(yù)處理,因?yàn)閮x表結(jié)構(gòu)或環(huán)境不同,所以處理的方法或函數(shù)的參數(shù)也不盡相同,一般是通過(guò)實(shí)驗(yàn)測(cè)試,得到誤差較小的黑白圖象。Matlab中常用的圖象處理函數(shù)有imread,imwrite,im2bw,RGB2GRAY等,其中imread函數(shù)是將圖象讀入到一個(gè)三維數(shù)組中,前兩個(gè)數(shù)據(jù)表示坐標(biāo),最后一組數(shù)據(jù)表示當(dāng)前點(diǎn)的顏色,im2bw是將圖象數(shù)據(jù)轉(zhuǎn)換為黑白的,變成了二維數(shù)組,輸入?yún)?shù)有Level,表示對(duì)圖象的敏感度,當(dāng)Level取不同值后得到不同的黑白圖 。
數(shù)據(jù)的處理最關(guān)鍵的就是要判斷指針的位置,下面函數(shù)就是尋找指針線(xiàn),如果圖片數(shù)據(jù)轉(zhuǎn)換時(shí)少了數(shù)據(jù)點(diǎn)的,經(jīng)過(guò)判斷自動(dòng)加上。
for m=1:FindLineNumber-1
Linesize=size(find(FindLine(m,:,1)>0));
if Linesize(2)>=Ly-j %前面已經(jīng)沒(méi)數(shù)據(jù)
tempi=FindLine(m,Ly-j,1);
tempj=FindLine(m,Ly-j,2);
if tempi>1 & tempi
if BW(tempi,j)==0%有數(shù)據(jù)
FindLine(m,Ly-j+1,1)=tempi;
FindLine(m,Ly-j+1,2)=j;
InLine=1;
end
%同理判斷周?chē)渌鼽c(diǎn)
if InLine==0 %說(shuō)明沒(méi)找到,看下一點(diǎn)
NextL=find(BW(tempi-2:tempi+2,j-1)==0);
if isempty(NextL)==0 %補(bǔ)上缺點(diǎn)
FindLine(m,Ly-j+1,1)=tempi-2+NextL(1);
FindLine(m,Ly-j+1,2)=j;
end
end
end
end
[align=center]
圖一、原始圖形與Level取0.71,0.72,0.73,0.74,0.75,0.76,0.77,
0.78,0.79轉(zhuǎn)換后圖形[/align]
對(duì)于每個(gè)指針儀表,如果刻度不均勻,或者獲取圖片有一定的角度,在處理數(shù)據(jù)前必須對(duì)數(shù)據(jù)進(jìn)行標(biāo)定,這樣讀取到的指針數(shù)據(jù)才能正確的換算成數(shù)值。
對(duì)儀表圖象的處理一般分為三步,一為預(yù)處理,并將圖象放入到圖象數(shù)據(jù)數(shù)組中;二為標(biāo)定刻度值,求解相似度來(lái)獲得儀表數(shù)字刻度值,并與坐標(biāo)點(diǎn)聯(lián)系,存入標(biāo)定數(shù)組中;三、分析獲取指針位置,得到當(dāng)前指針的坐標(biāo)值。四、由指針坐標(biāo)值與前面標(biāo)定的刻度值得到當(dāng)前測(cè)量值。其中可能由于燈光光線(xiàn)或其他原因,表的指針位置并沒(méi)有在標(biāo)定坐標(biāo)范圍內(nèi),此時(shí)需要將指針延長(zhǎng),得到與各個(gè)標(biāo)定刻度的交點(diǎn)來(lái)判斷測(cè)量值,或者將指針坐標(biāo)點(diǎn)用多項(xiàng)式擬合,得到一個(gè)一元多次方程,最簡(jiǎn)單的情況就是直線(xiàn)方程,然后與每個(gè)刻度坐標(biāo)區(qū)間的方程聯(lián)合求解,當(dāng)在刻度坐標(biāo)范圍內(nèi)有交點(diǎn)時(shí),說(shuō)明測(cè)量值在此范圍內(nèi),然后通過(guò)線(xiàn)性插值或多項(xiàng)式擬合得到儀表的測(cè)量值。
再次,得到測(cè)量值后,可以通過(guò)Labview面板中的虛擬儀器表頭,將數(shù)據(jù)顯示出來(lái),保持與其他測(cè)量?jī)x器的同步,并通過(guò)測(cè)量值判斷整個(gè)系統(tǒng)的運(yùn)行狀態(tài)。
三、 系統(tǒng)測(cè)試與結(jié)果
實(shí)驗(yàn)儀表選用了真空裝置中的氣壓表,因?yàn)樵谶@些系統(tǒng)中,儀表占了很大的一部分,將攝象頭夾在儀表旁邊,通過(guò)USB口連到電腦上,進(jìn)行采集圖形,圖二為實(shí)際儀表圖形,利用Matlab生成的動(dòng)態(tài)鏈接庫(kù)文件進(jìn)行圖象處理,如圖1所示。尋找當(dāng)前指針位置,并由坐標(biāo)判斷出測(cè)量值,輸入到Labview控制面板的虛擬儀表中,如圖三所示。實(shí)際人為讀取值為6.5,計(jì)算結(jié)果值為6.5429。
[align=center]
圖二、原始儀表圖形
圖三、測(cè)量系統(tǒng)中虛擬儀器與計(jì)算值[/align]
最后,保存儀表或其他儀器的測(cè)量數(shù)據(jù)。在Labview中很方便的將數(shù)據(jù)存入文本文檔或各個(gè)數(shù)據(jù)庫(kù)中,還可以通過(guò)TCP等協(xié)議或DataSocket等控件將實(shí)驗(yàn)實(shí)時(shí)采集的數(shù)據(jù)發(fā)布到網(wǎng)站、服務(wù)器或客戶(hù)端上。
四、結(jié)論
本文的創(chuàng)新點(diǎn)是,利用了廉價(jià)的攝象頭及其驅(qū)動(dòng),通過(guò)Matlab進(jìn)行圖象處理,分析得到測(cè)量數(shù)據(jù),并在虛擬儀器編程軟件Labview中重新顯示出來(lái),最后可以通過(guò)Labview的Datasocket或TCP/IP協(xié)議將數(shù)據(jù)發(fā)布,或儲(chǔ)存到數(shù)據(jù)庫(kù)中。
采用了Labview和Matlab的混合編程技術(shù),即能在Labview上實(shí)現(xiàn)與其他儀器的聯(lián)合采集和控制,還利用Matlab強(qiáng)大的圖象處理功能,保證了程序的有效性。
不僅實(shí)現(xiàn)了對(duì)舊式儀表儀器的監(jiān)控,而且可以與其他儀器協(xié)同采集數(shù)據(jù),自動(dòng)記錄測(cè)量過(guò)程中儀表數(shù)據(jù)值,并實(shí)時(shí)判斷系統(tǒng)的狀態(tài),必要時(shí)發(fā)出警報(bào),這樣保證了整個(gè)測(cè)試系統(tǒng)的穩(wěn)定性和可靠性。
參考文獻(xiàn)
畢虎,律方成,李燕青,李和明.Labview中訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的幾種不同方法.微計(jì)算機(jī)信息,2006,1-1:131-134。
吳苗,許江寧,繆繡華,紀(jì)兵.基于Labview的設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)技術(shù)研究.微計(jì)算機(jī)信息,2006,2-1:153-155。
毛建東.基于Labview的單片機(jī)數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).微計(jì)算機(jī)信息,2006,3-2:41-42。
周偉林,李清峰,楊華勇.基于Labview的AC1077數(shù)據(jù)采集卡的驅(qū)動(dòng).微計(jì)算機(jī)信息,2006,1-1:121-123。