10bit 8bit 編碼 、Chroma subsampling不同的差異


最近想弄一些bdrip,所以做了一下基本的研究關於color space 與 採樣顏色的差異
source

首先講一下Chroma subsampling是什麼東西
眼睛對亮度最為敏感再接下來才是色度、濃度

在數位化資料中也是採取這個方式進行
也就是一般認知的 YUV or YCbCr
而採樣的方式主要有4:4:4、4:2:2、4:2:0
第一個數字是亮度的解析度 4代表1:1完全採樣
眼睛對亮度最敏感當然這邊絕對需要完全採樣
4:4:4代表的意思是顏色 垂直採樣1:1 水平採樣1:1 非Y之其他兩分量示意圖
4:2:2代表的意思是顏色 垂直採樣1:1 水平採樣2:1 非Y之其他兩分量示意圖
4:2:0代表的意思是顏色 垂直採樣2:1 水平採樣2:1 非Y之其他兩分量示意圖

越編碼越模糊,很大一部份的原因在於Chroma subsampling的部份
目前主流是4:2:0(BD、DVD都是這個),每編碼一次 色度部份就模糊一半
雖然由於亮度1:1完全採樣 即便色度採樣模糊一半 實際上帶來的模糊感沒這麼嚴重
這邊有範例說明

Q:採樣1:1、2:1 會影響到編碼出來影片的大小嗎?
A:不會,影片採的是失真壓縮,只要內容沒有變得更複雜
採樣的方式不會影響到編碼出來影片的大小
會受到影響的是未壓縮的raw 影片,這在錄影 或者需要傳輸raw訊號的應用有影響

就我自己嘗試的結果4:4:4 編碼出來的影片可能還是最小的
(比4:2:2、4:2:0 小個10~20%)
實際上失真壓縮採用 4:2:2 就蠻夠用了,可以比對最下面的實際編碼圖
4:4:4畫面跟4:2:2非常類似,但檔案可以比4:2:0小10% 要用4:4:4 也是OK的

至於8bit、10bit 網路上常常找的到色階示意圖,其實這有很大的問題
市面上絕大多數螢幕是8bit
10bit 圖在8bit的螢幕下看 跟8bit 的圖在8bit 的螢幕下看,是一模一樣的
除非有10bit 的螢幕 要不然任何人都看不出來 8bit 、10bit 的圖差在哪裡
當然影片也是如此,理論上不需要特別去編10bit 的影片在8bit的螢幕下看
畢竟沒有辦法看出來差異,
其實就連要從8bit 的畫面要分出色階差異對一般人來說就有很大的困難性

不過影片是個例外
主流媒體(BD、DVD…) source 可能是10bit 或是12bit,只不過編碼出來的是 8bit
廠商為了要在8bit 的環境顯示類似source的顏色,導入了dither
dither 是用很多雜點分佈來取代不能8bit 表現不出來10bit 色階的方式
dither 產生的雜點是吃掉頻寬的殺手級人物
實在不需要為了硬表現出不能表現出的顏色 弄出這些雜點吃掉頻寬
吃掉的頻寬會導致主體的細節因頻寬不足而模糊掉 實在得不償失
就影片來說10bit 編碼的存在有其必要性,至少他可以避免dither 吃掉頻寬
(10bit 以上可能也不需要dither 產生雜點了,可以說沒人能分辨出來)

實際上編碼的情形是如何呢?
以下提供編碼出來的結果,source 原本是1080p(4:2:0 8bit)
透過縮小至720p 減少source 4:2:0取樣模糊的比例 (讓source更接近於4:4:4)
且由於編碼的頻寬大幅縮小至原來的1/10~1/7 頻寬不足 雜點會消失
取代的是10bit的色塊,在8bit的螢幕下看則是連續的

source
10bit-444
8bit-422
10bit-422
8bit-420
10bit-420

可以看出重新編碼後的畫質乍看之下 還比source 來的好
但這沒採取任何post processing effect

只不過很可惜H264 一般硬解只支援8bit,要10bit 只能靠軟解
一般mobile 裝置效能不足以軟解1080p (甚至於720p也是) 的H264

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s

%d 位部落客按了讚: