日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

264 解码之 yuv

發(fā)布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 264 解码之 yuv 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

博客訪問量日漸減少,于是我決定丟一點(diǎn)技術(shù)東東上去,吸引爬蟲光顧一下。

先談?wù)?h.264 的編解碼問題。
個人建議做視頻、音頻的孩子們,一定要抓住 RFC 和 standard ,然后多看開源編解碼程序。
近來抽空看了兩個 decoder ,一個是從 ffmpeg 里面抽取出來的 h.264 部分,還有從 JM 。

解碼器生成最后結(jié)果是 yuv420 格式(后面會提到)。
關(guān)于 yuv ,看到論壇里不少人都急于找工具去看自己解得一幀圖像是否正確,更有不少人提供 yuv420 2 rgb24 和 yuv422 2 rgb24 等代碼。
這里建議使用 強(qiáng)大的 ps 的 .raw 文件的功能。
.raw 文件可用來查看 純 rgb 圖片 和 純 yuv 圖片,很適合做圖像。

yuv 格式:
YUV是指亮度參量和色度參量分開表示的像素格式,而這樣分開的好處就是不但可以避免相互干擾,還可以降低色度的采樣率而不會對圖像質(zhì)量影響太大。YUV 是一個比較籠統(tǒng)地說法,針對它的具體排列方式,可以分為很多種具體的格式。
YUV格式通常有兩大類:打包(packed)格式和平面(planar)格式。前者將YUV分量存放在同一個數(shù)組中,通常是幾個相鄰的像素組成一個宏像 素(macro-pixel);而后者使用三個數(shù)組分開存放YUV三個分量,就像是一個三維平面一樣。
YUY2到Y(jié)211都是打包格式,而IF09到Y(jié)VU9都是平面格式。
(注意:在介紹各種具體格式時,YUV各分量都會帶有下標(biāo),如Y0、 U0、V0表示第一個像素的YUV分量,Y1、U1、V1表示第二個像素的YUV分量,以此類推。)

MEDIASUBTYPE_YUY2 YUY2格式,以4:2:2方式打包 MEDIASUBTYPE_YUYV YUYV格式(實(shí)際格式與YUY2相同) MEDIASUBTYPE_YVYU YVYU格式,以4:2:2方式打包 MEDIASUBTYPE_UYVY UYVY格式,以4:2:2方式打包 MEDIASUBTYPE_AYUV 帶Alpha通道的4:4:4 YUV格式 MEDIASUBTYPE_Y41P Y41P格式,以4:1:1方式打包 MEDIASUBTYPE_Y411 Y411格式(實(shí)際格式與Y41P相同) MEDIASUBTYPE_Y211 Y211格式 MEDIASUBTYPE_IF09 IF09格式 MEDIASUBTYPE_IYUV IYUV格式 MEDIASUBTYPE_YV12 YV12格式 MEDIASUBTYPE_YVU9 YVU9格式
yuv采樣:
?

4:4:4 表示色度頻道沒有下采樣。每像素 24 位

?

4:2:2 表示 2:1 的水平下采樣,沒有垂直下采樣。對于每兩個 U 樣例或 V 樣例,每個掃描行都包含四個 Y 樣例。每像素 16 位

?

4:2:0 表示 2:1 的水平下采樣,2:1 的垂直下采樣。每像素 16 位

?

4:1:1 表示 4:1 的水平下采樣,沒有垂直下采樣。對于每個 U 樣例或 V 樣例,每個掃描行都包含四個 Y 樣例。與其他格式相比,4:1:1 采樣不太常用,本文不對其進(jìn)行詳細(xì)討論。每像素 16 位



在我做的 h264 中,支 持420的連續(xù)或隔行視頻的編碼和解碼。
其中“Y”表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V”表示的則是色度(Chrominance或Chroma),作用 是描述影像色彩及飽和度,用于指定像素的顏色。“亮度”是通過RGB輸入信號來創(chuàng)建的,方法是將RGB信號的特定部分疊加到一起。“色度”則定義了顏色的 兩個方面—色調(diào)與飽和度,分別用Cr和CB來表示。其中,Cr反映了GB輸入信號紅色部分與RGB信號亮度值之間的差異。而CB反映的是RGB輸入信號藍(lán) 色部分與RGB信號亮度值之同的差異。?
YUV色彩模型來源于RGB模型, 該模型的特點(diǎn)是將亮度和色度分離開,從而適合于圖像處理領(lǐng)域。 應(yīng)用:模擬領(lǐng)域 Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')


R' = Y' + 1.140*V' G' = Y' - 0.394*U' - 0.581*V' B' = Y' + 2.032*U' YCbCr模型來源于YUV模型。YCbCr是 YUV 顏色空間的偏移版本. 應(yīng)用:數(shù)字視頻,ITU-R BT.601建議 Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16 Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128 Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128 R' = 1.164*(Y’-16) + 1.596*(Cr'-128) G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128) B' = 1.164*(Y’-16) + 2.017*(Cb'-128) PS: 上面各個符號都帶了一撇,表示該符號在原值基礎(chǔ)上進(jìn)行了伽馬校正,伽馬校正有助于彌補(bǔ)在抗鋸齒的過程中,線性分配伽馬值所帶來的細(xì)節(jié)損失,使圖像細(xì)節(jié)更加 豐富。在沒有采用伽馬校正的情況下,暗部細(xì)節(jié)不容易顯現(xiàn)出來,而采用了這一圖像增強(qiáng)技術(shù)以后,圖像的層次更加明晰了。 所以說H264里面的YUV應(yīng)屬于YCbCr.

常見H264測試的YUV序列:

CIF圖像大小的YUV序列(352*288),在文件 開始并沒有文件頭,直接就是YUV數(shù)據(jù),先存第一幀的Y信息,長度為352*288個byte, 然后是第一幀U信息長度是352*288/4個byte, 最后是第一幀的V信息,長度是352*288/4個byte, 因此可以算出第一幀數(shù)據(jù)總長度是352*288*1.5,即152064個byte, 如果這個序列是300幀的話, 那么序列總長度即為152064*300=44550KB,這也就是為什么常見的300幀CIF序列總是44M的原因.

Y41P(和Y411)(packed格式)格式為每個像素保留Y分量,而UV分量在 水平方向上每4個像素采樣一次。一個宏像素為12個字節(jié),實(shí)際表示8個像素。圖像數(shù)據(jù)中YUV分量排列順序如下: U0 Y0 V0 Y1 U4 Y2 V4 Y3 Y4 Y5 Y6 Y8 …
IYUV格式(planar)為每個像素都提取Y分量,而在UV分量的提取時,首先將 圖像分成若干個2 x 2的宏塊,然后每個宏塊提取一個U分量和一個V分量。YV12格式與 IYUV類似,但仍然是平面模式。


YUV411、YUV420格式多見于DV數(shù)據(jù)中。
YUV411用于NTSC制。為每個像素都提取Y分量,而UV分量在水平方向上每4個像素采樣一次。
YUV420用于 PAL制。并非V分量采樣為0,而是跟YUV411相比, 在水平方向上提高一倍色差采樣頻率,在垂直方向上以U/V間隔的方式減小一半色差采樣。

各種格式的具體使用位數(shù)的需求(使用4:2:0采樣,對于每個元素用8個位大小表示):

格式: Sub-QCIF 亮度分辨率: 128*96?? 每幀使用的位: 147456
格式: QCIF?? 亮度分辨率: 176*144?? 每幀使用的位: 304128
格式: CIF?? 亮度分辨率: 352*288?? 每幀使用的位: 1216512
格 式: 4CIF?? 亮度分辨率: 704*576?? 每幀使用的位: 4866048

總結(jié)

以上是生活随笔為你收集整理的264 解码之 yuv的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。