監控和檢查系統中的視頻解碼器基本原理
視頻檢查系統已被廣泛應用于商業和工業領域。攝像頭——從黑白閉路電視(CCTV)系統中的廉價和低分辨率產品到數字視頻系統中的先進和高分辨率產品——被用于從產品檢驗、交通監管到實時人臉識別等各種應用場合。
本文引用地址:http://www.104case.com/article/156983.htm視頻本身承載有大量數據,這些數據使得信號處理和數據存儲任務變得相當復雜。通過丟棄無用的信息、只傳遞圖片的重要部分可以簡化視頻檢查系統,節省存儲器和運算周期。圖1給出了一個典型系統的組成單元。

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

圖2:LTI/CTI運算圖解。
邊緣檢測提供的是物體邊緣變化的信息,而不是物體的整個圖片,數據量能從3×8位/像素(bpp)減少到1bpp,從而節省大量存儲器空間:
640 像素 × 480像素= 307,200位(1bpp時)
800像素× 600像素= 480,000位(1bpp時)
1024像素× 768像素= 786,432位(1bpp時)
1280像素× 720像素= 921,600位(1bpp時)
通過將RGB轉換為Y,在存儲器中只存儲活動視頻的幾條線,并使用FPGA算法,我們就可以檢測物體,觀察它們的形狀。一旦知道這些物體在移動中的傳送帶上的位置,我們就能估計它們的運動,并從下一幀中采集顏色或其它信息,確保使用最少的存儲器空間。這個過程涉及:
邊緣檢測
存儲信息
預測下個位置 xn+1
從預設的產品位置區域提取信息
評論