LabVIEW圖像采集相關(一)

但是上圖中的模式,采集圖像比較慢,因為Snap.vi都包含了初始化和關閉等環節,最快的情況下也得需要120ms。NI為了解決這種問題,添加了Grab.vi來實現連續采集。程序框圖如下:
本文引用地址:http://www.104case.com/article/201701/337148.htm
這種情況下一幀數據大約需要40ms。
?然而,在高速圖像采集的應用中,我們會發現上一種模式也會存在一定的問題,即當圖像采集速度非常高時,處理程序還來不及處理當前的圖像,圖像緩沖區里面的數據已經被新的圖像數據所覆蓋了。
為了解決采集緩沖區不足的問題,我們可以增加圖像采集緩沖區。
NI-IMAQ提供了兩種多緩沖區的方式,分別為Sequence和Ring。

Sequence和Ring都是多緩沖區圖像采集方式,區別是Sequence是單次采集,而Ring是連續采集,類似Snap和Grab。
?Sequence.vi最最重要的參數是Imahes In,這是一個圖像數據緩沖區引用數組,里面包含了多個由Imaq Create.vi創建的圖像數據緩沖區的引用。只有知道了多個圖像數據緩沖區在哪里,IMAQ Sequence.vi才能完成多緩沖區的圖像采集。
?Sequnce應用:

Ring圖像采集方式(IMAQ的方式,IMAQdx還不太一樣):
Ring圖像采集方式需要由三個VI來實現,分別是IMAQ Configure List.vi?、IMAQ Configure Buffer.vi和IMAQ Extract.vi。
?IMAQ Configure List.vi完成緩沖區列表的配置,告訴驅動程序緩沖區的數量,以連續還是單次的方式進行圖像采集以及緩沖區的位置。
?IMAQ Configure Buffer.vi把創建好的圖像緩沖區分配到緩沖區列表的對應位置。
?IMAQ Extract Buffer.vi把采集到的圖像從緩沖區中提取出來,為后續圖像處理做準備。
如下圖所示(由于圖過長,僅截取關鍵代碼)?

?第一步,調用IMAQ Configure List.vi告訴驅動程序是以Continuous的方式進行圖像采集,緩沖區的位置在system—也就是開發引用程序的主機上。
第二步,調用?IMAQ Configure Buffer.vi把創建好的圖像緩沖區關聯到緩沖區列表的對應位置上。
?第三步,調用IMAQ Start.vi開啟一個圖像采集的過程,需要注意的是,在調用IMAQ Start.vi前,必須調用IMAQ Configure List.vi和IMAQ Configure Buffer.vi來配置采集過程。
第四步,調用?IMAQ Extract Buffer.vi從緩沖區中把圖像提取出來。
第五步,把IMAQ Extract Buffer.vi的Buffer to Exact參數設置為-1?表示釋放當前被提取的緩沖區。IMAQ Extract Buffer.vi在提取圖像數據時會對當前被提取的緩沖區進行保護,所以當采集過程完成時,需要釋放當前被保護的緩沖區。
Ring圖像采集方式實現的主要過程如上所述,其余步驟就是大家熟悉的初始化采集硬件、釋放圖像采集硬件和釋放緩沖區了。
評論