[筆記] 視訊壓縮技術

  • 淺談視訊壓縮技術
資料來源:視訊通訊實驗室 vclab
JPEG 壓縮的流程 
原始影像 -> 切成很多 8x8 窗格
  1. 做Transform Coding 就是做DCT轉換 從 spatial domain 轉到  frequency domain (不失真),得到 DCT Coefficients
  1. 做 Quantization -> 讓轉換後的 coefficients 每個值都除一個數值,這是造成壓縮失真的最主要步驟!
  1. 除完後的結果,會有很多不重要的高頻資訊全部變成0 -> 再將這個二維資料使用zig-zag順序轉一維

Video 壓縮
Video 可以視為很多image frame
每張 frame 獨立壓縮:Quality 最好 效率差
參考前一張 frame 做壓縮,最有效率!
整個 video sequence 包含的 frame 可以分成兩種
intra frame (I-frame) 可以獨立壓縮的 frame
P-frame 這種要參考前一張 frame 去做壓縮,所以他不可以獨立壓縮

用 Motion Estimation 方法尋找 Motion Vector 
例如我們要找右圖的frame藍色框框的Motion vector 
我們跳到前一張 frame (左圖) 去找藍色框框附近的 Search Area 區域,pixel-by-pixel 比對,找出最match藍色框框的區塊
找到紅色框框! 找到了以後,紅色框框到藍色框框之間的差距就是 Motion Vector
目前有了前一張圖加上 Motion Vector 會得到類似下圖左下那格的樣子
最後一步驟,還需要跟原圖做 residual 壓縮 (Motion Completion)
所以
我們把前一張 frame 加上 motion vector 全部傳給 decoder 看,decoder 就會依據這些資訊,加上residual就可以解出下一張frame該有的樣子!

影片壓縮編碼流程圖

影片解碼流程圖
影像一開始一定是一張 I frame 然後接一串 P frame 但是因為 P frame 失真較多,不可能一直連續下去,所以又會再穿插一個 I frame 然後再接一串 P frame 如次一串一串連貫下去
每一串稱為 Group of Pictures 簡稱 GoP ,一部影片就是由很多很多 GoP 所組成!

[整理]
I frame
  • 自己獨立壓縮,沒有參考其他的影像
P frame
  • 參考前一張 I 或 P frame
B frame
  • 參考前後兩張 I 或 P frame,並沒有給其他 frame 作為參考
解碼順序 -> I P B B P B B P B B 
播放順序 -> I B B P B B P B B P
解碼到播放之間會有 latency 需要有 buffer
所以做直播用途的話,比較不會使用 B frame 下去做(會延遲)

留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking