2013-10-30 43 views

回答

14

YUV 4:2:0的平面看起來像這樣:

---------------------- 
|  Y  | Cb|Cr | 
---------------------- 

其中:

Y = width x height pixels (bytes) 
Cb = Y/4 pixels (bytes) 
Cr = Y/4 pixels (bytes) 

Total num pixels (bytes) = width * height * 3/2 

這是像素如何放置在4:2:0的子採樣:

420

如您所見,每個色度值在4個亮度像素之間共享。

基本上,你可以做的唯一的事情就是看看哪些幀大小均勻地分割了整個文件大小 。

作爲一個例子,考慮經典的福曼夾,您可以從http://trace.eas.asu.edu/yuv/foreman/foreman_cif.7z

下載剪輯的大小是45619200字節。如何從中獲得尺寸和幀數?嘗試不同的決議!

是不是SDTV

In [7]: 45619200/float(720*576*3/2) 
Out[7]: 73.33333333333333 

不行!

是不是QCIF

In [8]: 45619200/float(176*144*3/2) 
Out[8]: 1200.0 

可能是......

是CIF?

In [9]: 45619200/float(352*288*3/2) 
Out[9]: 300.0 

可能是......

只有這樣,才能找出試圖顯示它。

讓我們嘗試QCIF

wring

不看的權利。讓我們試着CIF

right

Bingo!

+0

根據您注意:**總NUM像素(字節)=寬*高* 3/2 **,你可以計算出** widthHeight =框架尺寸* 2/3; **然後你可以檢查比賽的常見尺寸。或去4:3的普通長寬比。 ** width = widthHeight/3; height = widthHeight/4; check = width * height; ASSERT(check == widthHeight); **當然,還有其他長寬比要檢查。例如16:9。 –

+0

你是對的。我對這個答案的想法只是爲了讓OP開始提供一些基本的見解。你可以花一輩子調查YCbCr數據的各個方面:-) –

+1

re:終生 - 是的。這個OP大約是4:2:0,如果你正在談論4:2:2或YCbCr的任何其他變體,這一切都會改變。如果您正在同時發言,轉換爲其他顏色格式(RGB)甚至會發生變化。您的答案是YCbCr 4:2:0的優秀入門書。那些需要其他細節的人正在閱讀厚厚的書本。 ;-D –