YUV

YUV
U-V 색 평면의 예, Yθ 값 = 0.5, RGB 색역 내에서 표시됨
이미지와 각각 Yively, U, V 컴포넌트

YUV는 일반적으로 컬러 이미지 파이프라인의 일부로 사용되는 컬러 모델입니다.인간의 인식을 고려컬러 이미지 또는 비디오를 인코딩하여 "직접" RGB 표현에 비해 크로미넌스 컴포넌트의 대역폭을 줄일 수 있습니다.역사적으로 YUV와 YUV라는 용어는 텔레비전 [1]시스템의 색상 정보의 특정 아날로그 인코딩에 사용되었습니다.오늘날 YUV라는 용어는 컴퓨터 업계에서 YCbCr을 사용하여 인코딩된 파일 형식(픽셀 형식)을 설명하기 위해 일반적으로 사용됩니다.

YUV 모델은 물리적 선형 공간 밝기를 의미하는 휘도 성분(Y) 하나와 U(파란색 투영) 및 V(빨간색 투영)라고 하는 두 의 색도 성분을 정의합니다.RGB 모델과 다른 공간을 변환하기 위해 사용할 수 있습니다.

밀접하게 관련된 Y-UV 모델은 루마 성분(Y') – 비선형 지각 밝기를 사용하며, 소수 기호(')는 감마 [2]보정을 나타낸다.Y'UV는 PAL 아날로그 컬러 TV 표준(PAL-N 제외)에서 사용됩니다.이전의 흑백 시스템에서는 Luma(Y') 정보만 사용되었습니다.흑백 수신기가 별도의 전송 대역폭 없이 수신기의 기본 흑백 포맷으로 컬러 화상 전송을 수신하고 표시할 수 있도록 서브캐리어를 통해 색상 정보(U와 V)가 별도로 추가되었습니다.

어원에 관해서는 Y, Y, U, V는 약어가 아니다.휘도에 Y 문자를 사용한 것은 XYZ 프라이머리 선택으로 거슬러 올라갈 수 있습니다.이는 자연스럽게 같은 글자를 luma(Y),)로 사용하는데 적합하며, 이는 지각적으로 균일한 휘도 상관관계에 가깝습니다.마찬가지로 U축과 V축을 x축과 y축과 같은 다른 공간의 축과 구별하기 위해 U축과 V축을 선택했습니다.아래의 방정식을 참조하거나 [3][4][5]수학의 역사적 발전을 비교하십시오.

관련 색상 모델

Y'UV, YUV, YCbCr, YPbPr 등의 용어의 범위가 애매하고 중복되는 경우가 있습니다.

역사적으로 YUV와 YUV는 아날로그 텔레비전 시스템을 지칭하는 데 사용되었다.그러나 비디오 및 이미지 압축 및 MPEG [6]JPEG 의 전송 형식에 적합한 색 정보의 디지털 인코딩에 사용되는 YCbCr에도 동일한 명칭이 적용될 수 있습니다.마찬가지로 아날로그 컴포넌트 비디오에서 사용되는YPbPr 컬러모델은 YuvUV라고 불리기도 합니다.이러한 색상 모델에서B C/P와BR C/P는R 파란색-노란색 및 빨간색-사이언 축에서 회색에서 벗어난 값이며, YUV U와 V는 각각 파란색-휘도 빨간색-휘도 차이입니다.

아날로그 NTSC TV 방송 시스템에서 사용되는 Y'IQ 컬러 모델도 YUV와 거의 같은 원리를 따릅니다.다만 좀 더 복잡한 방식입니다.아날로그 SECAM 및 PAL-N 텔레비전 방송 시스템에서 사용되는 YDbDr 색상 모델도 관련이 있습니다.

역사

YUV는 엔지니어들이 흑백 [7]인프라에서 컬러 텔레비전을 원했을 때 발명되었다.흑백(B&W) TV와 호환되는 신호 전송 방식이 필요했던 것이다.Luma 컴포넌트는 이미 흑백 신호로 존재했고, 그들은 해결책으로 UV 신호를 여기에 추가했습니다.

