【導讀】視頻檢查1系統已被廣泛應用于商業(yè)和工業(yè)領(lǐng)域。攝像頭—從黑白閉路電視(CCTV) 系統中的廉價(jià)和低分辨率產(chǎn)品到數字視頻系統中 的先進(jìn)和高分辨率產(chǎn)品—被用于從產(chǎn)品檢驗、交通監管到實(shí)時(shí)人臉識別等各種應用場(chǎng)合。
視頻本身承載有大量數據,這些數據使得信號處理和數據存儲任務(wù)變得相當復雜。通過(guò)丟棄無(wú)用的信息、只傳遞圖片的重要部分可以 簡(jiǎn)化視頻檢查系統,節省存儲器和運算周期。圖1給出了一個(gè)典型系統的組成單元。

圖1. 簡(jiǎn)化的視頻檢查數據流程。
本文將通過(guò)幾個(gè)例子來(lái)闡述提取有用數據如何能夠使處理要求、存 儲器容量和DSP使用率達到最小,并介紹ADI公司 視頻解碼器 2的特 殊性能如何能夠簡(jiǎn)化視頻算法、加快視頻檢查系統的開(kāi)發(fā)速度。
實(shí)例1. 計數和檢驗物體
試想一下,一條寬傳送帶正在快速傳送許多產(chǎn)品,而大量的產(chǎn)品使得人工計數非常困難。攝像頭除了能使計數任務(wù)自動(dòng)化外,還能用來(lái) 監視產(chǎn)品質(zhì)量。這可以通過(guò)修改簡(jiǎn)單的計數算法以讓它關(guān)注特定細節和瑕疵來(lái)加以實(shí)現。
存儲所有視頻數據需要大量存儲器,而處理大量數據也需要耗費大量硬件資源和處理能力。因此在檢驗傳送帶上的產(chǎn)品時(shí),系統不會(huì ) 將整個(gè)圖片數據采集進(jìn)存儲器,而是要從大量數據中找到感興趣的細節,并盡可能多地丟棄無(wú)用數據。
在大多數情況下,灰度級圖片就攜帶有足夠的信息,因此可以將 RGB信號轉換成(只有亮度的)Y信號,丟棄掉色度信息 。然后使用邊緣檢 測方法檢查單色圖片中的內容以發(fā)現傳送帶上的產(chǎn)品,然后將它們的形狀與樣板進(jìn)行比較,判斷產(chǎn)品是否正常
邊緣檢測算法—只需要活動(dòng)視頻的幾條線(xiàn)和少量存儲器—能夠通 過(guò)計算活動(dòng)圖片的一階和二階導數發(fā)現相鄰像素亮度的不連續性,詳見(jiàn)Bernd Jähne所著(zhù)的 Digital Image Processing 一 書(shū)3。在實(shí)際應用中,邊緣檢測可以通過(guò)使用矩陣計算方法提取信息來(lái)實(shí)現,如Sobel4 矩陣算子。在FPGA(現場(chǎng)可編程門(mén)陣列)實(shí)現中,以像素為單位進(jìn)行這樣的邊緣檢測可以提供令人滿(mǎn)意的結果。 Tanvir A. Abbasi和Mohm Usaid Abbasi5合作撰寫(xiě)的"A proposed FPGA Based Architecture for Sobel matrix operator一文介紹了一種簡(jiǎn)單的 FPGA 實(shí)現 方案。還可以通過(guò)增加高斯二維濾波器消除噪聲,詳見(jiàn) Mathukumar Venkatesan 和 Daggu Venkateshwar Rao 6 合著(zhù)的""Hardware Acceleration of Edge Detection Algorithm on FPGAs" 。這篇文章介紹了一個(gè)類(lèi)似于Canny 邊緣檢測器 的檢測器成功實(shí)現案例 7 。
還有其它幾種優(yōu)化算法可以用來(lái)提高圖片質(zhì)量,但這些算法都要占用FPGA設計中的寶貴資源。然而,一些集成電路(I C) 視頻解碼器已 經(jīng)集成了實(shí)用的預處理算法或濾波器,因此選擇這樣的IC可以節省FPGA資源。例如 ADV7802 視頻解碼器8就包含了 亮度瞬態(tài)改進(jìn) (LTI) 和 色度瞬態(tài)改進(jìn) (CTI) 模塊. T這些模塊通過(guò)改善亮度和色度變化的 銳度來(lái)提高圖片質(zhì)量,并使用自適應峰值和非線(xiàn)性方法—不會(huì )增加噪聲或引入瑕疵—在邊緣檢測過(guò)程中非常有用。另外,亮度整形和 其它內置輸入濾波器可以消除源自信號源的高頻噪聲—專(zhuān)注于信號,忽略偶然出現的噪聲。

