셰이더 수학의 경우 왜 선형 RGB가 sRGB의 색 영역을 유지해야합니까?


13

sRGB는 종종 "선형 RGB"와 대조됩니다.

  • 이미지는 디스크에 저장되고 sRGB 로 디스플레이에 전달되는데 , 이는 대략 지각 적으로 강도가 균일합니다.
  • 셰이더 연산은 선형 RGB 로 수행되며 물리적으로 강도가 균일합니다.
  • 감마 보정을 적용하여 둘 사이를 변환 할 수 있습니다.

이제 sRGB에는 색 영역을 색도계로 지정하여 순수한 빨강, 초록, 파랑 ​​및 흰색이 어디에 있는지 정확하게 알려주는 표준이 있습니다. 그러나 "선형 RGB"에 대한 해당 표준은 없습니다. 색도 다이어그램의 모든 삼각형은 선형이라고 할 수 있으며 실제로 선택할 수있는 몇 가지 잘 알려진 영역이 있습니다.

RGB 영역

실제로 "선형 RGB"라고 말하면 "감마 보정이없는 sRGB"를 의미합니다. (이것은 sRGB 감마 보정을 최종 사후 처리 단계로 적용하지만 나머지 렌더링 파이프 라인의 색상 공간은 무시할 때 수행하는 작업입니다.)

그러나 왜 것을 RGB 보간 및 조명 계산에 사용할 올바른 하나를 영역? 임의적 인 것 같습니다. 그렇다면 내부 계산에 가능한 가장 큰 색 영역을 사용하고 나서 출력 장치의 색 영역에 색상을 자르거나 스케일링하고 싶지 않습니까?

RGB 조명은 무엇이든 상관없이 근사 할 것이므로 어떤 색 영역을 선택하든 상관없이 디스플레이가 기본적으로 지원하는 것과 가장 가까운 색 영역을 선택할 수 있습니까? 태만일까요? 아니면 이러한 다른 색 영역에서의 계산이 실제로 똑같은 결과를 산출합니까?

답변:


13

선형 RGB 에 대한 이야기 는 RGB 색상 공간 고유성 (예 : 기본, 화이트 포인트 및 색상 구성 요소 전송 함수)에 대해 아무 것도 알려주지 않기 때문에 피해야합니다. 몇 년 전, sRGB가 중간에 있다고 가정하지만 현재 DCI-P3 및 BT.2020이 매우 일반적이기 때문에 배제해야합니다.

렌더링에 이상적인 색 영역은 실제 참조 또는보다 편리하게지면 진실 스펙트럼 렌더링과 관련된 오류를 최소화하는 색 영역입니다. 이 문장에서 첫 번째로 가져온 것은 다양한 RGB 색 공간이 동일하지 않으며 유사한 결과를 생성하지 않는다는 것입니다.

하나는 동일한 기본 색상으로 두 번의 렌더를 수행하지만 하나는 sRGB / BT.709로 인코딩되고 다른 하나는 DCI-P3으로 인코딩 된 다음 두 개의 결과 이미지를 예를 들어 ACES2065-1로 변환하는 것으로 생각할 수 있습니다. 동일한 이미지를 생성하지만 그렇지 않습니다. 선형 대수와 행렬의 특성으로 인해 일부 수학 연산은 주어진 RGB 색상 공간 기본에 따라, 즉 색상 공간에 따라 달라집니다. 다른 RGB 색 공간에서 동일한 작업을 수행하면 CIE XYZ 색 공간으로 다시 변환되면 다른 3 자극 값이 생성됩니다. 예를 들어, 곱셈, 나눗셈 및 거듭 제곱 연산은 RGB 색상 공간 기본에 따라 다르지만 덧셈과 뺄셈은 다릅니다.

RGB 색상 공간 및 지수

이 이미지는 다양한 색상을 다른 RGB 색상 공간으로 곱한 효과를 보여줍니다. 결과 색상이 다릅니다. 다양한 샘플이 다음과 같이 생성됩니다. 3 개의 임의 sRGB 색상 공간 값이 선택되어 3 개의 연구 된 RGB 색상 공간으로 변환되고, 지수화되고 다시 sRGB 색상 공간으로 변환되며, 왼쪽의 CIE 1931 색도 다이어그램에 플롯되어 견본에 표시됩니다. 권리.

