YUV

YUV，是一種顏色編碼方法。常使用在各個影像處理元件中。YUV在對照片或影片編碼時，考慮到人類的感知能力，允許降低色度的頻寬。YUV是編譯true-color顏色空間，Y′UV, YUV, YCbCr, YPbPr所指涉的範圍，常有混淆或重疊的情況。從歷史的演變來說，其中YUV和Y'UV通常用來編碼電視的類比訊號，而YCbCr則是用來描述數位的影像訊號，適合影片與圖片壓縮以及傳輸，例如MPEG、JPEG。但在現今，YUV通常已經在電腦系統上廣泛使用。Y'代表明亮度(luma; brightness)而U與V儲存色度(色訊; chrominance; color)部分;亮度(luminance)記作Y，而Y'的prime符號記作伽瑪校正。YUV Formats分成兩個格式：緊縮格式、YV12、IYUV等。歷史.Y'UV的發明是由於彩色電視與黑白電視的過渡時期。黑白視訊只有Y訊號就跟之前的黑白電視訊號相同，這樣一來便解決彩色電視機與黑白電視機的相容問題。Y'UV最大的優點在於只需佔用極少的頻寬。因為UV分別代表不同顏色訊號，所以直接使用R與B訊號表示色度的UV。也就是說UV訊號告訴了電視要偏移某象素的顏色，而不改變其亮度。或者UV訊號告訴了顯示器使得某個顏色亮度依某個基準偏移。UV的值越高，代表該畫素會有更飽和的顏色。彩色影象記錄的格式，常見的有RGB、YUV、CMYK等。彩色電視最早的構想是使用RGB三原色來同時傳輸。這種設計方式是原來黑白頻寬的3倍，在當時並不是很好的設計。RGB訴求於人眼對色彩的感應，YUV則著重於視覺對於亮度的敏感程度，Y代表的是亮度，UV代表的是彩度，分別用Cr和Cb來表示，因此YUV的記錄通常以Y:UV的格式呈現。常用的YUV格式.為節省頻寬起見，大多數YUV格式平均使用的每畫素位數都少於24位元。主要的抽樣格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和YCbCr 4:4:4。YUV的表示法稱為A:B:C表示法：最常用Y:UV記錄的比重通常1:1或2:1，DVD-Video是以YUV 4:2:0的方式記錄，也就是我們俗稱的I420，YUV4:2:0並不是說只有U一定為0，而是指U：V互相援引，時見時隱，也就是說對於每一個行，只有U或者V份量，如果一行是4:2:0的話，下一行就是4:0:2，再下一行是4:2:0...以此類推。至於其他常見的YUV格式有YUY2、YUYV、YVYU、UYVY、AYUV、Y41P、Y411、Y211、IF09、IYUV、YV12、YVU9、YUV411、YUV420等。YUY2及常見表示方法.YUY2是另外的2個畫素。以此類推，再如：Y41P…YVYU UYVY.YVYU, UYVY格式跟YUY2類似，只是排列順序有所不同。Y211格式是Y每2個畫素取樣一次，而UV每4個畫素取樣一次。AYUV格式則有一Alpha通道。YV12.YV12格式與IYUV類似，每個畫素都提取Y，在UV提取時，將影象2 x 2的矩陣，每個矩陣提取一個U和一個V。YV12格式和I420格式的不同處在V平面和U平面的位置不同。在YV12格式中，V平面緊跟在Y平面之後，然後才是U平面。NV12與YV12類似，效果一樣，YV12中U和V是連續排列的，而在NV12中，U和V就交錯排列的。排列舉例：2*2影象YYYYVU；4＊4影象YYYYYYYYYYYYYYYYVVVVUUUU轉換.YUV與RGB的轉換公式：U和V元件可以被表示成原始的R，G，和B:formula_1如一般順序，轉移元件的範圍可得到：formula_2在逆轉關係上，從YUV到RGB，可得formula_3取而代之，以矩陣表示法，可得到公式：formula_4formula_5YUV轉RGB.function RGB* YUV444toRGB888(Y, U, V)；將YUV format移轉成簡單的RGB format並可以用浮點運算實作：Y'UV444.大多數YUV格式平均使用的每畫素位數都少於24位元。YUV444是最逼真的格式，一格不刪，即每4個Y，配上4個U，還有4個V；YUV422則是在UV格式上減半，即每4個Y，配2個U，2個V；YUV420則是在UV上減至1/4之格式，即每4個Y，配1個U，再配1個V。這些公式是基於NTSC standard;formula_6formula_7formula_8在早期的非SIMD構造中，floating point arithmetic會比fixed-point arithmetic稍慢，所以有一替代公式如下：formula_9formula_10formula_11使用前面的係數並且用clip()註明切割的值域是0至255，如下的公式是從Y'UV到RGB (NTSC version):formula_12formula_13formula_14注意：上述的公式多暗示為YCbCr.雖然稱為YUV，但應該嚴格區分YUV和YCbCr這兩個專有名詞有時並非完全相同。ITU-R版本的公式差異：formula_15formula_16formula_17formula_18formula_19formula_20ITU-R標準YCbCr至RGB888:Cr = Cr - 128;Cb = Cb - 128;formula_21formula_22formula_23Input：讀取Y'UV的4bytesOutput：寫入RGB的6bytesY'UV422.u = yuv[0];y1 = yuv[1];v = yuv[2];y2 = yuv[3];以此一資訊可以剖析出regular Y'UV444格式而成為2 RGB pixels info:rgb1 = Y'UV444toRGB888(y1, u, v);rgb2 = Y'UV444toRGB888(y2, u, v);Y'UV422可被表達成Y'UY'2 FourCC格式碼。意思是2 pixels將被定義成each macropixel (four bytes) treated in the image.Y'UV411.// Extract YUV componentsu = yuv[0];y1 = yuv[1];y2 = yuv[2];v = yuv[3];y3 = yuv[4];y4 = yuv[5];rgb1 = Y'UV444toRGB888(y1, u, v);rgb2 = Y'UV444toRGB888(y2, u, v);rgb3 = Y'UV444toRGB888(y3, u, v);rgb4 = Y'UV444toRGB888(y4, u, v);所以結果會得到4 RGB畫素的值 (4*3 bytes) from 6 bytes. This means reducing size of transferred data to half and with quite good loss of quality.YV12.The Y'V12的格式相當類似Y'UV420p，但U與V資料反轉：Y'跟隨著V, U殿後。Y'UV420p與Y'V12使用相同演演算法。許多重要的編碼器都採用YV12空間儲存影片：MPEG-4，DVD-Video儲存格式MPEG-2，MPEG-1以及MJPEG。將Y'UV420p轉換成RGBHeight = 16;Width = 16;Y'ArraySize = Height × Width; //Y' = Array[7 × Width + 5];U = Array[(7/2) × (Width/2) + 5/2 + Y'ArraySize];V = Array[(7/2) × (Width/2) + 5/2 + Y'ArraySize + Y'ArraySize/4];RGB = Y'UV444toRGB888(Y', U, V);