国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

yuv格式較好分析

2019-11-09 16:48:42
字體:
來源:轉載
供稿:網友
在攝像頭之類編程經常是會碰到YUV格式,而非大家比較熟悉的RGB格式. 我們可以把YUV看成是一個RGB的變種來理解.   YUV的原理是把亮度與色度分離,研究證明,人眼對亮度的敏感超過色度。利用這個原理,可以把色度信息減少一點,人眼也無法查覺這一點。  YUV三個字母中,其中"Y"表示明亮度(Lumina nce或Luma),也就是灰階值;而"U"和"V"表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。用這個三個字母好象就是通道命令。    使用YUV的優點有兩個:   一.彩色YUV圖像轉黑白YUV圖像轉換非常簡單,這一特性用在于電視信號上。   二.YUV是數據總尺寸小于RGB格式關于描述YUV格式,寫得比較好是這一篇文件   <<Video Rendering with 8-Bit YUV Formats>>   http://msdn.microsoft.com/en-us/library/aa904813(VS.80).aspx一.YUV格式與RGB格式的換算關于YUV與RGB轉換可以參見  http://www.fourcc.org/fccyvrgb.php以下是標準公式RGB 轉換成 YUV Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16 Cr = V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128 Cb = U = -( 0.148 * R) - (0.291 * G) + (0.439 * B) + 128YUV 轉換成 RGB B = 1.164(Y - 16) + 2.018(U - 128) G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128) R = 1.164(Y - 16) + 1.596(V - 128)RGB取值范圍均為0~255,Y=0~255,U=-122~+122,V=-157~+157以下是經過簡化的公式,運算量比上述公式要小一些。RGB轉YUVY = 0.299R + 0.587G + 0.114B U'= (BY)*0.565 V'= (RY)*0.713YUV轉RGBR = Y + 1.403V' G = Y - 0.344U' - 0.714V' B = Y + 1.770U'   如果只有Y信號分量而沒有U、V分量,那么這樣表示的圖像就是黑白灰度圖像。因此用YUV格式由彩色轉黑白信號相當簡單.     在技術文檔里,YUV經常有另外的名字, YCbCr ,其中Y與YUV 中的Y含義一致,Cb , Cr 同樣都指色彩,,只是在表示方法上不同而已,Cb Cr 就是本來理論上的“分量/色差”的標識。C代表分量(是component的縮寫)Cr、Cb分別對應r(紅)、b(藍)分量信號,Y除了g(綠)分量信號,還疊加了亮度信號。   還有一種格式是YPbPR格式,它與YCbPr格式的區別在于,其中YCbCr是隔行信號,YPbPr是逐行信號。數字信號都是YCbCr ,其應用領域很廣泛,JPEG、MPEG均采用此格式。在后文中,如無特別指明,講的YUV都是指YCbCr格式。  而YPbPr一般是模擬信號,我引用兩段來說明兩者區別     什么是YCbCr?  YCbCr表示隔行分量端子,是屬于YUV經過縮放和偏移的翻版,常說的YUV也稱作YCbCr。其中Y與YUV 中的Y含義一致,Cb , Cr 同樣都指色彩,,只是在表示方法上不同而已,Cb Cr 就是本來理論上的“分量/色差”的標識。C代表分量(是component的縮寫)Cr、Cb分別對應r(紅)、b(藍)分量信號,Y除了g(綠)分量信號,還疊加了亮度信號。  其中YCbCr是隔行信號,YPbPr是逐行信號。YCbCr 是在計算機系統中應用最多的一種信號,其應用領域很廣泛,JPEG、MPEG均采用此格式。  什么是YPbPr?  Y'CbCr 在模擬分量視頻(analog component video)中也常被稱為YPbPr,YPbPr是將模擬的Y、PB、PR信號分開,使用三條線纜來獨立傳輸,保障了色彩還原的準確性,YPbPr表示逐行掃描色差輸出.YPbPr接口可以看做是S端子的擴展,與S端子相比,要多傳輸PB、PR兩種信號,避免了兩路色差混合解碼并再次分離的過程,也保持了色度通道的最大帶寬,只需要經過反矩陣解碼電路就可以還原為RGB三原色信號而成像,這就最大限度地縮短了視頻源到顯示器成像之間的視頻信號通道,避免了因繁瑣的傳輸過程所帶來的圖像失真,保障了色彩還原的準確,目前幾乎所有大屏幕電視都支持色差輸入。二.YUV的存儲格式    RGB格式中,一個24bpp像素要占用4字節空間。在YUV格式中,可以對于UV分量的數據壓縮,但是對圖像整體質量影響不大,這樣YUV所占的空間就比RGB要小一些不過RGB中 16bpp的 565格式每一個點只占2個字節,從這一點看也沒有省多少。不過視頻應用都是清一色的YUV應用。因此YUV的處理還是一個比較重要課題。  YUV的存儲中與RGB格式最大不同在于,RGB格式每個點的數據是連繼保存在一起的。即R,G,B是前后不間隔的保存在2-4byte空間中。而YUV的數據中為了節約空間,U,V分量空間會減小。每一個點的Y分量獨立保存,但連續幾個點的U,V分量是保存在一起的,(反正人眼一般也看不出區別).這幾個點合起來稱為macro-pixel, 這種存儲格式稱為Packed格式。  另外一種存儲格式是把一幅圖像中Y,U,V分別用三個獨立的數組表示。這種模式稱為planar模式。  這里我們主要使用第一種Packed格式。2.1 采樣格式   表示YUV格式,一般用Y,U,V三者的比率來表示不同格式,比如YUV420 表示三者是比值此是 4:4:4   即一個點數據點,Y,U,V的空間都是一樣大小。目前主要有如下比例,注意所有格式中Y比值都是4,占一個字節,表示沒有減少采樣。不同格式中,減小只是UV的采樣值.   4:4:4 表示色度值(UV)沒有減少采樣。即Y,U,V各占一個字節,加上Alpha通道一個字節,總共占4字節.這個格式其實就是24bpp的RGB格式了。4:2:2 表示UV分量采樣減半,比如第一個像素采樣Y,U,第二個像素采樣Y,V,依次類推,這樣每個點占用2個字節.二個像素組成一個宏像素.4:2:0  這種采樣并不意味著只有Y,Cb而沒有Cr分量,這里的0說的U,V分量隔行才采樣一次。比如第一行采樣 4:2:0 ,第二行采樣 4:0:2 ,依次類推...在這種采樣方式下,每一個像素占用16bits或10bits空間.4:1:1 可以參考4:2:2分量,是進一步壓縮,每隔四個點才采一次U和V分量。一般是第0點采Y,U,第1點采Y,第3點采YV,第四點采Y,依次類推。   除了4:4:4采樣,其余采樣后信號重新還原顯示后,會丟失部分UV數據,只能用相臨的數據補齊,但人眼對UV不敏感,因此總體感覺損失不大。4:2:2示例   如果原始數據三個像素是 Y0 U0 V0 ,Y1 U1 V1,Y2 U2 V2,Y3 U3 V3   經過4:2:2采樣后,數據變成了 Y0 U0 ,Y1 V1 ,Y2 U2,Y3 V3   如果還原后,因為某一些數據丟失就補成 Y0 U0 V1,Y1 U0 V1,Y2 U2V3 ,Y3 U3Y2  4:1:1示例   原來四個像素為: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3]   存放的碼流為:    Y0 U0     ,Y1 , Y2  V2,   Y3   還原出像素點為:[Y0 U0 V2] [Y1 U0 V2] [Y2 U0 V2] [Y3 U0 V2]  4:2:0示例下面八個像素為:[Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2] [Y3 U3 V3] [Y5 U5 V5] [Y6 U6 V6] [Y7U7 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] [Y7U2 V7] [Y8 U2 V7]YUV 4:4:4格式內存布局,每一個像素擁有完整的YUV,加上A(Alpha)   YUV 4:2:2 小端字節序排列  2.2 Four CC 碼  關于YUV444,YUV422,YUV420的名稱還有別外一種命名方式,FOURCC 碼,上文中用就是這個命令,這Four CC使用四個字母的命名,   FourCC全稱Four-Character Codes,是由4個字符(4 bytes)組成,是一種獨立標示視頻數據流格式的四字節,在wav、avi檔案之中會有一段FourCC來描述這個AVI檔案,是利用何種codec來編碼的。因此wav、avi大量存在等于“IDP3”的FourCC http://zh.wikipedia.org/wiki/FourCC按fourcc的命名.  http://www.fourcc.org/yuv.phpYUV444 的FourCC 稱為 AYUVYUV422 的FourcCC 按字節序分為YUY2 和UYVYYUV420 的FourcCC 按字節序分為IMC1 和IMC22.3 V4L2 采用編碼  我們一般是在V4L驅動里使用這一些編碼,而且V4L2也有一類對應的編碼.參見vedio2dev.h,在編程中要與實際排列對應上.它后面的定義值實際就是FourCC 碼.  #define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16  YVU411 planar */#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O')比如在CMOS攝像頭里 支持  V4L2_PIX_FMT_YVU420 ,它對應的是YV12 格式,查相應文檔,它是Plane格式,即Y,U,V分三個區排列 
YV120x32315659128 bit Y plane followed by 8 bit 2x2 subsampled V and U planes.

This is the format of choice for many software MPEG codecs. It comprises an NxM Y plane followed by (N/2)x(M/2) V and U planes.

 HorizontalVertical
Y Sample Period11
V Sample Period22
U Sample Period22

 

Positive biHeight implies top-down image (top line first)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 郸城县| 重庆市| 杭锦后旗| 西峡县| 延长县| 安西县| 海兴县| 新乐市| 开阳县| 寿宁县| 瓮安县| 巴彦县| 剑河县| 海丰县| 庄浪县| 壶关县| 建阳市| 玛多县| 湘阴县| 久治县| 定结县| 思茅市| 同德县| 临城县| 启东市| 肇州县| 佛学| 贡觉县| 台北县| 英德市| 门源| 宜城市| 宣武区| 钟山县| 沁水县| 江源县| 黑龙江省| 九江市| 通榆县| 太白县| 昭通市|