U와 V는 색차 신호이기 때문에 색도의 UV 표현은 직선 R 및 B 신호보다 선택되었습니다.즉, U 및 V 신호는 TV에 밝기를 변경하지 않고 특정 스폿(CRT 디스플레이는 개별 픽셀을 가지지 않음)의 색을 바꾸도록 지시합니다.또는 U 신호와 V 신호는 모니터에 다른 색상과 얼마나 많은 색상으로 전환해야 하는지를 알려 줍니다.U 및 V 값이 높을수록(또는 음수일 경우 낮을수록) 스팟의 포화도가 높아집니다(컬러풀).U 및 V 값이 0에 가까울수록 색상이 적게 변합니다. 즉, 빨간색, 녹색 및 파란색 조명이 더 동일하게 밝아져 회색 점이 생성됩니다.이것은 색차 신호를 사용하는 것의 이점입니다. 즉, 색에 얼마나 빨간색이 있는지 알려주는 것이 아니라 녹색이나 파란색보다 빨간색이 얼마나 많은지를 나타냅니다.즉, U 및 V 신호가 0이 되거나 존재하지 않으면 회색 스케일이미지만 표시됩니다.만약 R과 B를 사용한다면, 이것들은 B&W 장면에서도 0이 아닌 값을 가지며, 3개의 데이터 전송 신호를 모두 필요로 한다.오래된 흑백 TV 신호에는 U와 V 신호가 없었기 때문에 컬러 TV는 개봉 즉시 B&W TV로 표시되기 때문에 이것은 컬러 TV의 초창기에 중요했다.또한 흑백 수신기는 Y' 신호를 수신하여 U-컬러 및 V-컬러 신호를 무시할 수 있으므로 Y'UV는 기존의 모든 흑백 기기, 입력 및 출력과 하위 호환됩니다.만약 컬러 TV 표준이 색차 신호를 사용하지 않았다면, 컬러 TV는 B&W 방송으로 재미있는 색을 만들거나 B&W 신호를 컬러로 변환하기 위해 추가 회로가 필요하다는 것을 의미할 수 있다.사용 가능한 추가 대역폭이 없었기 때문에 크로미넌스 채널에 더 좁은 대역폭을 할당해야 했습니다.일부 휘도 정보가 크로미넌스 채널을 통해 도착한 경우(차동 UV 신호 대신 RB 신호를 사용하는 경우처럼), B&W 분해능이 [8]저하될 수 있다.

RGB 변환/RGB로부터의 변환

BT.470 탑재 SDTV

Y'UV 신호는 일반적으로 RGB(빨간색, 녹색파란색) 소스에서 생성됩니다.R, G, B의 가중치를 합산하여 전체 밝기 또는 휘도의 척도인 Yθ를 생성한다.U와 V는 Y and와 B와 R 값 사이의 스케일 차이로 계산됩니다.

PAL(NTSC used YIQ, 추가 회전) 표준은 SMPTE RP 177을 사용한 BT.470 시스템M 프라이머리 및 화이트포인트에서 파생된 다음 [9]상수를 정의합니다(행렬계수라고 불리는 동일한 상수는 BT.601에서 나중에 0.436 및 0.615 대신 1/2를 사용합니다).

Y'UV의 PAL 신호는 다음과 같이 R'G'B'에서 계산됩니다(SECAM IV만이 선형[10] RGB를 사용).

Y,, U 및 V의 결과 범위는 각각 [0, 1], [-Umax, Umax] 및 [-Vmax, Vmax]입니다.

위의 변환을 반전시키면 Y'UV가 RGB로 변환됩니다.

마찬가지로 상수 값을 대입하여 행렬로 표현하면 BT.470 시스템 M(PAL)에 대해 다음과 같은 공식을 얻을 수 있다.

Y' 값이 작을 경우 음의 R, G 또는 B 값을 얻을 수 있으므로 실제로 RGB 결과를 Y'CbCr 내부의 [0,1] 간격 또는 더 정확하게 클램프합니다.

BT.470에서는 오류가 발생했습니다(파란색의 경우 0.114 대신 0.115가 사용되고 0.492 대신 0.493이 사용되었기 때문입니다).실제로는 약 1/2.03이 [11]사용되었기 때문에 디코더에 영향을 주지 않았다.

BT.709 탑재 HDTV

HDTV Rec. 709(SDTV Rec. 601에 상당히 근접)와 UHDTV Rec. 2020 비교

