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

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

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

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

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

(2)
N是FRAME幀中的邊緣像素數(shù)量,,M是FRAME-1幀中的邊緣像素數(shù)量,。聚焦橫軸可以得到公式3:

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

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

(4)

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

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

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

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

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