圖2. LTI/CTI運算圖解
邊緣檢測提供的是物體邊緣變化的信息,而不是物體的整個(gè)圖片,數據量能從3×8位/像素(bpp) 減少到1bpp,從而節省大量存儲器空間:
● 640 像素 × 480 像素= 307,200 位 (1bpp時(shí))
● 800 像素 × 600 像素 = 480,000 位 (1bpp時(shí))
● 1024 像素 × 768 像素 = 786,432 位 (1bpp時(shí))
● 1280 像素 × 720 像素 = 921,600 位 (1bpp時(shí))
通過(guò)將RGB轉換為Y,在存儲器中只存儲活動(dòng)視頻的幾條線(xiàn),并使用FPGA算法,我們就可以檢測物體,觀(guān)察它們的形狀。一旦知道這些 物體在移動(dòng)中的傳送帶上的位置,我們就能估計它們的運動(dòng),并從下一幀中采集顏色或其它信息,確保使用最少的存儲器空間。這個(gè)過(guò)程涉及:
1.邊緣檢測
2.存儲信息
3.預測下個(gè)位置xn+1
4.從預設的產(chǎn)品位置區域提取信息
例子2. 檢測運動(dòng)和質(zhì)量
機器人可以尋找特定距離和有限范圍內的目標。在一些應用中可以使用超聲波;但如果物體表面會(huì )吸收超聲波或目標在玻璃后面,可 以使用視頻。攝像頭焦距設定在鄰近物體上。在近距離范圍內的物體會(huì )有清晰的邊緣,而范圍之外的背景物只有模糊的邊緣(圖3)。

圖3. 焦距—窄的景深。
邊緣檢測可以用來(lái)分辨目標距離范圍內的物體,因為它們是唯一具有清晰邊緣的物體。背景中的物體將足夠模糊,不能通過(guò)邊緣檢測 測試。這種邊緣檢測處理將產(chǎn)生一個(gè)二元位圖,其中1表示檢測到一個(gè)邊緣,0 表示沒(méi)有檢測到邊緣。每個(gè)檢測到的邊緣像素的位置(x,y) 可以代入公式1近似算出被隔離物體的中點(diǎn):

其中xn是邊緣像素n的x軸位置,yn是邊緣像素n的y軸位置, N是檢測到的邊緣像素的數量。
一旦物體位置及其邊緣已知,我們就可以試著(zhù)進(jìn)行跟蹤。關(guān)鍵是從圖片中正確提取物體,將它的邊緣轉換成輪廓,然后用來(lái)判斷物體 是否在朝攝像頭移動(dòng),方法是檢查像素距物體中心的平均距離以便判斷物體尺寸是否在改變,如公式2所示

N是FRAME幀中的邊緣像素數量,M是F R A M E-1幀中的邊緣像素數量。
聚焦橫軸可以得到公式3

當物體朝攝像頭移動(dòng)時(shí)(像素從物體中心向外擴展),這個(gè)公式的值是正的。負值意味著(zhù)物體正在遠離攝像頭,如圖4所示。

圖4. 移動(dòng)中物體的幀變化。
請注意,物體必須在攝像頭焦距范圍內。通過(guò)修改算法我們可以 主動(dòng)改變焦距 以?huà)呙韪蟮拿娣e。一旦檢測到物體就可以進(jìn)行分段、處理和跟蹤。
隨著(zhù)視頻復雜度的增加,跟蹤物體將變得更加困難,特別是有紋理的物體以及由于移動(dòng)速度過(guò)快而失去銳度的物體。Jianbo Shi所著(zhù)的 "Good Features to Track" 一文介紹了一些跟蹤算法。當物體失去 銳度時(shí),邊緣檢測將會(huì )失敗。在這種情況下使用復數相關(guān)技術(shù)(如 模塊匹配)—用來(lái)估算運動(dòng)—或采用Yao Wang、J örn Os termann和Ya-Qin Zhang三人合著(zhù)的 "Video Processing and Communications" 一書(shū)中詳細介紹的其它方法仍可以完成跟蹤.
由于攝像頭提供的是連續的數據流,因此可以通過(guò)跟蹤物體判斷它的加速度和其它參數。然而,必須使用高質(zhì)量的視頻序列才能 獲得良好的視頻分析結果。當通過(guò)分析相鄰像素檢測邊緣時(shí),逐行掃描視頻要比低質(zhì)量的隔行PAL或NTSC信號具有更好的分辨率。 ADV7401 和 ADV7403 視頻解碼器12可以接受各種視頻標準,包括逐 行模式。這兩款器件能夠數字化處理高達140M H z的視頻信號,并且能夠處理標清、增強清晰度和高清分量信號、 CVBS和圖形。另外,它們還支持非標準視頻模式,允許使用不太流行的標準,比如STANAG。靈活的像素輸出總線(xiàn)允許處理 4:2:2、4:4:4 YcbCr或4:4:4 RGB格式的數據。非標準視頻格式可以通過(guò)過(guò)采樣或欠采樣達到特定的水平寬度,詳見(jiàn)應用筆記 AN-0978, "Component Processor Nonstandard Video Formats".
圖5所示的內置色彩空間轉換器(C S C) 可以轉換彩色空間以滿(mǎn)足用戶(hù)要求(公式4,其中A1...A4,B1...B4,C1...C4 都是可調整的CSC參數)。YPrPb或RGB輸入信號可以用可配置矩陣轉換功能轉換成其它格式。例如,將RGB轉換成YCbCr 允許丟棄色度信息(Cb,Cr),通過(guò)使用單色圖片可簡(jiǎn)化邊緣檢測.