Ward and Eydelberg-Vileshin (2002) , Langlands and Mansencal (2014)Mansencal (2014)에 의해 수행 된 테스트 및 연구에 따르면 스펙트럼 궤적에 가장 가까운 1 차가 있는 색 영역, 즉 스펙트럼이 예리한 1 차가 스펙트럼지면에 비해 오류를 최소화하는 경향이 있음이 밝혀졌습니다 진실이 렌더링됩니다.

다음은 최근 Ands로 결과를 다시 확인하기 위해 Mitsuba로 렌더링 한 이미지입니다.

색상 공간 렌더링

BT.709 기본 (1 행), 47 스펙트럼 빈 (2 행), BT.2020 기본 (3 행), 스펙트럼 마이너스 BT.709 기본을 사용하여 동일한 장면의 렌더링은 잔차 (4 행), 스펙트럼 마이너스 BT를 렌더링합니다. .2020 기본은 잔차 (5 번째 행)를 렌더링합니다. 마지막 행은 각각 BT.709 기본, 스펙트럼 및 BT.2020 기본 렌더링의 세 가지 세로 줄무늬로 구성된 합성 이미지를 보여줍니다. 직접 조명은 렌더간에 일치하는 경향이 있습니다. BT.709 및 BT.2020 프리미어 렌더링에서 다중 라이트 바운스, 즉 천장의 효과를 나타내는 영역은 특히 BT.709 프리미어 렌더링 또는 약간의 에너지 손실에서 채도가 증가하는 경향이 있습니다. .2020 렌더. 가시광 선과 같은 특이 치를 제외하고 스펙트럼 렌더가 포함 된 RMSE는 0.0083입니다.BT.2020 기본 및 BT.709 기본에 각각 0.0116이 렌더링됩니다.

그렇다고해서 항상 더 나은 성능을 발휘한다는 의미는 아니며 BT.709 / sRGB에 대한 편견이있는 예제를 만들 수도 있습니다. 주요 이점은 RGB 렌더링이 스펙트럼 렌더링과 일치 할 수 없으며 예리한 넓은 영역이 더 잘 수행되는 경향이 있다는 것입니다. 렌더링 색상 공간을 선택하는 데 있어서는 Pointer 's Gamut를 포함하는 넓은 색 영역을 선택하고 DCI-P3, BT.2020 또는 ACEScg 가 탁월한 후보입니다.


5

실제로 "선형 RGB"라고 말하면 "감마 보정이없는 sRGB"를 의미합니다.

"sRGB 색상 공간"과 "선형 sRGB 색상 공간"이 있고 sRGB 사양 정의에서 서로 변환하는 것이 더 정확합니다.

예, 무한히 많은 "선형 RGB"색 공간이 있습니다. 그러나 이러한 "선형 RGB"색 공간이 공통적으로 갖는 것은 선형입니다. 입니다. 즉, 구성 요소의 값을 두 배로 늘리면 해당 구성 요소가 나타내는 빛의 강도가 두 배가됩니다. 이것이 본질적으로 "선형"이라는 의미입니다. 색상 값과 그 밝은 색상의 강도 사이에는 선형 매핑이 있습니다.

색상 값이 조명 강도에 선형으로 매핑되지 않으면 조명 방정식이 작동하지 않기 때문에 이것은 중요합니다. 그러나 방정식 상관 없어 하는 선형 색 공간을 사용하든 . 당신은 하나를 선택해야합니다.

따라서 선형화 된 sRGB 색상 공간은 선형화 된 Adobe RGB 색상 공간 또는 선형화 된 SWOP CMYK 색상 공간보다 정확하지 않습니다. 중요한 것은 정확히 두 가지입니다.

  1. 색상 공간은 빛의 세기에 대한 값의 선형 매핑을 나타냅니다.
  2. 선택된 색 공간 은 조명 방정식에서 일관되게 사용됩니다. 즉, 조명 방정식에 사용 된 모든 색상은 동일한 (선형) 색상 공간에서 나옵니다.

RGB 조명은 무엇이든 상관없이 근사 할 것이므로 어떤 색 영역을 선택하든 상관없이 디스플레이가 기본적으로 지원하는 것과 가장 가까운 색 영역을 선택할 수 있습니까?

요즘 sRGB 변환은 하드웨어에 내장되어 있지만 다른 색 공간 변환은 자주 그렇지 않습니다. 따라서 선형화 된 Adobe RGB 색상 공간을 사용하려면 셰이더에서 텍셀 값을 선형화하고 올바르게 선형화 / 삼선 형 보간을 수행하기 위해 많은 작업을 수행해야합니다 (선형화 후에 수행해야 함). 조명 방정식에. 그런 다음 선형화 된 Adobe RGB에서 선형화 된 sRGB로 변환해야 sRGB 프레임 버퍼 이미지에 표시 할 수 있습니다.

