隨著人們安全意識的提高,視頻監視系統日益普及,現已廣泛應用于機場、銀行、公共交通中心乃至私人住宅中。但傳統模擬系統存在諸多問題,這促使人們希望轉而采用數字系統。此外,隨著計算機網絡、半導體及視頻壓縮技術的日益推廣,新一代視頻監視系統將無疑采用數字技術,并將實行標準化技術,支持IP 網絡。 就因特網協議視頻監視系統 ( VSIP) 而言,處理網絡流量的硬件是攝像頭系統的重要組成部分,因為視頻信號要通過攝像頭進行數字化、壓縮處理,然后才傳輸到視頻服務器,從而解決網絡的帶寬限制問題。 DSP/ GPP 等異構處理器架構有助于最大化系統性能。視頻采集、存儲和視頻流都是中斷密集型 (Interrupt intensive) 任務,我們可將其分配給 GPP 來處理,而高密度 MIPS 視頻壓縮工作則交給 DSP 去完成。數據傳輸給視頻服務器后,服務器將壓縮視頻流作為文件存儲在硬盤驅動器上,從而避免了像傳統模擬存儲設備那樣出現視頻質量下降問題。我們針對數字視頻信號的壓縮技術開發了多種標準,可分為以下兩大類: * 運動估算 (ME) 法:每 N 幀為一個圖像組 ( GOP)。我們對圖像組中的第一幀進行獨立編碼,而對其它 (N-1) 幀來說,我們只將當前幀與其前面已編碼的幀(即前向參考幀)的時差加以編碼。常用的標準為 MPEG-2、MPEG-4、H.263 及 H.264。 * 靜態影像壓縮法:每個視頻幀作為靜態影像獨立編碼。最常用的標準為 JPEG。MJPEG 標準采用JPEG 算法對每個幀進行編碼。 運動估算法與靜態影像壓縮法的比較 圖 1 顯示了 H.264 編碼器的結構圖。與其它 ME 視頻編碼標準類似,H.264 編碼器將輸入影像分為多個16 x 16 像素的宏塊 (MB) ,然后逐塊處理。H.264 編碼器包括正向路徑和重構路徑。正向路徑將幀編碼為比特位;重構路徑從編碼位中產生一個參考幀。下圖中的 IDCT、IQ、 ME 和 MC分別代表(反向)離散余弦變換、(反向)量化、運動估算及運動補償。 圖 1:H.264 編碼器結構圖。 在正向路徑中(從 DCT至 Q),每個宏塊 (MB) 均可以幀內模式或幀間模式編碼。在幀間模式下,運動估算 (ME) 模塊將參考 MB 位于前面已編碼的幀處;而在幀內模式下,參考MB 在當前幀中由采樣形成。 重構路徑 (從 IQ 至 IDCT)的目的是確保編碼器和解碼器采用相同的參考幀生成影像。否則就會累積編碼器與解碼器間的誤差。 圖 2:JPEG 編碼器結構圖。 圖 2 給出了 JPEG 編碼器結構圖。該編碼器將輸入影像分為多個 8x8 像素的模塊,然后逐個處理。每個模塊首先通過 DCT 模塊,隨后量化器根據量化矩陣對 DCT 系數進行取整。在此過程中,編碼質量與壓縮比均可根據量化步驟調節。最后熵編碼器對量化器輸出進行編碼,并生成 JPEG 影像。 由于連續視頻幀通常包括大量相關信息,因此 ME 方法可實現更高的壓縮比。舉例來說,就每秒 30 幀的標準 NTSC 分辨率而言,H.264 編碼器能以 2 mbps 的速度進行視頻編碼,從而實現了平均壓縮比高達 60:1 的影像質量。在影像質量相同的情況下,MJPEG 的壓縮比則為10:1 至 15:1。 MJPEG 相對于 ME 方法有如下幾點優勢。首先,JPEG 需要的計算量和功耗相對大幅降低。此外,大多數PC 都配置了 JPEG 影像專用的解碼及顯示軟件。如果記錄特定事件只需一幅或幾幅影像,比如人通過門口,那么 MJPEG 的效率會更高。如果網絡帶寬沒有保證,那么我們更傾向于采用 MJPEG 標準,因為某幀的丟失或延遲不會影響其它幀。而對于 ME 方法來說,某幀的延遲或丟失會導致整個 GOP 的延遲或丟失,因為只有獲得前向參考幀 (previous reference frame) 才能對下一幀進行解碼。 許多 VSIP 攝像頭都有多個視頻編碼器,因此用戶可根據具體應用要求選擇最合適的視頻編碼器。某些攝像頭甚至還能同時執行多種編解碼器。MJPEG 對VSIP 攝像頭的要求通常是最低的,幾乎所有 VSIP 攝像頭都可安裝 JPEG 編碼器。 MJPEG 標準的實施 在典型數字監視系統中,視頻通過傳感器采集、壓縮,再以流媒體方式傳輸到視頻服務器中。新型 DSP 架構上執行的視頻編碼器任務如果發生中斷,就會出現問題,因為每次環境轉換 (context switch) 都會導致大量寄存器存儲和高速緩存釋放。因此我們應采用異構架構,這樣就能將 DSP 從視頻采集和流媒體任務中解脫出來。以下結構圖顯示了視頻監視應用中的 DSP/GPP 處理器架構實例。 圖 3:視頻監視應用中的 DSP/GPP 處理器架構實例。 在DSP/GPP SoC系統中采用MJPEG 標準時,開發人員應首先適當拆分功能模塊,以提高系統性能。 EMAC 驅動器、TCP/IP 網絡棧和 HTTP 服務器協同工作,將壓縮影像以流媒體形勢輸出。視頻采集驅動器和 ATA 驅動器均應部署在 ARM 上,這樣有助于減輕 DSP 的處理壓力。而 JPEG 編碼器應在部署在 DSP 的內核上,因為DSP VLIW 架構特別適用于這種計算強度大的工作。 一旦攝像頭通過處理器上的視頻輸入端口采集到視頻幀,原始影像就通過 JPEG 編碼器壓縮,隨后將該壓縮影像保存到設備硬盤上。 圖 4:有關視頻監視系統中基于 DaVinci 技術的 TI DM6446 數字視頻評估板的 MJPEG 數據流演示。 我們通常用 PC 監控實時視頻場景,首先檢索出視頻服務器中的流媒體,然后進行解碼,最后在顯示器上顯示視頻影像。編碼的 JPEG 影像文件可由設備通過因特網檢索,因此我們不僅可在一臺 PC 上同時監控多個視頻流,而且通過因特網能夠從多個點同時查看這些被檢索到的視頻流。VSIP 局端通過 TCP/IP 網絡能與視頻服務器相連,而且可位于網絡中任何位置。這與傳統模擬系統相比,是一個巨大的進步。就算出了問題,也只影響一個數字攝像頭,而不會影響局端。我們也可動態配置 JPEG影像質量,以滿足不同視頻質量要求。 優化JPEG編碼器 JPEG 編碼器的三大功能模塊中,DCT 與量化器的計算任務較重。我們也可以注意到,就這兩種模塊而言,高度優化的匯編代碼和未優化的 C 代碼之間存在很大的性能差異,因此有必要對這兩個模塊進行優化。 優化 2D 8x8 DCT功能模塊有助于減少加、減、乘等運算次數,避免原始方程式的冗余計算。目前已推出了眾多快速 DCT 算法,其中陳氏算法 (Chen’s algorithm) 廣為業界采用。就 2D 8x8 DCT 而言,陳氏算法需要進行 448 次加減運算以及 224 次乘法運算。 加減法和乘法功能塊可進一步拆分為多個功能單元(均部署在 DSP 內核上),以執行并行指令并提高性能。在開銷忽略不計的條件下,高度優化的 DSP 匯編代碼能在 100 個循環之內順利完成 2D DCT 計算任務。其它快速 DCT 算法要求的計算量更少,不過往往會要求更多緩沖區來保存中間計算結果。就采用管線 VLIW 架構的新型 DSP 而言,存儲器數據存取工作量比乘法運算工作量大,因此開發人員在優化算法時應考慮計算與存儲器存取之間的平衡問題。 每個像素的量化過程均需要進行乘法及加法運算。這種計算結果通常只需要 16 位的精確度即可,而 DSP 寄存器則需要 32 位。優化量化器模塊的最初想法是在單個寄存器中存儲 2 個像素,然后對這兩個像素執行加法及乘法運算;第二種方法就是并行使用多個 DSP 功能單元。由于 TMS320DM6446 中的 DSP 內核有 2 個乘法器和 2 個加法器,因此我們可同時量化高達 4 個像素。最后但不是不重要的一種做法就是充分利用管線 DSP 架構。DSP 內核在量化當前 4 個像素時,可從存儲器讀取下一組“ 4 個像素”,這樣每個循環都能向乘法器和加法器提供數據。前兩種方法由開發人員親自編寫優化的 C 代碼或匯編代碼即可實現。管線代碼可采用 DSP 編譯器。 除了優化每個功能模塊之外,我們還可采用乒乓 (PING-PONG) 緩沖技術來優化系統級 JPEG 編碼器。DSP 內核存取內部 RAM(IRAM) 中的數據的速度比存取外部 DDR2 存儲器中數據的速度快得多。但 IRAM 容量有限,不能滿足整個輸入幀的要求,因此同一時間在 IRAM 中只能處理一部分模塊。處理乒乓集時,DMA 將乒乓集從 DDR2 傳遞至 IRAM,這樣 DSP內核就能在完成當前工作后立即開始處理下面的數據。 顯然,視頻監視系統的數字化已經全面展開。了解視頻壓縮、系統分區和編解碼器優化等技術,對開發新一代視頻監視系統以滿足不斷增長的需求來說至關重要。 |