YCbCr
YCbCr – model przestrzeni kolorów, używany do cyfrowego przesyłania oraz przechowywania obrazów i wideo. Wykorzystuje do tego trzy typy danych: Y – składową luminancji, Cb – składową różnicową chrominancji Y-B, stanowiącą różnicę między luminancją a niebieskim, oraz Cr – składową chrominancji Y-R, stanowiącą różnicę między luminancją a czerwonym. Kolor zielony jest uzyskiwany na podstawie tych trzech wartości.
YCbCr nie jest bezwzględną przestrzenią kolorów, jest sposobem na opisanie informacji na podstawie danych o kolorze w postaci RGB. Wartość YCbCr można określić tylko na podstawie tych danych.
Wykorzystanie
Wyświetlacze CRT do wyświetlania obrazu wykorzystują sygnały RGB w postaci wartości napięć koloru czerwonego, zielonego i niebieskiego. Sygnały te jednak nie są optymalne dla przechowywania lub wykorzystania pasma transmisji, gdyż zawierają dużo redundantnych danych. Model YCbCr wykorzystuje fakt, że ludzkie oko jest bardziej podatne na informacje o jasności obrazu niż informacje o kolorze. Wykorzystując ten fakt, dane o luminancji przechowywane lub transmitowane są w wysokiej rozdzielczości, a dane o chrominancji (Cb, Cr) są kompresowane, dzięki czemu mogą być przesyłane, wykorzystując mniejszą szerokość pasma.
Praktyczny przykład widoczny jest na obrazku po prawej, gdzie mniejsza ilość pasma jest wykorzystana na informacje o kolorze, a większa na czerń i biel, ponieważ ludzki wzrok jest bardziej czuły na te informacje.
Szczegóły techniczne
Sygnały YCbCr stosowane w systemach analogowych (component video) są nazywane YPbPr i są tworzone na podstawie odpowiadającego obrazu RGB, używając dwóch stałych Kb i Kr w sposób następujący:
YPbPr (analogowa wersja Y'CbCr) z R'G'B' ==================================================== Y' = Kr * R' + (1 - Kr - Kb) * G' + Kb * B' Pb = 0.5 * (B' - Y') / (1 - Kb) Pr = 0.5 * (R' - Y') / (1 - Kr) .................................................... R', G', B' in [0; 1] Y' w [0; 1] Pb w [-0.5; 0.5] Pr w [-0.5; 0.5]
gdzie Kb i Kr są wyprowadzane z odpowiadającej przestrzeni RGB.
Symbol prim (') oznacza tutaj, że korekcja gammy jest w użyciu; zatem R', G' i B' są nominalnie wartością między 0 a 1, gdzie 0 oznacza najmniejszą intensywność (np. wyświetlanie koloru czarnego), a 1 największą (np. wyświetlanie koloru białego). Wartość luma (Y) także będzie miała nominalną wartość pomiędzy 0 a 1, a wartości chroma (Cb i Cr) będą między −0,5 a +0,5. Odwrotny proces konwersji może być wyprowadzony poprzez odwrócenie powyższych równań.
Przy reprezentowaniu sygnałów w formie cyfrowej, wyniki są skalowane i zaokrąglane, i zazwyczaj dodawane są offsety. Na przykład skalowanie i offset nakładane na komponent Y' według specyfikacji (np. MPEG-2[1]) daje wyniki w wartościach od 16 dla czarnego i 235 dla białego, używając 8-bitowej reprezentacji. Standard ma 8-bitowe cyfrowe wersje Cb i Cr skalowane do innego przedziału od 16 do 240. W konsekwencji, ponowne skalowanie przez iloraz (235-6)/(240-16) = 219/224 jest czasem wymagane przy matrycowaniu kolorów lub przetwarzaniu w przestrzeni YCbCr.
Forma Y'CbCr zdefiniowana dla telewizji standardowej rozdzielczości w ITU-R BT.601, do użytku z cyfrowym złączem Component video jest wyprowadzana z odpowiadającej przestrzeni RGB w sposób następujący:
Z powyższych stałych i równań, można wyprowadzić co następuje dla ITU-R BT.601 Najpierw analogowe YPbPr:
YPbPr (ITU-R BT.601) ======================================================== Y' = + 0.299 * R' + 0.587 * G' + 0.114 * B' Pb = – 0.168736 * R' – 0.331264 * G' + 0.5 * B' Pr = + 0.5 * R' – 0.418688 * G' – 0.081312 * B' ........................................................ R', G', B' in [0; 1] Y' w [0; 1] Pb w [-0.5; 0.5] Pr w [-0.5; 0.5]
Następnie jest to próbkowane 8 bitowo na Y'CbCr:
Y'CbCr (601) z przestrzeni R'G'B' ======================================================== Y' = 16 + (65.481 * R' + 128.553 * G' + 24.966 * B') Cb = 128 + (-37.797 * R' – 74.203 * G' + 112.0 * B') Cr = 128 + (112.0 * R' – 93.786 * G' – 18.214 * B') ........................................................ R', G', B' w [0; 1] Y' w {16, 17, ..., 235} footroom w {1, 2, ..., 15} headroom w {236, 237, ..., 254} sync. w {0, 255} Cb, Cr w {16, 17, ..., 240}
Jeśli R', G' i B' są dane z 8-bitową dokładnością, wtedy:
YCbCr (601) z cyfrowego 8-bitowego R'G'B' ======================================================================== Y' = 16 + 1/256 * ( 65.738 * R'd + 129.057 * G'd + 25.064 * B'd) Cb = 128 + 1/256 * (– 37.945 * R'd – 74.494 * G'd + 112.439 * B'd) Cr = 128 + 1/256 * ( 112.439 * R'd – 94.154 * G'd – 18.285 * B'd) ........................................................................ R'd, G'd, B'd w {0, 1, 2, ..., 255} Y' w {16, 17, ..., 235} footroom w {1, 2, ..., 15} headroom w {236, 237, ..., 254} sync. w {0, 255} Cb, Cr w {16, 17, ..., 240}
Ten typ Y'CbCr jest używany dla starszych systemów telewizji standardowej, jako że wykorzystuje model RGB, który pasuje najlepiej do charakterystyk emisji fosforu w starszych kineskopach CRT. Odwrotne równanie do powyższego wygląda następująco:
8-bit R'G'B' z przestrzeni YCbCr (601) ===================================================================== R'd = (298.082 * Y' + 408.583 * Cr) / 256 – 222.921 G'd = (298.082 * Y' – 100.291 * Cb – 208.120 * Cr) / 256 + 135.576 B'd = (298.082 * Y' + 516.412 * Cb ) / 256 – 276.836 .....................................................................
Jeszcze inny typ Y'CbCr jest wyznaczony w standardzie ITU-R BT.709, stworzony dla telewizji wysokiej rozdzielczości HDTV. Ta nowsza forma jest też wykorzystywana w niektórych aplikacjach komputerowych do wyświetlania obrazu. W tym wypadku wartości Kb i Kr się różnią, ale równania pozostają te same dla ITU-R BT.709 stałe wynoszą:
Ten typ Y'CbCr jest oparty na modelu RGB który bardziej pasuje do charakterystyk emisji fosforu nowych CRT i innego współczesnego sprzętu do wyświetlania obrazu.
Choć dwie powyższe formy Y'CbCr są dominujące, istnieją jeszcze inne warianty. Na przykład standard SMPTE 240M określa YCbCr używając Kb = 0,087 i Kr = 0,212.
Definicje sygnałów R', G' i B' różnią się między BT.709 i Bt.601, różnią się także wewnątrz BT.601, zależnie od tego jaki system telewizji jest używany (625 linii w PAL i SECAM lub 525 linii w NTSC) i różnią się w innych specyfikacjach.
Ponieważ równania definiujące YCbCr są tworzone w sposób, który obraca cały nominalny sześcian kolorów RGB i skaluje go żeby wypełnić (większy) sześcian kolorów YCbCr, są takie punkty wewnątrz YCbCr które nie mogą być reprezentowane w odpowiadającym RGB (a przynajmniej nie w nominalnych przedziale RGB). To powoduje problemy w określaniu, jak prawidłowo interpretować i wyświetlać niektóre sygnały YCbCr.
Użycie JPEG ze standardu JFIF dopuszcza Y'CbCr, gdzie Y', Cb i Cr mają wszystkie 256 wartości[2]:
JFIF-Y'CbCr (601) z cyfrowego 8-bitowego R'G'B' ========================================================================
Y' = + 0.299 * R'd + 0.587 * G'd + 0.114 * B'd Cb = 128 – 0.168736 * R'd – 0.331264 * G'd + 0.5 * B'd Cr = 128 + 0.5 * R'd – 0.418688 * G'd – 0.081312 * B'd ........................................................................ R'd, G'd, B'd w {0, 1, 2, ..., 255} Y', Cb, Cr w {0, 1, 2, ..., 255}
Konwersja powrotna:
R = Y + 1.402 * (Cr - 128) G = Y – 0.34414 * (Cb - 128) – 0.71414 * (Cr - 128) B = Y + 1.772 * (Cb - 128)
Przypisy
- ↑ Specyfikacja MPEG-2, ITU H.262 2000 E, s. 44.
- ↑ JPEG File Interchange Format Version 1.02. jpeg.org. [zarchiwizowane z tego adresu (2014-09-03)]..
Linki zewnętrzne
- Charles Poynton – Color FAQ
- Charles Poynton – Video engineering
- YCrCb to RGB converter
- Color Space Visualization. couleur.org. [zarchiwizowane z tego adresu (2013-11-28)].
- PC Magazine Encyclopedia: YCbCr
Media użyte na tej stronie
This takes an image (Image:Barns grand tetons.jpg) and displays the Y, Cb and Cr elements of it. Note that the Y image is essentailly a greyscale copy of the main image; that the white snow is represented as a middle value in both Cb and Cr; that the brown barn is represented by strong Cb and strong Cr; that the green grass is represented by strong Cb and weak Cr; and that the blue sky is represented by weak Cb and weak Cr. The murkiness of the Cb and Cr elements (to the human eye) demonstrate why many image compression codecs downsample colour; details in Y are much more visible than in Cb or Cr.