這里使用三個隊列完成采集和處理同步。
DMA隊列:
當(dāng)CMOS或CCD芯片曝光然后將數(shù)據(jù)轉(zhuǎn)到相機緩存后,這時候DMA會負責(zé)將緩存中數(shù)據(jù)寫入到“DMA隊列”頭Buffer中。
準備隊列:
一旦“DMA隊列”頭Buffer被填充完成,會被加到“準備隊列”尾后,這時候會發(fā)送中斷通知用戶程序:當(dāng)前又有一幀數(shù)據(jù)采集完成,您看著處理吧。
處理隊列:
當(dāng)用戶接收到中斷會自動跳轉(zhuǎn)到中斷函數(shù)中,使用GetFrame拿取“準備隊列”頭Buffer,然后加到當(dāng)前用戶程序“處理隊列”尾,用戶程序從“處理隊列”頭拿取Buffer處理完成后使用PutFrame將Buffer再添加到原始的“DMA隊列”尾。

智能相機一般由圖像采集單元、圖像處理單元、圖像處理軟件、網(wǎng)絡(luò)通信裝置等構(gòu)成,各部分的功能如下:
1.圖像采集單元:在智能相機中,圖像采集單元相當(dāng)于普通意義上的CCD/CMOS相機和圖像采集卡。它將光學(xué)圖像轉(zhuǎn)換為模擬/數(shù)字圖像,并輸出至圖像處理單元。
2.圖像處理單元:圖像處理單元類似于圖像采集、處理卡。它可對圖像采集單元的圖像數(shù)據(jù)進行實時的存儲,并在圖像處理軟件的支持下進行圖像處理。
3、圖像處理軟件:圖像處理軟件主要在圖像處理單元硬件環(huán)境的支持下,完成圖像處理功能。如幾何邊緣的提取、Blob、灰度直方圖、OCV/OVR、簡單的定位和搜索等。在智能相機中,以上算法都封裝成固定的模塊,用戶可直接應(yīng)用而無需編程。
4、網(wǎng)絡(luò)通信裝置:網(wǎng)絡(luò)通信裝置的智能相機的重要組成部分,主要完成控制信息、圖像數(shù)據(jù)的通信任務(wù)。智能相機一般均內(nèi)置以太信裝置,并支持多種標準網(wǎng)絡(luò)和總線協(xié)議,從而使多臺智能相機構(gòu)成更大的機器視覺系統(tǒng)。
機器視覺智能相機與工業(yè)相機區(qū)別,簡言之:智能相機是一種高度集成化的微小型機器視覺系統(tǒng);而工業(yè)相機是機器視覺系統(tǒng)的組成部分之一

可以看到相機編程需要做三方面工作:
1.初始化操作
首先初始化相機驅(qū)動Com環(huán)境,然后遍歷得到當(dāng)前的相機列表,根據(jù)相機ID或List 編號選擇對應(yīng)相機。
之后連接指定相機,首先設(shè)置本次采集的相機參數(shù)(幀速、圖像大小、縮放比等),然后是分配和注冊當(dāng)前DMA隊列,這里有的是用戶完成,有的是SDK完成。
之后先開啟DMA邏輯等待相機采圖,然后使相機開始工作采圖,整個系統(tǒng)就按照之前工作流程運作起來了,許多SDK將“開啟DMA”和“相機開始工作”合并為“開始采集”。
2.結(jié)束操作
先停止相機工作再關(guān)閉DMA邏輯,許多SDK將“開啟DMA”和“相機開始工作”合并為“結(jié)束采集”。
然后清理DMA隊列,和分配時對應(yīng),這里有的是用戶完成,有的是SDK完成。
后斷開相機并清理工作環(huán)境。

隨著科技的日漸成熟,工業(yè)相機得到了飛速發(fā)展。近幾年國外的工業(yè)相機廠商快速崛起,成為機器視覺領(lǐng)域的,比較有代表性的有:basler相機、灰點相機等。下面我們來看一下工業(yè)相機的主要參數(shù):
1.分辨率:是指該像元傳感器對不同光波的敏感特性,一般響應(yīng)范圍是350nm-1000nm,一些相機在靶面前加了一個濾鏡,濾除紅外光線,如果系統(tǒng)需要對紅外感光時可去掉該濾鏡。
2.像素深度:這個參數(shù)也在一定程度上影響著圖像質(zhì)量的好壞。
3.幀率:這個參數(shù)是相機采取傳輸圖像速率的一個重要的衡量標準,對于一般的面陣相機一般為每秒采集的幀數(shù),對于大多數(shù)線陣相機為每秒采集的行數(shù),這是選擇工業(yè)相機時得考慮的必不可少的一個參數(shù)
4.曝光方式:不同的工業(yè)相機有著不同的曝光方式。線陣相機一般采用的是逐行曝光方式,面陣相機一般采用幀曝光和滾動行曝光,還有一些面陣相機才用的是場曝光。
5.像元尺寸:像元大小和分辨率共同決定了相機的靶面的大小。而相機靶面有對圖像的成像質(zhì)量有著很大的影響。一般情況下,像元的尺寸越小,越難制造,但是越小的像元成像的質(zhì)量也就越高。
6.接口類型:不同的工業(yè)相機有著不同的接口類型。主要有GIGE千兆網(wǎng)、USB2.0、USB3.0、Camera Link1394A、1394B、等多種類型的接口
-/hbahbeb/-