본문으로 이동

YCgCo

한울위키, 우리 모두의 백과사전.

YCoCg 색 모델은 YCgCo 색 모델로도 알려져 있으며, 관련 RGB 색 공간을 루마 값(Y로 표시)과 크로미넌스 그린(Cg), 크로미넌스 오렌지(Co)라는 두 가지 크로마 값으로 간단하게 변환하여 형성된 색 공간이다. 이 색 모델은 H.264/MPEG-4 AVC, HEVC, VVC, JPEG XR, 디랙과 같은 비디오 및 이미지 압축 설계에서 지원된다.[1] 계산이 간단하고, 변환 코딩 이득이 좋으며, 다른 색 모델보다 적은 비트로 RGB와 손실 없이 상호 변환될 수 있다. 더욱 낮은 비트 깊이를 가진 가역적 스케일링 버전인 YCoCg-R은 이들 설계 대부분에서 지원되며 디스플레이 스트림 압축(Display Stream Compression)에서도 사용된다. Y와 크로미넌스 값의 가변 비트 깊이를 포함하는 보다 완전한 정의는 ITU-T H.273에 명시되어 있다.

섬네일을 만드는 중 오류 발생:
위의 원본 이미지와 개별 구성 요소 Y, 크로미넌스 그린 Cg, 크로미넌스 오렌지 Co의 표현.

역사 및 명칭

초기 문서(2003년경)에서는 이 색 모델을 YCoCg라고 불렀다.[2][3] 이 모델은 YCbCr 색 모델을 주로 사용하도록 설계된 H.264/AVC(두 번째 에디션 전문 확장 프로젝트[4])에서 처음으로 국제 표준으로 채택되었다. 채택 당시 Co 구성 요소가 빨간색으로의 편차를 나타내어 Cb보다 Cr에 더 가깝다는 점이 언급되었고, 이에 따라 표준에서 신호 할당 및 명칭이 변경되어 YCgCo라는 대체 이름이 생겨났다 (YCgCo는 ITU-T H.273에서 사용된다).

속성

YCoCg 색 모델이 YCbCr 색 모델에 비해 가지는 장점은 더 간단하고 빠른 계산, 압축 성능 향상을 위한 더 나은 비상관화, 그리고 완벽하게 손실 없는 역변환 가능성이다.[5][6]

RGB 색 모델과의 변환

YCoCg 색 모델의 세 값은 RGB 색 모델의 세 색상 값으로부터 다음과 같이 계산된다.[2] [YCoCg]=[14121412012141214][RGB]

Y 값은 0에서 1 사이의 범위를 가지며, Co 및 Cg는 YCbCr과 같은 "YCC" 색 모델에서 일반적인 것처럼 -0.5에서 0.5 사이의 범위를 가진다. 예를 들어, 순수한 빨간색은 RGB 시스템에서 (1, 0, 0)으로, YCoCg 시스템에서는 (1/4, 1/2, -1/4)로 표현된다.[5][6] 그러나 변환 행렬의 계수가 단순한 이진 분수이므로 다른 YCC 변환보다 계산하기 쉽다. 비트 깊이 n인 RGB 신호의 경우, 결과 신호는 n 비트로 반올림되거나, 이 형식으로 데이터를 처리할 때 일반적으로 n+2 비트가 된다 (Co의 경우 n+1 비트로도 충분하지만).

역행렬은 YCoCg 색 모델에서 RGB 색 모델로 다시 변환한다: [RGB]=[111101111][YCoCg]

역변환을 수행하기 위해서는 다음 C 코드와 같이 구현하면 정수 계수를 사용하여 두 번의 덧셈과 두 번의 뺄셈만으로 충분하다:

tmp = Y   - Cg;
R   = tmp + Co;
G   = Y   + Cg;
B   = tmp - Co;

리프팅 기반 YCoCg-R 변형

때때로 YCoCg-R(여기서 "-R"은 가역성을 의미한다)[7]이라고 불리는 변환의 스케일링 버전은 감소된 비트 깊이로 효율적으로 구현될 수 있다. 스케일링 버전은 리프팅 스킴을 사용하여 세 가지 색상 구성 요소의 비트 깊이를 최소화하면서 정확히 가역적으로 만든다. 비트 깊이가 n인 RGB 신호의 경우, YCoCg-R을 사용할 때 Y 신호의 비트 깊이는 n이 되고 Co와 Cg의 비트 깊이는 n+1이 된다. 이는 일반적인 YCoCg가 Y와 Cg에 n+2 비트, Co에 n+1 비트를 필요로 하는 것과 대조된다.[8]

여기서 Y의 가능한 값은 여전히 [0, 1] 범위이며, Co와 Cg의 가능한 값은 이제 [-1, 1] 범위이다.

RGB에서 YCoCg-R로의 변환은 다음과 같다:

