NI-IMAQ記憶體分配



主要軟體: Driver Software>>NI-IMAQ
主要軟體版本: 2.2
主要軟體修正版本: N/A
次要軟體: N/A

問題:

NI-IMAQ是如何知道要分配多少記憶體給影像擷取?而這些影像的Buffer在記憶體中會被相鄰被配置嗎?



解答:

IMAQ Create VI會建立一個指標去指向一個未初始化且長度為0IMAQ Buffer。而實際上的影像擷取用的記憶體配置則是要利用IMAQ Configure Buffer VI。一般在low level的程式撰寫中呼叫IMAQ Configure Buffer VI,會置於IMAQ Init VI去設定擷取卡與實際影像擷取之間。而IMAQ Configure Buffer VI會根據卡片設定與相機格式去調整IMAQ Buffer的大小。如果要使用高階的IMAQ VI (IMAQ Snap, IMAQ Grab Setup, 或是 IMAQ Sequence),則IMAQ Configure Buffer VI會在高階VI內部被呼叫。也因此Buffer相關設定也會在IMAQ ReadFile VI內部完成。


LabVIEW中,影像reference資料型態包含了指標去指向LabVIEW內的架構,而非Buffer本身。為了取用真實的BufferIMAQ GetImagePixelPtr可以回傳指向影像記憶體的位置資訊。影像的數值會是由左上至右下的順序儲存在記憶體中。

 

舉例來說,第0行第0列的像素值會在影像的最左上角。線上協助的GetImagePixelPtr VI說明也包含了影像資料在記憶體中的架構。這個VI會回傳所有可能會需要的影像資料 (舉例來說,需要把影像傳遞給DLL的狀況)

 

Buffer配置實際上是透過作業系統去分配的。儘管可以確保單一Buffer在記憶體中是連續完整的,但還是無法確定相關的buffer位置。然而, RAM是可以取用任何物理位址,因此在取用影像時,buffer之間的相對位置並不會影響實際效能。

相關連結: KnowledgeBase 3E7HPRWX: What Is the Byte Layout of IMAQ Buffer for RGB and HSL Images?
KnowledgeBase 322FBR45: How Can I Monitor Memory Used to Store Images for IMAQ Applications?
Developer Zone Tutorial: Memory Management with IMAQ
Developer Zone Tutorial: Improving Memory Allocation with NI-IMAQ and the NI PCIe-1429

附加檔案:





報告日期: 10/15/1999
最後更新: 01/19/2015
文件偏號: 1QE846YJ