또는 어디서나 선형화 된 sRGB를 사용하고 성능을 가질 수 있습니다. 후자는 승리하는 경향이 있습니다.


글에 대해 어떻게 생각 하십니까? 나는 바로 그것을 읽고 있어요 경우, 다른 선형 색상 공간에서 계산이 있음을 입증 다른 결과가 발생할 수 있습니다.
Maxpm

@Maxpm : 흥미 롭습니다. 그 논문을 읽었을 때 문제는 빛이 실제로 RGB 색상 공간 모델에 맞지 않는다는 사실로 귀결됩니다. 이로 인해 수학적으로 똑같은 일이 발생하는 시각적 결과가 다양합니다. 거기에서 유일한 해결책은 RGB 사용을 중단하고 스펙트럼 렌더링 사용을 시작하는 것 같습니다.
Nicol Bolas

@Maxpm 그러나 다른 모든 공간이 다른 후에는 물론입니다. 그러나 RGB는 색상이 아니므로 그 색상이 있습니다. 그러나 당신이 옳고 싶은 질문이 있습니다. 이익이 점점 더 작아짐
joojaa

0

sRGB가 특히 중요한 이유는 두 가지입니다. 비 HDR 이미지 입력의 경우 이미지가 sRGB로 압축 된 것으로 가정합니다 (이 주장이 정확한지 여부는 다른 이야기입니다). 따라서 선형 수학 연산을 수행하기 전에 sRGB에서 압축을 풀어야합니다. 이미지가 캡처되어 sRGB가 아닌 다른 표현으로 압축되었을 수도 있습니다.이 경우 해당 표현을 압축 해제해야합니다. 어쨌든 인코딩은 입력 이미지가 결코 벗어날 수없는 특정 범위를 암시합니다 (sRGB 저장 이미지는 일반적으로 채널당 8 비트로 잘림). 그러나 셰이더 수학은 입력 후에 해당 범위에 머무를 필요가 없습니다. 이미지가 압축 해제됩니다. 그러나 결국 디스플레이를 고려해야합니다.

이미지가 있고 이미지를 표시 할시기가되면 디스플레이 장치에 필요한 표현으로 이미지를 인코딩하십시오. CRT는 sRGB를 선택한 다음 LCD가 에뮬레이션했기 때문에 모니터 디스플레이를위한 sRGB 압축이 지난 수십 년간 일반적인 선택이었으며 출력이 sRGB 영역 내에서 고정되도록 제한했습니다. 그렇지 않으면 클리핑이 발생합니다. 넓은 범위의 디스플레이는 정확한 색 영역을 고수 할 필요가 없습니다.

(인간 제작 이미지가 sRGB로 인코딩되었다는 주장의 근거는 해당 이미지가 sRGB 디스플레이에서 작성된 것으로 가정 되었기 때문이라고 생각합니다)

이제 sRGB가 특히 쉐이더 수학 입력 및 이미지 표시를 위해 하드웨어에서 지원되는 이유를 더 잘 알 수 있습니다. 일반적인 경우입니다. 또한 지각적인 색상 밴딩 아티팩트를 줄이는 데 장점이 있으므로 8 비트로 색상을 압축하여 사람이 그럴듯하게 보이도록하는 좋은 방법입니다.


0

0..1 범위를 벗어난 값을 허용하는 경우 sRGB의 상당히 제한된 프라이 머리를 사용하더라도 전체 인간 시각 영역을 처리 할 수 ​​있습니다. 따라서 부동 소수점 밝은 색상 값을 저장하는 데 사용하는 기본 노드는 그다지 중요하지 않습니다. 그러나 기본의 임의 좌표가 스케일링 '피벗'으로 작동하기 때문에 모든 종류의 곱셈 수학을 수행하는 것은 약간 펑키합니다. sRGB 기본은 일반적으로 입력 데이터가 sRGB로 인코딩되고 출력 출력이 sRGB 또는 rec709이기 때문에 일반적으로 사용됩니다 ... rec2020에서는 절반이 변경되었지만 현재는 대부분의 입력 데이터가 여전히 sRGB로 인코딩되어 있으므로 스토리지와 동일한 기본은 가장 쉬운 옵션입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.