HDTV의 경우 ATSC는 SDTV 시스템에서 이전에 선택한 값과 비교하여 W와B W의 기본R 값을 변경하기로 결정했습니다.HDTV의 경우 이 값은 Requ. 709에 제시되어 있다.이 결정은 Y-UV↔CH 변환 행렬에 더욱 영향을 미쳐 구성원 값도 약간 다릅니다.그 결과, SDTV와 HDTV에서는, 일반적으로, 임의의 RGB 트리플에 대해서 SDTV-Y-UV와 HDTV-Y-UV의 2개의 구별된 Y-UV 표현이 가능합니다.즉, SDTV와 HDTV를 직접 변환하는 경우, Luma(Y)) 정보는 거의 동일하지만, 채도(U&V) 채널 정보의 표현은 변환이 필요합니다.CIE 1931공간의 적용 범위 내에서 Requ. 709 색 공간은 Requ. 601과 거의 동일하며 35.9%[12]를 차지한다.이 Rec. 2020 UHDTV와는 대조적으로, 훨씬 더 넓은 영역을 커버하므로 YCbCr에 대한 자체 매트릭스가 도출되었다(아날로그 TV 폐지 이후 YUV/YyUV 없음).

BT.709는 다음 무게 값을 정의합니다.

{\ {\ 값은 위에서부터입니다.

아날로그 형식의 BT.709 변환 행렬은 다음과 같으나, 실제로 사용된 증거는 없다(실제로 기술된 BT.709 형식 대신 YCbCr 형식).

메모들

  • Y)(행렬의 맨 위 행) 계산에 사용되는 가중치는 YiqIQ 색 공간에서 사용되는 가중치와 동일합니다.
  • 빨간색, 녹색 및 파란색의 동일한 값(즉, 회색 수준)은 U와 V의 경우 0을 산출합니다.검은색, RGB=(0, 0, 0)은 YUV=(0, 0, 0)을 생성합니다.흰색, RGB=(1, 1, 1)은 YUV=(1, 0, 0)를 산출합니다.
  • 이러한 공식은 전통적으로 아날로그 텔레비전이나 기기에 사용됩니다.HDTV나 디지털 비디오 카메라등의 디지털 기기는 YCbCr 를 사용합니다.

수치 근사

고속 SIMD 부동소수점 프로세서가 개발되기 전에는 RGB → YΩUV의 디지털 구현 대부분이 정수 연산, 특히 고정 소수점 근사치를 사용했습니다.근사는 사용된 숫자의 정밀도(입력 데이터, 출력 데이터 및 상수 값)가 제한된다는 것을 의미하며, 따라서 일반적으로 개선된 계산 속도에 대한 트레이드오프에서 이 옵션을 사용하는 사람은 누구나 일반적으로 마지막 이진수에 대한 정밀 손실을 받아들인다.

예시에서 b 바이너리 의 오른쪽이동나타냅니다명확히 하기 위해 변수는 두 개의 인덱스 문자를 사용합니다. "u"는 부호 없는 최종 표현에 사용되고 "t"는 축소된 중간 값에 사용됩니다.다음의 예는, BT.601 전용입니다.BT.709 또는 기타 동등한 표준을 따르는 데이터에 대해 허용 가능한 일치 값을 사용하여 기능적으로 동등한 연산을 수행하는 경우에도 동일한 원리를 사용할 수 있습니다.

일반적으로 Y' 값은 [0, 255]의 전체 범위(풀스윙 또는 PC 레벨)를 사용하는 대신 [16, 235](스튜디오 스윙 또는 "TV 레벨"이라고 함) 범위로 이동 및 스케일링됩니다.이 방법은 필터링에 의한 신호 오버슈트("링")에 대응하기 위해 SMPTE-125M으로 표준화되었습니다.값 235는 255 - 235 = 20 또는 20 / (235 - 16) = 9.1%의 최대 흑백 오버슈트를 수용하며, 이는 최대 단계의 약 8.9%인 이론적인 최대 오버슈트(Gibbs 현상)보다 약간 크다.토룸은 16 / 219 = 7.3%의 오버슈트만 허용하므로 이론적으로 최대 오버슈트인 8.9%보다 작습니다.따라서 16이 Y'에 추가되고 기본 변환의 Y' 계수가 [13]255가 아닌 220이 됩니다.U 및 V 값은 양수 또는 음수일 수 있으며 128로 합산되어 항상 양수이므로 U 및 V의 스튜디오 범위는 16~240입니다(이러한 범위는 잘못된 범위를 사용하면 흑백 이미지가 잘리거나 대비가 낮은 이미지가 생성되므로 비디오 편집 및 제작에 중요합니다).

YCbCr BT.601용 스튜디오 스윙

SDTV/BT.601 용 YCbCr 의 종래의 「스튜디오 스윙」8비트 표현을 취득하려면 , 다음의 조작을 사용할 수 있습니다.

  1. 8비트 RGB에서 16비트 값으로의 기본 변환(Yy: 부호 없음, Cb/Cr: 부호 있음, 매트릭스 값)은 나중에 원하는 Y range 범위가 [16]이 되도록 반올림되었습니다.235] 및 Cb/Cr 범위는 [16]입니다.240]에 도달했습니다).
  2. 반올림('+128')으로 8비트로 축소('>8')합니다(Yy: 부호 없음, Cb/Cr: 부호 있음):
  3. 값에 오프셋을 추가하여 음수 값을 제거합니다(모든 결과는 8비트 부호 없음).

