視頻檢查系統(tǒng)已被廣泛應(yīng)用于商業(yè)和工業(yè)領(lǐng)域。攝像頭——從黑白閉路電視(CCTV)系統(tǒng)中的廉價(jià)和低分辨率產(chǎn)品到數(shù)字視頻系統(tǒng)中的先進(jìn)和高分辨率產(chǎn)品——被用于從產(chǎn)品檢驗(yàn)、交通監(jiān)管到實(shí)時(shí)人臉識別等各種應(yīng)用場合。
視頻本身承載有大量數(shù)據(jù),這些數(shù)據(jù)使得信號處理和數(shù)據(jù)存儲任務(wù)變得相當(dāng)復(fù)雜。通過丟棄無用的信息、只傳遞圖片的重要部分可以簡化視頻檢查系統(tǒng),節(jié)省存儲器和運(yùn)算周期。圖1給出了一個(gè)典型系統(tǒng)的組成單元。
圖1:簡化的視頻檢查數(shù)據(jù)流程。
本文將通過幾個(gè)例子來闡述提取有用數(shù)據(jù)如何能夠使處理要求、存儲器容量和DSP使用率達(dá)到最小,并介紹ADI公司視頻解碼器的特殊性能如何能夠簡化視頻算法、加快視頻檢查系統(tǒng)的開發(fā)速度。
實(shí)例1:計(jì)數(shù)和檢驗(yàn)物體
試想一下,一條寬傳送帶正在快速傳送許多產(chǎn)品,而大量的產(chǎn)品使得人工計(jì)數(shù)非常困難。攝像頭除了能使計(jì)數(shù)任務(wù)自動化外,還能用來監(jiān)視產(chǎn)品質(zhì)量。這可以通過修改簡單的計(jì)數(shù)算法以讓它關(guān)注特定細(xì)節(jié)和瑕疵來加以實(shí)現(xiàn)。
存儲所有視頻數(shù)據(jù)需要大量存儲器,而處理大量數(shù)據(jù)也需要耗費(fèi)大量硬件資源和處理能力。因此在檢驗(yàn)傳送帶上的產(chǎn)品時(shí),系統(tǒng)不會將整個(gè)圖片數(shù)據(jù)采集進(jìn)存儲器,而是要從大量數(shù)據(jù)中找到感興趣的細(xì)節(jié),并盡可能多地丟棄無用數(shù)據(jù)。
在大多數(shù)情況下,灰度級圖片就攜帶有足夠的信息,因此可以將RGB信號轉(zhuǎn)換成(只有亮度的)Y信號,丟棄掉色度信息。然后使用邊緣檢測方法檢查單色圖片中的內(nèi)容以發(fā)現(xiàn)傳送帶上的產(chǎn)品,然后將它們的形狀與樣板進(jìn)行比較,判斷產(chǎn)品是否正常。
邊緣檢測算法——只需要活動視頻的幾條線和少量存儲器——能夠通過計(jì)算活動圖片的一階和二階導(dǎo)數(shù)發(fā)現(xiàn)相鄰像素亮度的不連續(xù)性,詳見Bernd J?hne所著的 “Digital Image Processing”一書。在實(shí)際應(yīng)用中,邊緣檢測可以通過使用矩陣計(jì)算方法提取信息來實(shí)現(xiàn),如Sobel矩陣算子。在FPGA(現(xiàn)場可編程門陣列)實(shí)現(xiàn)中,以像素為單位進(jìn)行這樣的邊緣檢測可以提供令人滿意的結(jié)果。Tanvir A. Abbasi和Mohm Usaid Abbasi合作撰寫的“A proposed FPGA Based Architecture for Sobel Edge Detection Operator”一文介紹了一種簡單的FPGA實(shí)現(xiàn)方案。還可以通過增加高斯二維濾波器消除噪聲,詳見Mathukumar Venkatesan和Daggu Venkateshwar Rao合著的“ Hardware Acceleration of Edge Detection Algorithm on FPGAs”。這篇文章介紹了一個(gè)類似于Canny邊緣檢測器的檢測器成功實(shí)現(xiàn)案例。
還有其它幾種優(yōu)化算法可以用來提高圖片質(zhì)量,但這些算法都要占用FPGA設(shè)計(jì)中的寶貴資源。然而,一些集成電路(IC)視頻解碼器已經(jīng)集成了實(shí)用的預(yù)處理算法或?yàn)V波器,因此選擇這樣的IC可以節(jié)省FPGA資源。例如, ADV7802 視頻解碼器就包含了亮度瞬態(tài)改進(jìn)(LTI)和色度瞬態(tài)改進(jìn)(CTI)模塊。這些模塊通過改善亮度和色度變化的銳度來提高圖片質(zhì)量,并使用自適應(yīng)峰值和非線性方法——不會增加噪聲或引入瑕疵——在邊緣檢測過程中非常有用。另外,亮度整形和其它內(nèi)置輸入濾波器可以消除源自信號源的高頻噪聲——專注于信號,忽略偶然出現(xiàn)的噪聲。
圖2:LTI/CTI運(yùn)算圖解。
邊緣檢測提供的是物體邊緣變化的信息,而不是物體的整個(gè)圖片,數(shù)據(jù)量能從3×8位/像素(bpp)減少到1bpp,從而節(jié)省大量存儲器空間:
640 像素 × 480像素= 307,200位(1bpp時(shí))
800像素× 600像素= 480,000位(1bpp時(shí))
1024像素× 768像素= 786,432位(1bpp時(shí))
1280像素× 720像素= 921,600位(1bpp時(shí))
通過將RGB轉(zhuǎn)換為Y,在存儲器中只存儲活動視頻的幾條線,并使用FPGA算法,我們就可以檢測物體,觀察它們的形狀。一旦知道這些物體在移動中的傳送帶上的位置,我們就能估計(jì)它們的運(yùn)動,并從下一幀中采集顏色或其它信息,確保使用最少的存儲器空間。這個(gè)過程涉及:
邊緣檢測
存儲信息
預(yù)測下個(gè)位置 xn+1
從預(yù)設(shè)的產(chǎn)品位置區(qū)域提取信息
例子2:檢測運(yùn)動和質(zhì)量
機(jī)器人可以尋找特定距離和有限范圍內(nèi)的目標(biāo)。在一些應(yīng)用中可以使用超聲波;但如果物體表面會吸收超聲波或目標(biāo)在玻璃后面,可以使用視頻。攝像頭焦距設(shè)定在鄰近物體上。在近距離范圍內(nèi)的物體會有清晰的邊緣,而范圍之外的背景物只有模糊的邊緣(圖3)。
圖3:焦距——窄的景深。
邊緣檢測可以用來分辨目標(biāo)距離范圍內(nèi)的物體,因?yàn)樗鼈兪俏ㄒ痪哂星逦吘壍奈矬w。背景中的物體將足夠模糊,不能通過邊緣檢測測試。這種邊緣檢測處理將產(chǎn)生一個(gè)二元位圖,其中1表示檢測到一個(gè)邊緣,0表示沒有檢測到邊緣。每個(gè)檢測到的邊緣像素的位置(x,y)可以代入公式1近似算出被隔離物體的中點(diǎn):
(1)
其中 xn是邊緣像素n的x軸位置,yn 是邊緣像素n的y軸位置,N是檢測到的邊緣像素的數(shù)量。
一旦物體位置及其邊緣已知,我們就可以試著進(jìn)行跟蹤。關(guān)鍵是從圖片中正確提取物體,將它的邊緣轉(zhuǎn)換成輪廓,然后用來判斷物體是否在朝攝像頭移動,方法是檢查像素距物體中心的平均距離以便判斷物體尺寸是否在改變,如公式2所示:
(2)
N是FRAME幀中的邊緣像素?cái)?shù)量,M是FRAME-1幀中的邊緣像素?cái)?shù)量。聚焦橫軸可以得到公式3:
(3)
當(dāng)物體朝攝像頭移動時(shí)(像素從物體中心向外擴(kuò)展),這個(gè)公式的值是正的。負(fù)值意味著物體正在遠(yuǎn)離攝像頭,如圖4所示。
圖4:移動中物體的幀變化。
請注意,物體必須在攝像頭焦距范圍內(nèi)。通過修改算法我們可以主動改變焦距以掃描更大的面積。一旦檢測到物體就可以進(jìn)行分段、處理和跟蹤。
隨著視頻復(fù)雜度的增加,跟蹤物體將變得更加困難,特別是有紋理的物體以及由于移動速度過快而失去銳度的物體。Jianbo Shi所著的“Good Features to Track”一文介紹了一些跟蹤算法。當(dāng)物體失去銳度時(shí),邊緣檢測將會失敗。在這種情況下使用復(fù)數(shù)相關(guān)技術(shù)(如模塊匹配)——用來估算運(yùn)動——或采用Yao Wang、J?rn Ostermann和Ya-Qin Zhang三人合著的“Video Processing and Communications”一書中詳細(xì)介紹的其它方法仍可以完成跟蹤。
由于攝像頭提供的是連續(xù)的數(shù)據(jù)流,因此可以通過跟蹤物體判斷它的加速度和其它參數(shù)。然而,必須使用高質(zhì)量的視頻序列才能獲得良好的視頻分析結(jié)果。當(dāng)通過分析相鄰像素檢測邊緣時(shí),逐行掃描視頻要比低質(zhì)量的隔行PAL或NTSC信號具有更好的分辨率。ADV7401 和ADV7403 視頻解碼器可以接受各種視頻標(biāo)準(zhǔn),包括逐行模式。這兩款器件能夠數(shù)字化處理高達(dá)140MHz的視頻信號,并且能夠處理標(biāo)清、增強(qiáng)清晰度和高清分量信號、CVBS和圖形。另外,它們還支持非標(biāo)準(zhǔn)視頻模式,允許使用不太流行的標(biāo)準(zhǔn),比如STANAG。靈活的像素輸出總線允許處理4:2:2、4:4:4 YcbCr或4:4:4 RGB格式的數(shù)據(jù)。非標(biāo)準(zhǔn)視頻格式可以通過過采樣或欠采樣達(dá)到特定的水平寬度,詳見應(yīng)用筆記 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:單個(gè)CSC通道(ADV7403)。
CSC非常有用。當(dāng)輸入為RGB或YCbCr時(shí),色彩信息可以用色彩空間矩陣進(jìn)行簡單的轉(zhuǎn)換。圖6給出了類似于YCbCr的YUV色彩空間。
圖6:產(chǎn)品質(zhì)量評估中使用的YUV色彩空間可以用來檢測(例如)產(chǎn)品是否燒焦或變質(zhì)了。Y(亮度)是常數(shù)。
如圖6所示,色彩(或YPrPb值)有助于檢測產(chǎn)品質(zhì)量,例如是否燒焦或變質(zhì)。色彩空間轉(zhuǎn)換在視頻處理中以及與使用其它標(biāo)準(zhǔn)的IC連接時(shí)都很有必要。ADV7401/ADV7403內(nèi)置輸入多路復(fù)用器,可以方便地切換視頻源,這個(gè)特性在從一條停止的傳送帶切換到另一條運(yùn)轉(zhuǎn)中的傳送帶時(shí)非常有用。
例子3:調(diào)整視頻檢查中的白平衡和色彩平衡
開發(fā)一個(gè)從圖片中提取物體的視頻系統(tǒng)需要付出艱苦的努力,因?yàn)楣饩€角度或強(qiáng)度的些許變化都會影響檢驗(yàn)結(jié)果。視頻工程師可以使用ADV7401/ADV7403的增益和偏移調(diào)整功能來調(diào)整亮度與對比度,只需在傳送帶上增加兩條很短的參考條紋(一條暗的,一條亮的)。ADV7401/ADV7403的偏移和增益經(jīng)調(diào)整后得到可比較的值,從而使系統(tǒng)可對光線顏色、角度和強(qiáng)度方面的變化進(jìn)行補(bǔ)償。
圖7:在可視區(qū)域增加小段參考條紋。
用于調(diào)整正確白平衡的算法非常簡單。首先,取得參考條紋的RGB(或YCbCr)值。然后,為了補(bǔ)償光線變化,可以通過簡單地改變器件的偏移和增益達(dá)到與參考值相同的值。這種算法可以用來:
取得暗條紋的RGB(或YCbCr)值
調(diào)整偏移以匹配暗條紋的理想RGB(或YCbCr)值
取得亮條紋的RGB(或YCbCr)值
調(diào)整增益以匹配亮條紋的理想RGB(或YCbCr)值
為了提高精度,可重復(fù)步驟2和步驟4
這個(gè)過程在系統(tǒng)開發(fā)期間尤其重要,因?yàn)樗芴峁┱_的偏移(亮度)和增益(對比度)——即使在光線太強(qiáng)或太弱的時(shí)候,如圖8所示。偏移和增益寄存器可以通過I2C總線訪問,從而能夠?qū)崿F(xiàn)快速自適應(yīng)。
圖8:通過調(diào)整偏移和增益來補(bǔ)償環(huán)境光線的變化。
色彩也可以用于參考條紋。這種補(bǔ)償與白平衡類似,并得到廣泛使用。不過雖然白平衡比較符合人類的感知,色彩校正卻可補(bǔ)償由于不同照明引起的變化。雖然算法類似,但額外的偏移將導(dǎo)致暗色看起來不自然。ADV7401/ADV7403色彩空間轉(zhuǎn)換、靈活的輸出像素端口以及偏移與增益調(diào)整寄存器允許工程師使用已經(jīng)準(zhǔn)備好的數(shù)據(jù)快速開發(fā)算法。如前所述,很重要的一點(diǎn)是減少視頻處理所需的數(shù)據(jù)量、盡量避免將高級算法用于簡單視頻。具備易訪問像素端口的ADV7401/ADV7403評估板已可供貨,它能加快新設(shè)計(jì)的啟動。只需簡單地將視頻捕獲板插進(jìn)這塊評估板的像素端口即能實(shí)現(xiàn)視頻數(shù)據(jù)的捕獲(圖9)。
圖9:ADV7401/ADV7403評估板上的像素總線。
視頻編碼器、視頻DAC和AD9889B HDMI發(fā)送器被連接到同一像素總線,允許在第二個(gè)輸出端口檢查當(dāng)前圖片。ADI公司的視頻解碼器包含了視頻處理所需的模塊,可提供魯棒性能和穩(wěn)定圖片。
結(jié)束語
視頻攝像頭可以在工業(yè)應(yīng)用中帶來許多好處。當(dāng)移動物體必須被分類、跟蹤或記錄時(shí),這是特別重要的。帶高集成度視頻解碼器的視頻技術(shù)和實(shí)時(shí)處理功能可以用來高效地分析移動中的傳送帶上面的物體或分類傳送帶上面的混合產(chǎn)品。
評論
查看更多