摘 要:利用Matlab的圖象處理功能對攝象頭采集到的儀表圖象進行分析,得到指示值,同時利用dll技術,在虛擬儀器編程軟件Labview中調用,輸出得到對應的計算值,實現了對指針式儀表的自動監控,增加了整個系統的穩定性和可靠性。
關鍵字:數據采集;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
一、 引言
隨著技術的提高,儀器越來越先進,一般的數據采集儀器或采集卡都自帶了與電腦的接口,如網絡分析儀和頻譜儀等的GPIB接口,一般采集卡的RS232口,以及USB接口等等。但以前的一些比較舊的設備,特別是指針式儀表等等,沒有接口,因而無法與電腦通訊,只能人為的讀取表值,這嚴重的影響了整個系統的效率。
攝象頭監控技術的應用十分廣泛,也可以應用到實驗監控系統中,得到圖象處理方法也有很多,一般采用圖象處理功能比較強大的Matlab軟件,可以有效的去除干擾數據,然后對指針數據進行判斷,得到當前指針的讀數。而虛擬儀器的顯示則采用Labview軟件,采用與指針儀表相對應的表或顯示儀器,顯示出當前指針值。
二、 程序設計與流程
首先,利用攝象頭自帶驅動程序中的動態鏈接庫文件,如AVICAP32.dll,加上WIN的API,或者正確安裝了攝像頭驅動后,在Labview中調用其控件,這樣就可以正確的使用攝像頭,如要存儲圖片可以先SendMessage發送命令給控件,再用Clipboard的getdata將圖片讀出。
其次,得到當前圖象后,利用Matlab中圖象處理函數對圖象進行預處理,因為儀表結構或環境不同,所以處理的方法或函數的參數也不盡相同,一般是通過實驗測試,得到誤差較小的黑白圖象。Matlab中常用的圖象處理函數有imread,imwrite,im2bw,RGB2GRAY等,其中imread函數是將圖象讀入到一個三維數組中,前兩個數據表示坐標,最后一組數據表示當前點的顏色,im2bw是將圖象數據轉換為黑白的,變成了二維數組,輸入參數有Level,表示對圖象的敏感度,當Level取不同值后得到不同的黑白圖 。
數據的處理最關鍵的就是要判斷指針的位置,下面函數就是尋找指針線,如果圖片數據轉換時少了數據點的,經過判斷自動加上。
for m=1:FindLineNumber-1
Linesize=size(find(FindLine(m,:,1)>0));
if Linesize(2)>=Ly-j %前面已經沒數據
tempi=FindLine(m,Ly-j,1);
tempj=FindLine(m,Ly-j,2);
if tempi>1 & tempi
if BW(tempi,j)==0%有數據
FindLine(m,Ly-j+1,1)=tempi;
FindLine(m,Ly-j+1,2)=j;
InLine=1;
end
%同理判斷周圍其他各點
if InLine==0 %說明沒找到,看下一點
NextL=find(BW(tempi-2:tempi+2,j-1)==0);
if isempty(NextL)==0 %補上缺點
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轉換后圖形[/align]
對于每個指針儀表,如果刻度不均勻,或者獲取圖片有一定的角度,在處理數據前必須對數據進行標定,這樣讀取到的指針數據才能正確的換算成數值。
對儀表圖象的處理一般分為三步,一為預處理,并將圖象放入到圖象數據數組中;二為標定刻度值,求解相似度來獲得儀表數字刻度值,并與坐標點聯系,存入標定數組中;三、分析獲取指針位置,得到當前指針的坐標值。四、由指針坐標值與前面標定的刻度值得到當前測量值。其中可能由于燈光光線或其他原因,表的指針位置并沒有在標定坐標范圍內,此時需要將指針延長,得到與各個標定刻度的交點來判斷測量值,或者將指針坐標點用多項式擬合,得到一個一元多次方程,最簡單的情況就是直線方程,然后與每個刻度坐標區間的方程聯合求解,當在刻度坐標范圍內有交點時,說明測量值在此范圍內,然后通過線性插值或多項式擬合得到儀表的測量值。
再次,得到測量值后,可以通過Labview面板中的虛擬儀器表頭,將數據顯示出來,保持與其他測量儀器的同步,并通過測量值判斷整個系統的運行狀態。
三、 系統測試與結果
實驗儀表選用了真空裝置中的氣壓表,因為在這些系統中,儀表占了很大的一部分,將攝象頭夾在儀表旁邊,通過USB口連到電腦上,進行采集圖形,圖二為實際儀表圖形,利用Matlab生成的動態鏈接庫文件進行圖象處理,如圖1所示。尋找當前指針位置,并由坐標判斷出測量值,輸入到Labview控制面板的虛擬儀表中,如圖三所示。實際人為讀取值為6.5,計算結果值為6.5429。
[align=center]

圖二、原始儀表圖形

圖三、測量系統中虛擬儀器與計算值[/align]
最后,保存儀表或其他儀器的測量數據。在Labview中很方便的將數據存入文本文檔或各個數據庫中,還可以通過TCP等協議或DataSocket等控件將實驗實時采集的數據發布到網站、服務器或客戶端上。
四、結論
本文的創新點是,利用了廉價的攝象頭及其驅動,通過Matlab進行圖象處理,分析得到測量數據,并在虛擬儀器編程軟件Labview中重新顯示出來,最后可以通過Labview的Datasocket或TCP/IP協議將數據發布,或儲存到數據庫中。
采用了Labview和Matlab的混合編程技術,即能在Labview上實現與其他儀器的聯合采集和控制,還利用Matlab強大的圖象處理功能,保證了程序的有效性。
不僅實現了對舊式儀表儀器的監控,而且可以與其他儀器協同采集數據,自動記錄測量過程中儀表數據值,并實時判斷系統的狀態,必要時發出警報,這樣保證了整個測試系統的穩定性和可靠性。
參考文獻
畢虎,律方成,李燕青,李和明.Labview中訪問數據庫的幾種不同方法.微計算機信息,2006,1-1:131-134。
吳苗,許江寧,繆繡華,紀兵.基于Labview的設備驅動程序開發技術研究.微計算機信息,2006,2-1:153-155。
毛建東.基于Labview的單片機數據采集系統的設計.微計算機信息,2006,3-2:41-42。
周偉林,李清峰,楊華勇.基于Labview的AC1077數據采集卡的驅動.微計算機信息,2006,1-1:121-123。