YCbCr BT.601용 풀스윙

SDTV/BT.601 용 YcbCbCr 의 「풀스윙」8비트 표현을 취득하려면 , 다음의 조작을 사용할 수 있습니다.

  1. 8비트 RGB 값에서 16비트 값으로의 기본 변환(Y uns: 부호 없음, Cb/Cr: 부호 있음, 매트릭스 값)은 각 [0]의 나중에 원하는 YcbCbCr 범위가 되도록 반올림되었습니다.오버플로는 발생하지 않지만 255]에 도달합니다).
  2. 반올림('+128')을 사용하여 8비트 값으로 축소합니다(Y): 부호 없음, Cb/Cr: 부호 있음):
  3. 값에 오프셋을 추가하여 음수 값을 제거합니다(모든 결과는 8비트 부호 없음).

휘도/크로미넌스 시스템 전반

YUV와 같은 Luma/chroma 시스템과 그 친척 Y teleIQYDbDr의 주된 장점은 흑백 아날로그 TV와의 호환성이 유지된다는 것입니다(대부분 Georges Valensi의 연구 덕분).Y' 채널은 흑백 카메라로 기록된 모든 데이터를 저장하기 때문에 오래된 흑백 디스플레이에서 수신하기에 적합한 신호를 생성합니다.이 경우 U와 V는 단순히 삭제됩니다.컬러 표시 시에는 3채널을 모두 사용하여 원래의 RGB 정보를 복호화할 수 있다.

Y'UV의 또 다른 장점은 대역폭 절감을 위해 일부 정보를 폐기할 수 있다는 것입니다.인간의 눈은 색에 대한 공간적 민감도가 상당히 낮습니다. 휘도 채널의 밝기 정보의 정확도는 다른 두 개의 눈보다 훨씬 더 상세한 이미지에 영향을 미칩니다.이러한 인간의 단점을 이해하기 위해 NTSC나 PAL 의 규격에서는 크로미넌스 채널의 대역폭이 상당히 감소합니다.(대역폭은 시간 영역에 있지만 이미지가 스캔되면 공간 영역으로 변환됩니다.)

따라서 결과적으로 발생하는 U 및 V 신호는 실질적으로 "압축"될 수 있습니다.NTSC(YiqIQ) 및 PAL 시스템에서 크로미넌스 신호는 휘도보다 대역폭이 상당히 좁았습니다.NTSC의 초기 버전은 동일한 이미지 영역의 특정 색상을 빠르게 번갈아 표시하여 인간의 눈에 서로 합친 것처럼 보이게 했습니다.또한 현대의 아날로그 및 대부분의 디지털 비디오 규격에서는 사진의 색상 정보를 낮은 해상도로 기록함으로써 채도 서브샘플링을 사용하고 있습니다.휘도 정보에 비해 수평 해상도는 절반(4:2:2 크로마 서브샘플링)만 유지되며 수직 해상도도 절반(4:2:0)인 경우가 많습니다.4:x:x 규격은 4:1:1의 채도 서브샘플링(수직이 풀 해상도인 상태에서 수평 색 해상도가 4등분됨)을 사용한 초기 컬러 NTSC 규격으로 인해 채택되었습니다.그 때문에, 이 사진의 휘도 해상도는, 휘도 해상도에 비해 4분의 1 밖에 되지 않았습니다.현재 비압축 신호를 처리하는 하이엔드 기기만이 휘도와 색상 정보 모두에서 동일한 해상도의 4:4:4의 채도 서브샘플링을 사용합니다.

