1. yuv簡介
yuv定義:分為三個分量,「y」表示明亮度(luminance或luma),也就是灰度值;而「u」和「v」 表示的則是色度(chrominance或chroma),作用是描述影像色彩及飽和度,用於指定畫素的顏色。
yuv格式:有兩大類:planar和packed。
對於planar的yuv格式,先連續儲存所有畫素點的y,緊接著儲存所有畫素點的u,隨後是所有畫素點的v。
對於packed的yuv格式,每個畫素點的y,u,v是連續交*儲存的。
yuv儲存:格式其實與其取樣的方式密切相關,主流的取樣方式有三種,yuv4:4:4,yuv4:2:2,yuv4:2:0,關於其詳細原理,可以通過網 上其它文章了解,這裡我想強調的是如何根據其取樣格式來從碼流中還原每個畫素點的yuv值,因為只有正確地還原了每個畫素點的yuv值,才能通過yuv與 rgb的轉換公式提取出每個畫素點的rgb值,然後顯示出來。
圖:用三個圖來直觀地表示採集的方式吧,以黑點表示取樣該畫素點的y分量,以空心圓圈表示採用該畫素點的uv分量。
2. 儲存方式
下面我用圖的形式給出常見的yuv碼流的儲存方式,並在儲存方式後面附有取樣每個畫素點的yuv資料的方法,其中,cb、cr的含義等同於u、v。
(1) yuvy 格式 (屬於yuv422)
yuyv為yuv422取樣的儲存格式中的一種,相鄰的兩個y共用其相鄰的兩個cb、cr,分析,對於畫素點y'00、y'01 而言,其cb、cr的值均為 cb00、cr00,其他的畫素點的yuv取值依次類推。
(2) uyvy 格式 (屬於yuv422)
uyvy格式也是yuv422取樣的儲存格式中的一種,只不過與yuyv不同的是uv的排列順序不一樣而已,還原其每個畫素點的yuv值的方法與上面一樣。
(3) yuv422p(屬於yuv422)
(4)yv12,yu12格式(屬於yuv420)
(5)nv12、nv21(屬於yuv420)
yuv420 planar資料儲存, 以720×488大小圖象yuv420 planar為例,
其儲存格式是: 共大小為(720×480×3>>1)位元組,
分為三個部分: y分量: (720×480)個位元組 u(cb)分量: (720×480>>2)個位元組 v(cr)分量: (720×480>>2)個位元組
三個部分內部均是行優先儲存,三個部分之間是y,u,v 順序儲存。
即yuv資料的0--720×480位元組是y分量值, 720×480--720×480×5/4位元組是u分量 720×480×5/4 --720×480×3/2位元組是v分量。
4 :2: 2 和4:2:0 轉換:
最簡單的方式:
yuv4:2:2 ---> yuv4:2:0 y不變,將u和v訊號值在行(垂直方向)在進行一次隔行抽樣。 yuv4:2:0 ---> yuv4:2:2 y不變,將u和v訊號值的每一行分別拷貝乙份形成連續兩行資料。
在yuv420中,乙個畫素點對應乙個y,乙個4x4的小方塊對應乙個u和v。對於所有 yuv420影象,它們的y值排列是完全相同的,因為只有y的影象就是灰度影象。yuv420sp與yuv420p的資料格式它們的uv排列在原理上是完 全不同的。420p它是先把u存放完後,再存放v,也就是說uv它們是連續的。而420sp它是uv、uv這樣交替存放的。(見下圖) 有了上面的理論,我就可以準確的計算出乙個yuv420在記憶體中存放的大小。 width * hight =y(總和) u = y / 4 v = y / 4
所以yuv420 資料在記憶體中的長度是 width * hight * 3 / 2,
假設乙個解析度為8x4的yuv影象,它們的格式如下圖:
圖:yuv420sp格式
圖:yuv420p資料格式如下圖
旋轉90度的演算法:
publicyv12和i420的區別static
void rotateyuv240sp(byte src,byte des,int width,int
height)
}for(int i=0;i2
) }
}
yv12 : 亮度(行×列) + u(行×列/4) + v(行×列/4)
i420 : 亮度(行×列) + v(行×列/4) + u(行×列/4)
yuy2 是 4:2:2 [y0 u0 y1 v0]
yuv420p:yyyyyyyy uuuuuuuu vvvvv
yuv420: yuv yuv yuv
yuv420p,y,u,v三個分量都是平面格式,分為i420和yv12。在i420格式(即:yuv);但yv12則是相反(即:yvu)。
yuv420sp, y分量平面格式,uv打包格式, 即nv12。 nv12與nv21類似,u 和 v 交錯排列,不同在於uv順序。
詳解YUV420資料格式
1.yuv簡介 yuv定義 分為三個分量,y 表示明亮度 luminance或luma 也就是灰度值 而 u 和 v 表示的則是色度 chrominance或chroma 作用是描述影像色彩及飽和度,用於指定畫素的顏色。yuv格式 有兩大類 planar和packed。對於planar的yuv格式,...
YUV420資料轉為IplImage格式
iplimage yuv420 to iplimage opencv unsigned char pyuv420,int width,int height iplimage yuvimage,rgbimg,yimg,uimg,vimg,uuimg,vvimg int nwidth width int...
詳解YUV資料格式
yuv422,yuv420相互轉換 yv12和i420的區別 平坦格式大彙總 yuv分為三個分量 有兩種格式,packed和planer 打包就是y0u0v0 y1u1v1 y2u2v2 y3u3v3 平鋪就是y0y1y2y3 u0u1u2u3 v0v1v2v3 平鋪的方式調節亮度和顏色比較方便。打...