Co  = R - B;
tmp = B + Co/2;
Cg  = G - tmp;
Y   = tmp + Cg/2;
[YCoCg]R=[14121410112112][RGB]

YCoCg-R에서 RGB로의 변환은 다음과 같다:

tmp = Y - Cg/2;
G   = Cg + tmp;
B   = tmp - Co/2;
R   = B + Co;
[RGB]=[11212101211212][YCoCg]R

(모든 나눗셈은 C 언어에서처럼 절단된다. 순방향 변환은 YCoCg의 유사한 구현을 생성하도록 조정될 수 있다.)

모듈러 연산을 사용하여 세 가지 요소를 3n 비트로 묶는 것도 가능하다.[9] 그러나 랩어라운드에서 발생하는 불연속성은 후속 압축 단계에 혼란을 줄 수 있다.[10][11]

효율성 이득

HEVC (H.265) 표준의 화면 콘텐츠 코딩 (SCC) 확장과 VVC (H.266) 표준에는 잔여 코딩 프로세스 내에서 적응형 색상 변환이 포함되어 있으며, 이는 RGB 비디오의 코딩을 YCoCg-R 도메인으로 전환하는 것과 일치한다. HEVC-SCC에서 RGB 비디오를 인코딩하기 위해 YCoCg 색 공간을 사용한 결과 손실 비디오의 경우 큰(~20%) 코딩 이득을 얻었지만, YCoCg-R을 사용하여 비디오를 손실 없이 인코딩할 때는 최소한의 이득을 보였다.[12]

가역 변형은 4.21 dB의 코딩 이득을 제공하며, 이는 BT.470 색상 행렬의 3.54 dB 및 JPEG 2000 가역 색상 변환의 3.98 dB와 비교된다.[8][2]

문헌

각주

  1. “Dirac Specification” (PDF). BBC. 136쪽. 2015년 5월 3일에 원본 문서 (pdf)에서 보존된 문서. 2010년 5월 4일에 확인함. 
  2. 엔리케 말바르게리 설리번, "Transform, Scaling & Color Space Impact of Professional Extensions". Moving Picture Experts GroupVideo Coding Experts Group 문서 JVT-H031, JVT 8차 회의, 제네바, 2003년 5월.
  3. 선스쥔, "Residual Color Transform Using YCoCg-R". Moving Picture Experts GroupVideo Coding Experts Group 문서 JVT-L014, 12차 JVT 회의: 레드먼드, 워싱턴주, 미국, 2004년 7월.
  4. 김우식, 드미트리 비리노프, 조대성, 김현문 (삼성 AIT 멀티미디어 연구소), "Enhancements to RGB coding in H.264/MPEG-4 AVC FRExt". Video Coding Experts Group 문서 VCEG-Z16, 26차 VCEG 회의: 대한민국 부산, 2005년 4월.
  5. “YCoCg: A Color Space with RGB Reversibility”. University of Texas at Arlington. 2010년 7월 2일에 원본 문서 (ppt)에서 보존된 문서. 2010년 5월 2일에 확인함. 
  6. 야이르 모세. “H.264 Amendment: Fidelity Range Extensions” (PDF). Signal and Image processing Lab (SIPL), Technion Israel Institute of Technology. 15쪽. 2014년 10월 6일에 원본 문서 (pdf)에서 보존된 문서. 2010년 5월 2일에 확인함. 
  7. 엔리케 말바르게리 설리번, "YCoCg-R: A color space with RGB reversibility and low dynamic range". Moving Picture Experts GroupVideo Coding Experts Group 문서 JVT-I014, JVT PExt Ad Hoc 그룹 회의: 노르웨이 트론헤임, 2003년 7월.
  8. Malvar, Henrique S.; Sullivan, Gary J.; Srinivasan, Sridhar (2008년 8월 28일). 《Lifting-based reversible color transformations for image compression》 (PDF). Optical Engineering + Applications, 2008. 707307쪽. doi:10.1117/12.797091. 
  9. Cary, David. “Lossless RGB to Y'CbCr transformation” (영어). 《Stack Overflow》. 
  10. 틸로 스트루츠, "Multiplierless Reversible Colour Transforms and their Automatic Selection for Image Data Compression." IEEE Transactions on Circuits and Systems for Video Technology, Vol. 23, No. 7, pp. 1249–1259, July 2013.
  11. 틸로 스트루츠 및 알렉산더 라이프니츠, "Reversible Colour Spaces without Increased Bit Depth and Their Adaptive Selection." IEEE Signal Processing Letters, Vol. 22, No. 9, pp. 1269–1273, September 2015.
  12. 산 리우; 샤오중 쉬; 샤오민 레이; 케빈 주 (September 2015). “Overview of HEVC extensions on screen content coding”. 8쪽.