LabVIEW圖像采集相關(guān)(一)

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

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

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

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