I축과 Q축은 인간의 시각에 필요한 대역폭에 따라 선택되었으며, 한쪽 축은 가장 많은 대역폭을 필요로 하는 축이고 다른 한쪽 축은 최소(90도로 40도)입니다.그러나 진정한 I 및 Q 복조는 비교적 복잡하여 2개의 아날로그 지연선이 필요했고 NTSC 수신기는 거의 사용하지 않았습니다.

단, 이 컬러모델 변환은 특히 루마에서 채도 반송 와이어로의 크로스 토크에서 손실됩니다.아날로그 기기(디지털 신호를 전송하는 RCA 커넥터 포함)에서는 YUV, YIQ, 또는 CVBS 중 하나의 아날로그 컴포지트 비디오입니다.또한 NTSC와 PAL은 흑백 텔레비전 기기와의 역호환성을 유지하기 위해 고대역폭 채도와 루마 신호를 혼재시키는 방식으로 컬러 신호를 부호화함으로써 도트 크롤 및 크로스 컬러 아티팩트를 발생시킨다.1950년대에 NTSC 표준이 작성되었을 때는 이미지의 품질이 제한된 대역폭 신호를 수신하는 것이 아니라 모니터 기기에 의해 제한되었기 때문에 이는 그다지 문제가 되지 않았습니다.그러나 오늘날의 텔레비전은 이러한 손실 신호에 포함된 것보다 더 많은 정보를 표시할 수 있습니다.새로운 디스플레이 기술의 능력에 보조를 맞추기 위해 1970년대 후반부터 SCART(1977년) 및 S-Video(1987년) 커넥터와 같이 이미지를 전송하면서 YUV 신호를 더 많이 보존하려는 시도가 이루어졌다.

Y'UV 대신 Y'CbCr이 MPEG-2와 같은 일반적인 비디오 압축 알고리즘의 표준 포맷으로 사용되었습니다.디지털 텔레비전이나 DVD는, MPEG-2 포맷으로 압축된 비디오 스트림을 보관 유지하고 있습니다.MPEG-2 포맷에서는, 크로마 서브 샘플링의 확립된 프로세스는 유지되지만, 완전하게 정의된 Y'CbCr 컬러 공간을 사용합니다.프로페셔널 CCIR 601 디지털비디오 형식에서도, 주로 이전의 아날로그 비디오 규격과의 호환성을 위해서, 공통 채도 서브 샘플링 레이트 4:2:2 로 YCbCr 를 사용합니다.이 스트림은 필요한 모든 출력 형식에 쉽게 혼합할 수 있습니다.

YUV는 절대 색공간이 아닙니다.이는 RGB 정보를 인코딩하는 방법으로, 실제 표시되는 색상은 신호를 표시하는 데 사용되는 실제 RGB 색상에 따라 달라집니다.따라서 Y rgbUV로 표시되는 값은 표준 RGB 착색제(즉, 1차 색도의 고정 세트 또는 빨간색, 녹색 및 파란색의 특정 세트)를 사용하는 경우에만 예측할 수 있습니다.

또, RGB(BT.601 또는 Rec.709)의 색과 휘도 범위(색역 및 색량)는, YuvUV가 허용하는 색과 휘도 범위보다 훨씬 작다.이는 YUV(또는 YCbCr)에서 RGB로 변환할 때 매우 중요합니다.위 공식은 무효인 RGB 값, 즉 TV 및 HD 외 콘텐츠의 경우 0% 미만 또는 100%를 훨씬 상회하는 값(및 16~240 크로마 범위)을 생성할 수 있기 때문입니다.이러한 값을 취급하지 않는 한, 통상은 영향을 받는 채널의 유효한 범위까지 「잘라내기」(즉, 한정)됩니다.이로 인해 색상의 색조가 변화하기 때문에 매우 바람직하지 않기 때문에 RGB [14]영역 내에 들어가도록 문제의 색을 불포화시키는 것이 좋다고 생각되는 경우가 많습니다.마찬가지로 특정 비트 심도의 RGB를 같은 비트 심도의 YUV로 변환하면 여러 RGB 색상이 같은 Y sameUV색이 되어 정보 손실을 일으킬 수 있습니다.

YCbCr과의 관계

Y'UV는 종종 YCbCr의 용어로 사용됩니다.단, 관련성이 있는 경우에는 스케일 [15]팩터가 다른 포맷입니다.Photo CD의 PhotoYCC에는 스케일되지 않은 매트릭스가 사용되고 있습니다.U와 V는 양 또는 음의 양극성 신호이며 그레이의 경우 0인 반면, YCbCr은 일반적으로 모든 채널을 16 ~235 범위 또는 0 ~255 범위로 스케일링하므로 Cb와 Cr은 그레이의 경우 128인 부호 없는 양입니다.

그럼에도 불구하고, 표준 사례에서 그들 사이의 관계는 간단하다.특히, 양자의 Y'채널은 직선적으로 관련지어져 Cb와 U는 모두 직선적으로 (B-Y)에 관련지어져 있으며, Cr과 V는 모두 직선적으로 (R-Y)에 관련지어져 있다.

샘플링의 종류

디지털 신호를 얻으려면 여러 가지 방법으로 YUV 이미지를 샘플링할 수 있습니다. 채도 서브샘플링을 참조하십시오.

Y-UV와 RGB 변환

RGB 파일은 보통 픽셀당 8, 12, 16 또는 24비트로 인코딩됩니다.이 예에서는 픽셀당 24비트를 RGB888이라고 합니다.표준 바이트 형식은 다음과 같습니다.

r0, g0, b0, r1, g1, b1, ... 

Y'UV 파일은 픽셀당 12비트, 16비트 또는 24비트로 인코딩할 수 있습니다.일반적인 형식은 Y'UV444(또는 YUV444), YUV411, Y'UV422(또는 YUV422) 및 Y'UV420p(또는 YUV420)입니다.YUV420p 뒤의 "p"와 마찬가지로 Y 뒤에 있는 아포스트로피는 생략되는 경우가 많습니다.실제 파일 형식에서는 YUV420이 가장 일반적입니다.데이터가 더 쉽게 압축되고 파일 확장자는 보통 "입니다.「YUV」.

데이터 속도와 샘플링 간의 관계(A:B:C)는 Y 대 U 및 V [16][17]채널 간의 비율로 정의됩니다.

RGB에서 YUV로 변환하려면 RGB888과 YUV444를 사용하는 것이 가장 간단합니다.YUV411, YUV422 및 YUV420의 경우 먼저 바이트를 YUV444로 변환해야 합니다.

YUV444 3픽셀당 3바이트(4픽셀당 12바이트) YUV422 2픽셀당 4바이트(4픽셀당 8바이트) YUV411 4픽셀당 6바이트(4픽셀당 6바이트) 순서 변경

Y-UV444에서 RGB888로의 변환

[R, G, B] = YUV444 to RGB888(YUV, U, V)은 YUV 포맷을 단순한 RGB 포맷으로 변환합니다.

Y'UV444 포맷에 사용되는 RGB 변환식은 표준 NTSC TV 전송 포맷인 YUV420(또는 YUV422)에도 적용할 수 있습니다.YUV420의 경우 각 U 또는 V 시료는 정사각형을 이루는 4 Y 시료를 나타내기 위해 사용되므로 적절한 샘플링 방법을 사용하면 다음과 같은 정확한 변환 공식을 이용할 수 있다.상세한 것에 대하여는, 이 문서의 하단의 4:2:0 형식의 데모를 참조해 주세요.

다음 공식은 NTSC 표준에 기초하고 있습니다.

SIMD가 아닌 오래된 아키텍처에서는 부동소수점 산술이 고정소수점 산술보다 훨씬 느리므로 대체 공식은 다음과 같습니다.[18]

Y'에서 변환하기 위해 ] 0 255 { [ { {255} 계수를 사용하여 UV에서 RGB(NTSC 버전)로의 변환을 나타내는UV에서 RGB로 변환하는 공식은 다음과 같습니다.

주의: 위의 공식은 실제로 YCbCr에 대해 함축되어 있습니다.여기서 YUV라는 용어가 사용되고 있지만 YUV와 YCbCr은 엄밀하게는 동일하지 않습니다.

이 공식의 ITU-R 버전은 max B ) (R ) = 0. F B}) 0. \mapsto \mathrm { )로 . 맵:

YCbCr(채널당 8비트)에 대한 ITU-R 표준의 RGB888에 대한 정수 연산:

Y-UV422에서 RGB888로의 변환

입력: 4바이트의 YuvUV 읽기(u, y1, v, y2)
출력: 6바이트의 RGB 쓰기 (R, G, B, R, G, B)
u = yuv[0]; y1 = yuv[1]; v = yuv[2]; y2 = yuv[3];

이 정보를 사용하여 일반 Y'UV444 형식으로 해석하여 2개의 RGB 픽셀 정보를 얻을 수 있습니다.

rgb1 = YuvUV444 to RGB888(y1, u, v), rgb2 = YuvUV444 to RGB888(y2, u, v);
Yuv422 yuy2.svg

Y'UV422는 예를 들어 FourCC 포맷코드 YUY2의 경우 다른 순서로 값을 표시할 수도 있습니다.

입력: Y ofUV (y1, u, y2, v), (y1, y2, u, v) 또는 (u, v, y1, y2)의 4바이트 읽기

Y-UV411에서 RGB888로의 변환

입력: 6바이트의 YUV 읽기
출력: 12바이트의 RGB 쓰기
// YUV 구성 요소 추출 = yuv[0], y1 = yuv[1], y2 = yuv[2], v = yuv[3], y3 = yuv[4], y4 = yuv[5];
rgb1 = YuvUV444 to RGB888(y1, u, v), rgb2 = YuvUV444 to RGB888(y2, u, v), rgb4 = YuvUV444 to RGB888(y3, u, v)

그 결과 6바이트에서4개의 RGB 픽셀 값(4*3바이트)을 얻을 수 있습니다.즉, 전송되는 데이터의 크기를 절반으로 줄이고 품질 저하를 의미합니다.

Y-UV420p(및 Y-V12 또는 YV12)에서 RGB888로의 변환

Y'UV420p는 평면 형식입니다.즉, Y', U 및 V 값이 분산되지 않고 함께 그룹화됩니다.그 이유는 U 값과 V 값을 함께 그룹화하면 이미지가 훨씬 압축되기 때문입니다.Y'UV420p 형식의 이미지 배열을 지정하면 모든 Y' 값이 먼저 오고 그 다음에 모든 U 값이 그 다음에 마지막으로 모든 V 값이 나옵니다.

Y'V12 형식은 기본적으로 Y'UV420p와 동일하지만 U 및 V 데이터가 스위칭됩니다.Y' 값 뒤에 V 값이 이어지며 U 값은 마지막에 표시됩니다.적절한 위치에서 U값과 V값을 추출하는 데 주의를 기울이면 동일한 알고리즘을 사용하여 Y20UV420p와 YvV12를 모두 처리할 수 있다.

대부분의 Y'UV 형식과 마찬가지로 Y' 값은 픽셀 수만큼 존재합니다.여기서 X는 높이에 폭을 곱한 값입니다.배열 내의 첫 번째 X 인덱스는 각 개별 픽셀에 대응하는 Y' 값입니다.그러나 U 및 V 값의 4분의 1만 있습니다.U 및 V 값은 이미지의 각 2x2 블록에 해당합니다. 즉, 각 U 및 V 항목이 4픽셀에 적용됩니다.Y' 값 다음에 다음 X/4 지수는 각 2x2 블록에 대한 U 값이고, 그 다음 X/4 지수는 각 2x2 블록에 적용되는 V 값입니다.

Yuv420.svg

위 그림과 같이 YuvUV420의 Y,, U, V 컴포넌트는 순차 블록으로 구분하여 부호화됩니다.각 화소마다 Y value 값이 기억되고, 이어서 2×2의 각 화소마다 U 값이 기억되며, 마지막으로 2×2의 각 블록마다 V 값이 기억된다.대응하는 Y,, U 및 V 값은 위 다이어그램에서 동일한 색상을 사용하여 표시됩니다.장치의 바이트 스트림으로 한 줄씩 읽으면, Y4 블록은 위치 0에서, U 블록은 위치 x×y(이 예에서는 6×4 = 24)에서, V 블록은 위치 x×y + (x×y)/4(여기서는 6×4 + (6×4)/4 = 30)에서 찾을 수 있습니다.