圖5. 單個(gè)CSC通道(ADV7403)。
CSC非常有用。當輸入為RGB或YCbCr時(shí),色彩信息可以用色彩空間矩陣進(jìn)行簡(jiǎn)單的轉換。圖6 給出了類(lèi)似于YCbCr的YUV色彩空間。

圖6. 產(chǎn)品質(zhì)量評估中使用的YUV色彩空間可以用來(lái)檢測(例如)產(chǎn)品是否燒焦或變質(zhì)了。Y(亮度)是常數。
如圖6所示,色彩( 或YPrPb值 )有 助 于 檢 測 產(chǎn) 品 質(zhì) 量,例 如 是 否 燒 焦或變質(zhì)。色彩空間轉換在視頻處理中以及與使用其它標準的 IC連接時(shí)都很有必要。A D V 74 01/A D V 74 0 3內 置 輸 入多 路 復 用 器,可 以 方 便 地 切換視頻源,這個(gè)特性在從一條停止的傳送帶切換到另一條運轉中的傳送帶時(shí)非常有用
例子3. 調整視頻檢查中的白平衡和色彩平衡
開(kāi)發(fā)一個(gè)從圖片中提取物體的視頻系統需要付出艱苦的努力,因為光線(xiàn)角度或強度的些許變化都會(huì )影響檢驗結果。視頻工程師可以使用 A D V 74 01/A D V 74 0 3的增益和偏移調整功能來(lái)調整亮度與對比度,只需在傳送帶上增加兩條很短的參考條紋(一條暗的,一條亮的)。A D V 74 01/A D V 74 0 3 的偏移和增益經(jīng)調整后得到可比較的值,從而使系統可對光線(xiàn)顏色、角度和強度方面的變化進(jìn)行補償。

圖7. 在可視區域增加小段參考條紋。
用于調整正確 白平衡 的算法非常簡(jiǎn)單。首先,取得參考條紋的 RGB(或YCbCr)值。然后,為了補償光線(xiàn)變化,可以通過(guò)簡(jiǎn)單地改變器件的偏移和增益達到與參考值相同的值。這種算法可以用來(lái):
1.取得暗條紋的RGB(或YCbCr)值
2.調整偏移以匹配暗條紋的理想RGB(或YCbCr)值
3.取得亮條紋的RGB(或YCbCr)值
4.調整增益以匹配亮條紋的理想RGB(或YCbCr)值
5.為了提高精度,可重復步驟2和步驟4
這個(gè)過(guò)程在系統開(kāi)發(fā)期間尤其重要,因為它能提供正確的偏移(亮度) 和增益(對比度)—即使在光線(xiàn)太強或太弱的時(shí)候,如圖8所示。偏移和增益寄存器可以通過(guò)I2C總線(xiàn)訪(fǎng)問(wèn),從而能夠實(shí)現快速自適應。

圖8. 通過(guò)調整偏移和增益來(lái)補償環(huán)境光線(xiàn)的變化。
色彩也可以用于參考條紋。這種補償與白平衡類(lèi)似,并得到廣泛使用。不過(guò)雖然白平衡比較符合人類(lèi)的感知,色彩校正卻可補償由于 不同照明引起的變化。雖然算法類(lèi)似,但額外的偏移將導致暗色看起來(lái)不自然。A D V 74 01/A D V 74 0 3色彩空間轉換、靈活的輸出像素端口 以及偏移與增益調整寄存器允許工程師使用已經(jīng)準備好的數據快速開(kāi)發(fā)算法。如前所述,很重要的一點(diǎn)是減少視頻處理所需的數據 量、盡量避免將高級算法用于簡(jiǎn)單視頻。具備易訪(fǎng)問(wèn)像素端口的A D V 74 01/A D V 74 0 3評估板已可供貨,它能加快新設計的啟動(dòng)。只需簡(jiǎn) 單地將視頻捕獲板插進(jìn)這塊評估板的像素端口即能實(shí)現視頻數據的捕獲(圖9)。

圖9. ADV7401/ADV7403評估板上的像素總線(xiàn)
視頻編碼器、視頻DAC和 AD9889B HDMI 發(fā)送器被連接到同一像素總線(xiàn),允許在第二個(gè)輸出端口檢查當前圖片。ADI公司的視頻解碼器 包含了視頻處理所需的模塊,可提供魯棒性能和穩定圖片.
結束語(yǔ)
視頻攝像頭可以在工業(yè)應用中帶來(lái)許多好處。當移動(dòng)物體必須被分類(lèi)、跟蹤或記錄時(shí),這是特別重要的。帶高集成度視頻解碼器的視 頻技術(shù)和實(shí)時(shí)處理功能可以用來(lái)高效地分析移動(dòng)中的傳送帶上面的物體或分類(lèi)傳送帶上面的混合產(chǎn)品
推薦閱讀: