yuv儲存解析

2021-10-11 03:17:50 字數 1159 閱讀 4195

在手機camera系統當中,常用的yuv儲存格式是yuv420,所以這裡只針對yuv420詳細記錄一下,後白有需要再寫一下其他儲存格式。

yuv 4:2:0 並不意味著不取樣 v 分量。它指的是對每條掃瞄線來說,只有一種色度分量以 2:1 的取樣率儲存,相鄰的掃瞄行儲存不同的色度分量。也就是說,如果第一行是 4:2:0,下一行就是 4:0:2,在下一行就是 4:2:0,以此類推。

如果以影象表示,如下圖所示

影象畫素為:

[y0 u0 v0]、[y1 u1 v1]、 [y2 u2 v2]、 [y3 u3 v3]

[y5 u5 v5]、[y6 u6 v6]、 [y7 u7 v7] 、[y8 u8 v8]

​取樣的碼流為:

y0 u0 y1 y2 u2 y3

y5 v5 y6 y7 v7 y8

​對映出的畫素點為:

[y0 u0 v5]、[y1 u0 v5]、[y2 u2 v7]、[y3 u2 v7]

[y5 u0 v5]、[y6 u0 v5]、[y7 u2 v7]、[y8 u2 v7]

其中,每取樣乙個畫素點,都會取樣 y 分量,而 u、v 分量都會隔行按照 2:1 進行取樣。

(1920 * 1280 * 8 + 1920 * 1280 * 0.25 * 8 * 2 ) / 8 / 1024 / 1024 = 3.51m

相比 rgb,節省了一半的儲存空間。

在儲存的時候由於記憶體對齊的需要,實際占用的儲存空間stride是大於width的。所以實際占用的空間大小是strideheight1.5/1024/1024 = xxm

nv12 和 nv21 格式都屬於 yuv420sp 型別。它也是先儲存了 y 分量,但接下來並不是再儲存所有的 u 或者 v 分量,而是把 uv 分量交替連續儲存。

nv12 是 ios 中有的模式,它的儲存順序是先存 y 分量,再 uv 進行交替儲存。

nv21 是 安卓 中有的模式,它的儲存順序是先存 y 分量,在 vu 交替儲存。

參考文章:

總結各種rgb轉yuv的轉換公式:

YUV及儲存形式

yuv主要的取樣格式 主要的取樣格式有ycbcr 4 2 0 ycbcr 4 2 2 ycbcr 4 1 1和 ycbcr 4 4 4。其中ycbcr 4 1 1 比較常用,其含義為 每個點儲存乙個 8bit 的亮度值 也就是y值 每 2x2 個點儲存乙個 cr 和cb 值,影象在肉眼中的感覺不會起...

YUV資料格式解析

文章 詳解yuv420資料格式 1.yuv簡介 yuv定義 分為三個分量,y 表示明亮度 luminance或luma 也就是灰度值 而 u 和 v 表示的則是色度 chrominance或chroma 作用是描述影像色彩及飽和度,用於指定畫素的顏色。yuv格式 有兩大類 planar和packed...

YUV格式資料儲存方式總結(常見的)

yuv格式有兩大類 平面 planar 和緊湊 packed 對於planar的yuv格式,先連續儲存所有畫素點的y,緊接著儲存所有畫素點的u,隨後是所有畫素點的v。對於packed的yuv格式,每個畫素點的y,u,v是連續交 儲存的。以下縮寫p表示 緊湊 sp表示 半緊湊 以解析度8 4為例,資料...