Y-UV420sp(NV21)에서 RGB(Android)로의 변환

이 형식(NV21)은 Android 카메라 미리보기의 표준 사진 형식입니다.YUV 4:2:0 평면 이미지, 8비트 Y 샘플, 8비트 2x2 서브 샘플 채도 샘플의 [19]인터리브 V/U 평면.

Android에서 YUVImage의 [20]픽셀을 변환하는 데 사용되는 C++ 코드:

무효 YUVImage: yuv2rgb(uint8_t y값, uint8_t uValue, uint8_t ,         uint8_t *r, uint8_t *g, uint8_t *b) 컨스턴트 {     인트 rTmp = y값 + (1.370705 * (-128));      // 또는 작은 근사치의 고속 정수 컴퓨팅     // rTmp = yValue + (351*(vValue-128))>>8;     인트 gTmp = y값 - (0.698001 * (-128)) - (0.337633 * (uValue-128));      // gTmp = yValue - (179*(vValue-128) + 86*(uValue-128))>>8;     인트 bTmp = y값 + (1.732446 * (uValue-128));     // bTmp = yValue + (443*(uValue-128))>>8;     *r = 클램프(rTmp, 0, 255);     *g = 클램프(gTmp, 0, 255);     *b = 클램프(bTmp, 0, 255); } 

레퍼런스

  1. ^ 핀튼, 찰스"YUV 휘도는 유해하다고 간주됩니다.비디오의 정확한 용어를 요구합니다[ 1 ]
  2. ^ "EG 28:1993 - SMPTE Engineering Guideline - Annotated Glossary of Essential Terms for Electronic Production". Eg 28:1993: 1–45. May 1993. doi:10.5594/SMPTE.EG28.1993. ISBN 978-1-61482-022-2.
  3. ^ 시엘루브
  4. ^ CIE 1960 색공간
  5. ^ Macadam, David L. (1 August 1937). "Projective Transformations of I. C. I. Color Specifications". Journal of the Optical Society of America. 27 (8): 294–297. Bibcode:1937JOSA...27..294M. doi:10.1364/JOSA.27.000294. Retrieved 12 April 2014.
  6. ^ 핀튼, 찰스"YUV 휘도는 유해하다고 간주됩니다.비디오의 정확한 용어를 요구합니다." [2]
  7. ^ Maler, Joe. RGBYUV 색상, FXScript 참조
  8. ^ W. 와튼 & D.Howorth, 텔레비전 수신 원리, 피트만 출판사, 1971, 페이지 161-163
  9. ^ "BT.470: Conventional television systems". www.itu.int. p. 9. Retrieved 16 April 2021.{{cite web}}: CS1 maint :url-status (링크)
  10. ^ "World Analogue Television Standards and Waveforms". 27 February 2019. Archived from the original on 27 February 2019. Retrieved 16 April 2021.
  11. ^ "ST 170:2004 - SMPTE Standard - For Television — Composite Analog Video Signal — NTSC for Studio Applications". St 170:2004: 1–21. November 2004. doi:10.5594/SMPTE.ST170.2004. ISBN 978-1-61482-335-3.
  12. ^ ""Super Hi-Vision" as Next-Generation Television and Its Video Parameters". Information Display. Retrieved 1 January 2013.
  13. ^ Jack, Keith (1993). Video Demystified. HighText Publications. ISBN 1-878707-09-4.
  14. ^ YUV 디지털 비디오 신호 제한(BBC 간행물)작성자: V.G. Deverux http://downloads.bbc.co.uk/rd/pubs/reports/1987-22.pdf
  15. ^ Poynton, Charles (19 June 1999). "YUV and luminance considered harmful" (PDF). Retrieved 18 November 2016. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  16. ^ msdn.microsoft.com, 비디오 렌더링에 권장되는8비트 YUV 형식
  17. ^ msdn.microsoft.com, YUV 비디오 서브타입
  18. ^ "Converting Between YUV and RGB (Windows CE .NET 4.2)".
  19. ^ fourcc.com YUV 픽셀 형식
  20. ^ "Media/Libstagefright/Yuv/YUVImage.CPP - platform/Frameworks/Av - Git at Google".

외부 링크