울트라 HDR 이미지 형식 v1.0

소개

이 문서에서는 로그 범위 게인 맵 이미지를 JPEG 이미지 파일로 인코딩하는 새로운 파일 형식의 동작을 정의합니다. 새 형식을 지원하지 않는 기존 리더는 이미지 파일에서 기존의 낮은 동적 범위 이미지를 읽고 표시합니다.이 형식을 지원하는 리더는 기본 이미지를 게인 맵과 결합하고 호환되는 디스플레이에 HDR(High Dynamic Range) 이미지를 렌더링합니다.

이 문서의 나머지 부분에서는 이 형식을 활용하는 데 필요한 프로세스의 메서드를 설명합니다. 개략적으로 이 형식에 맞는 이미지의 수명 주기는 다음과 같습니다.

  1. 인코딩

    1. 지도 생성
    2. 지도 압축 얻기
    3. 지도 컨테이너 생성 얻기
  2. 디코딩


관련 메타데이터 및 오프셋 정보가 포함된 울트라 HDR 이미지 형식 파일 레이아웃의 예

그림 1. 파일 레이아웃 및 관련 메타데이터의 예

동기

이 파일 형식의 목표는 추가 정보를 SDR 이미지 파일로 인코딩하여 디스플레이 기술과 함께 사용하여 최적의 HDR 렌더링을 단일 파일로 생성할 수 있도록 하는 것입니다.

실질적으로 이를 위해서는 파일 형식이 다음과 같아야 합니다.

  • 이전 버전과 호환되어야 기본 뷰어인 경우 기존 SDR 이미지가 표시됩니다.
  • 추가 공간을 너무 많이 차지하지 않습니다.

또한 표시 기법은 다음을 충족해야 합니다.

  • 디코딩하기 위해 과도한 처리가 필요하지 않습니다.
  • 디스플레이의 HDR 화이트 포인트와 SDR 화이트 포인트 간의 모든 비율에 맞게 조정할 수 있어야 하며, 이는 기기 간에 또는 단일 기기에서 일시적으로 다를 수 있습니다.

마지막으로 기법은 다음 작업 없이 앞의 모든 작업을 수행할 수 있어야 합니다.

  • 하이라이트 클리핑
  • 으스스한 그림자
  • 부분 대비 변경 또는 압축
  • 상대적 색조 관계 변경 (장면에서 객체 간)

종속 항목

다음은 이 사양에 대한 표준 참조입니다.

정의

  • SDR 디스플레이

    • HDR 콘텐츠 표시용으로 설계되지 않은 일반 디스플레이 이러한 디스플레이는 일반적으로 약 400cd/m2 이하의 명목 최대 밝기를 생성합니다.
  • HDR 디스플레이

    • HDR 콘텐츠용으로 설계된 디스플레이입니다. 이러한 디스플레이는 일반적으로 SDR 디스플레이보다 명목상 최대 밝기(일반적으로 800cd/m2 이상)를 생성하며 일반적으로 SDR 디스플레이보다 대비율이 더 높습니다.
  • 기본 이미지

    • 보조 미디어 파일이 추가된 GContainer 파일의 첫 번째 이미지 인스턴스입니다. 기본 이미지에는 파일 컨테이너에 있는 후속 보조 미디어 항목 파일의 순서와 속성을 정의하는 GContainer XMP 메타데이터가 포함됩니다.
  • 보조 이미지

    • GContainer 파일의 기본 이미지에 추가되는 후속 미디어 항목 파일
  • 범위 압축

    • 사진에서 실제 장면은 SDR 디스플레이가 표현할 수 있는 것보다 더 동적인 범위가 있는 경우가 많습니다. 이미지의 다이내믹 레인지를 줄이기 위해서는 범위 압축(로컬 톤 매핑이라고도 함)과 같은 작업이 필요합니다. 이렇게 축소하려면 로컬 대비를 최대한 유지하면서 하이라이트가 클리핑되거나 그림자가 깨지는 일을 방지해야 합니다.이미지에서 전체 대비에 더 많이 기여하는 큰 휘도 가장자리의 크기를 줄이면서 세부사항인 작은 휘도 가장자리의 크기를 유지하려고 합니다.다양한 구현 방법이 있지만 이러한 작업은 오늘날 대부분의 최신 디지털 카메라에서 표준입니다.
  • SDR 화이트 포인트

    • 특정 시점에 디스플레이에 있는 SDR 콘텐츠의 최대 선형 휘도입니다.
  • HDR 화이트 포인트

    • 특정 시점에 디스플레이에 있는 HDR 콘텐츠의 최대 선형 휘도입니다. 이 값은 일반적으로 SDR 화이트 포인트보다 높습니다.
  • 증폭

    • HDR 화이트 포인트를 SDR 화이트 포인트로 나눈 값입니다.
  • 최대 콘텐츠 부스트 (수식에서 max_content_boost개)

    • 이 값을 사용하면 콘텐츠 크리에이터가 HDR 디스플레이에 표시될 때 SDR 렌더링에 비해 이미지가 얼마나 더 밝게 될 수 있는지를 제한할 수 있습니다.
    • 이 값은 특정 이미지의 상수입니다. 예를 들어 값이 4이면 주어진 픽셀에서 표시되는 HDR 렌디션의 선형 휘도는 SDR 렌디션의 선형 휘도 최대 4배여야 합니다. 즉, 장면에서 밝은 부분이 최대 4배까지 더 밝게 표시될 수 있습니다.
    • 실제로 이 값은 일반적으로 1.0보다 큽니다.
    • 항상 최소 콘텐츠 부스트보다 크거나 같습니다.
  • 최소 콘텐츠 부스트 (수식에서 min_content_boost)

    • 이 값을 통해 콘텐츠 크리에이터는 SDR 렌디션에 비해 HDR 디스플레이에 표시될 때 이미지가 얼마나 어둡게 될 수 있는지 제한할 수 있습니다.이 값은 특정 이미지의 상수입니다.
    • 예를 들어 값이 0.5이면 주어진 픽셀에서 표시되는 HDR 렌디션의 선형 휘도는 최소한 SDR 렌디션의 선형 휘도의 0.5배 이상이어야 합니다.
    • 실제로 이 값은 일반적으로 1.0과 같거나 이보다 작습니다.
    • 항상 최대 콘텐츠 부스트 이하입니다.
  • 최대 디스플레이 부스트 (수식에서 max_display_boost개)

    • 특정 시점에 디스플레이에서 지원하는 최대 부스트입니다. 이 값은 기기 설정 및 주변광 상태 또는 화면의 밝은 픽셀 수와 같은 기타 요인에 따라 시간이 지남에 따라 변경될 수 있습니다.
    • 예를 들어 이 값이 4.0이면 디스플레이는 SDR 화이트 포인트보다 최대 4배 더 밝은 픽셀을 표시할 수 있습니다. 디스플레이가 항상 적어도 SDR 화이트만큼 밝게 HDR 흰색을 표시할 수 있으므로 이 값은 항상 1.0보다 크거나 같습니다.
  • 디스플레이 부스트

    • 최대 콘텐츠 부스트와 최대 디스플레이 부스트 중 작은 값과 같습니다. 이 값은 항상 1.0보다 크거나 같습니다.
    • 예를 들어 최대 콘텐츠 부스트가 4.0이고 최대 디스플레이 부스트가 3.0이면 디스플레이 부스트는 3.0입니다. 디스플레이 기능이 제한 요소이기 때문에 픽셀은 SDR보다 최대 3배 더 밝게 표시됩니다.
    • 예를 들어 최대 콘텐츠 부스트가 4.0이고 최대 디스플레이 부스트가 5.0이면 디스플레이 부스트는 4.0입니다. 콘텐츠의 의도가 제한 요소이기 때문에 픽셀은 SDR보다 최대 4배 더 밝게 표시됩니다.
  • HDR 렌더링 타겟

    • 콘텐츠 크리에이터의 평가는 이상적인 HDR 렌더링입니다.
  • 조정된 HDR 렌더링

    • 현재 디스플레이 부스트에 타겟 HDR 렌더링을 조정한 후 디스플레이에 표시되는 최종 HDR 렌더링입니다.
  • 이득 맵 (방정식에서 recovery(x, y))

    • 타겟 HDR 렌디션을 생성하기 위해 SDR 렌디션에서 각 픽셀을 얼마나 밝게 할지를 나타내는 맵입니다. 이 지도는 단일 채널 또는 다중 채널일 수 있습니다. 다중 채널 지도는 빨간색, 녹색, 파란색과 같은 각 색상 채널의 개별 게인을 나타냅니다. 이 문서는 단일 채널 맵의 경우를 보여줍니다.
  • clamp(x, a, b)

    • 값 x를 [a, b] 범위로 고정합니다.
  • exp2(x)

    • 밑이 2입니다. 2x입니다.
  • floor(x)

    • x와 같거나 이보다 작은 가장 가까운 정수를 반환합니다.
  • log2(x)

    • 밑이 2인 대수, 로그2(x)
  • pow(b, x)

    • 거듭제곱, bx.
  • XMP

    • 확장 가능한 메타데이터 플랫폼 메타데이터를 이미지 컨테이너에 인코딩하는 방법을 정의하는 표준으로, ISO 16684-1:2011(E) XMP 사양 1부에 정의되어 있습니다.
  • 다중 사진 형식

    • 다중 사진 형식은 여러 JPEG 인코딩 이미지를 단일 JPEG 파일에 저장하기 위해 카메라 및 이미징 제품 협회 (CIPA)에서 개발한 기법입니다.
    • 자세한 내용은 관련 종속 항목인 CIPA DC-x 007-2009 Multi-Picture Format 백서를 참고하세요.
  • G컨테이너

    • GContainer는 여러 이미지를 하나의 이미지 컨테이너에 저장하는 방법이며, 이때 하나의 이미지가 기본 이미지로 간주됩니다. 모든 추가 이미지는 대체 버전 또는 보조 이미지로 간주됩니다. XMP 메타데이터는 추가 이미지의 존재와 의미를 전달하는 데 사용됩니다. 자세한 내용은 GContainer 세부정보 섹션을 참고하세요.

인코딩

이 섹션에서는 준수하는 JPEG 파일을 인코딩하는 방법을 설명합니다. JPEG 형식에 관한 자세한 내용은 종속 항목 섹션에서 연속 톤 스틸 이미지의 디지털 압축 및 코딩을 참고하세요.

지도 생성

카메라 이미징 파이프라인은 일반적으로 범위 압축 작업을 실행하여 더 높은 동적 범위 휘도 데이터를 기존 SDR 디스플레이의 더 낮은 범위로 압축합니다. 게인 맵은 원래의 높은 다이내믹 레인지 휘도 데이터를 복구하기에 충분한 데이터를 저장하는 메커니즘을 제공합니다.

이 섹션의 다음 계산에서는 부동 소수점 연산을 가정합니다.

다음 함수는 SDR 이미지를 설명합니다.

  • SDR'(x, y)는 3채널 비선형 (일반적으로 감마로 인코딩된) 기본 이미지입니다.
  • SDR(x, y)은 3채널 기본 이미지의 선형 버전으로, 기본 이미지 색상 공간의 선형 버전으로 변환하여 얻습니다. sRGB 전달 함수가 있는 색 공간에서 sRGB 원색을 보존하는 선형 색 공간으로 바꾸는 것을 예로 들 수 있습니다.

Ysdr(x, y) 함수는 0.0~1.0의 범위로 정의되며 표준 동적 범위 기본 이미지 선형 휘도입니다.

Ysdr(x, y) = primary_color_profile_to_luminance(SDR(x, y))

HDR 이미지에도 유사한 정의가 존재합니다.

  • HDR'(x, y)은 3채널 비선형, 즉 PQ 또는 HLG로 인코딩된 이미지입니다.
  • HDR(x, y)은 3채널 선형 HDR 이미지입니다.

Yhdr(x, y)는 HDR 이미지의 특정 지점의 휘도입니다.

Yhdr(x, y) = primary_color_profile_to_luminance(HDR(x, y))

Yhdr(x, y)는 0.0에서 최대 콘텐츠 부스트까지 범위로 정의됩니다.

SDR 이미지와 HDR 이미지의 해상도가 동일해야 합니다. SDR 이미지의 색상 프로필은 HDR 이미지의 색상 공간을 정의합니다.

예를 들어 SDR 기본 이미지에 Display-P3 색상 프로필이 있으면 HDR 이미지는 해당 프로필의 기본 색상을 기준으로 정의됩니다. 즉, HDR 이미지에는 Display-P3 원색도 있습니다.

게인 맵은 원하는 HDR 이미지 휘도 Yhdr(x, y)와 표준 범위 휘도 이미지 Ysdr(x, y)를 포함하는 두 개의 선형 이미지에서 계산됩니다.

pixel_gain(x, y) 함수는 Yhdr(x, y) 함수와 Ysdr(x, y) 함수 사이의 비율로 정의됩니다.

pixel_gain(x, y) = (Yhdr(x, y) + offset_hdr) / (Ysdr(x, y) + offset_sdr)

Ysdr(x, y)offset_sdr가 모두 0인 pixel_gain(x, y) 함수 동작은 구현을 통해 정의됩니다.

예를 들어 pixel_gain(x, y)을 1.0으로 정의하여 Ysdr(x, y)offset_sdr가 모두 0인 경우를 처리할 수 있습니다. 또는 0이 아닌 offset_sdr를 활용하여 이 시나리오를 피할 수도 있습니다.

구현은 offset_sdroffset_hdr의 값을 선택할 수 있습니다.

게인 맵은 최대 콘텐츠 부스트 및 최소 콘텐츠 부스트를 기준으로 pixel_gain(x, y)를 대수 공간으로 인코딩하는 스칼라 함수입니다.

map_min_log2 = log2(min_content_boost)
map_max_log2 = log2(max_content_boost)

log_recovery(x, y) = (log2(pixel_gain(x, y)) - map_min_log2)
                   / (map_max_log2 - map_min_log2)
clamped_recovery(x, y) = clamp(log_recovery(x, y), 0.0, 1.0)
recovery(x, y) = pow(clamped_recovery(x, y), map_gamma)

log2(0)가 정의되지 않았으므로 pixel_gain(x, y)가 0인 recovery(x, y) 함수 동작은 구현이 정의됩니다.

map_gamma는 0.0보다 커야 하는 부동 소수점 수이며 구현 시 선택합니다.

최대 콘텐츠 부스트 및 최소 콘텐츠 부스트 값은 구현을 정의하며 콘텐츠 제작자가 임의로 결정할 수 있습니다. 최대 콘텐츠 부스트는 1.0 이상이어야 합니다. 최소 콘텐츠 부스트는 범위 (0.0, 1.0] 내에 있어야 합니다.

recovery(x, y)의 값은 [0.0, 1.0] 범위로 제한됩니다.

게인 맵은 보조 이미지 JPEG에 저장되므로 부호 없는 8비트 정수 값을 사용하여 [0, 255] 범위를 사용하여 인코딩해야 합니다. 각 값은 recovery(x, y) 값을 나타내며 보조 이미지의 1픽셀에 저장됩니다.

8비트 부호 없는 정수 저장소의 경우 인코딩된 값은 다음과 같이 정의됩니다.

encoded_recovery(x, y) = floor(recovery(x, y) * 255.0 + 0.5)

인코딩 함수의 계산은 부동 소수점으로 이루어지며, 표시된 대로 반올림하여 마지막에 부호 없는 8비트 정수로 변환합니다.

이 인코딩 결과로 0.0에서 1.0 사이의 recovery(x, y) 값의 부호 없는 8비트 정수 표현이 생성됩니다. 인코딩된 게인 맵은 보조 이미지 항목에 JPEG로 저장되어야 합니다. 구현은 JPEG 인코딩 중에 사용할 압축량을 선택합니다.

게인 맵이 보조 이미지에 저장된 후에는 MPF 및 GContainer XMP 메타데이터와 함께 기본 이미지에 추가됩니다. 기본 이미지 GContainer 디렉터리에는 게인 맵 이미지 항목이 포함되어야 합니다.

저장된 게인 맵의 해상도는 구현을 통해 정의되며 기본 이미지의 해상도와 다를 수 있습니다. 게인 맵이 저장을 위해 기본 이미지와 다른 해상도로 조정되는 경우 샘플링 방법은 이중 선형 이상이어야 하며 구현이 정의됩니다.

게인 맵의 방향은 기본 이미지의 방향과 일치해야 합니다. 있는 경우 EXIF와 같이 저장된 게인 맵 이미지에 방향 메타데이터가 사용되지 않습니다.

있는 경우 게인 맵의 색상 프로필은 사용되지 않습니다.

지도 컨테이너 얻기

색상 프로필

이미지의 색상 프로필은 기본 이미지의 ICC 프로필을 통해 표시해야 합니다.

XMP 속성

기본 이미지에는 HDR 게인 맵 형식의 추가 의미론 정보와 함께 두 개 이상의 이미지를 정의하는 XMP 메타데이터가 포함됩니다.

다음 하위 섹션에는 이 형식에 관한 세부정보가 포함되어 있습니다. GContainer의 일반적인 준수에 관한 추가 정보는 GContainer 세부정보 섹션에 명시되어 있습니다.

다음 표에 설명된 속성 값은 지정된 XMP 기본 값 유형의 XMP 단순 값으로 저장됩니다.

항목 시맨틱 값

Item:Semantic 속성은 컨테이너 디렉터리에 있는 각 미디어 항목의 애플리케이션별 의미를 정의합니다.

설명
기본 미디어 항목이 컨테이너에서 표시할 준비가 된 기본 이미지임을 나타냅니다. 디렉터리에는 '기본' 항목이 한 개 있어야 합니다.
증가 지도 미디어 항목이 게인 맵임을 나타냅니다. 디렉터리에는 최대 1개의 'GainMap' 항목이 포함될 수 있습니다.

HDR 게인 지도 메타데이터

게인 맵 메타데이터는 게인 맵을 해석하고 적용하여 기본 이미지의 HDR 표현을 생성하는 방법에 관한 정보를 인코딩합니다.

게인 맵 메타데이터 XMP 확장 프로그램의 XMP 네임스페이스 URI는 http://ns.adobe.com/hdr-gain-map/1.0/입니다. 기본 네임스페이스 프리픽스는 hdrgm입니다.

이 메타데이터는 게인 맵 이미지의 XMP 패킷에 저장되며 다음 속성이 게인 맵 이미지 XMP의 rdf:Description에 나타나야 합니다.

이름 유형 설명
hdrgm:버전 텍스트 사용 중인 게인 맵 형식의 버전입니다. 이 버전은 '1.0'입니다. 필수사항:
hdrgm:BaseRenditionIsHDR 부울 기본 이미지의 다이내믹 레인지를 나타냅니다. 'False'는 기본 이미지가 SDR이며 게인 맵과 결합하여 HDR 렌디션을 생성할 수 있음을 나타냅니다. 'True'는 기본 이미지가 HDR이며 게인 맵과 결합하여 SDR 렌디션을 생성할 수 있음을 나타냅니다. 'False'여야 합니다. 선택사항입니다. 기본값은 'False'입니다.
hdrgm:GainMapMin 실수의 실수 또는 순서 배열 map_min_log2의 값을 저장합니다. 최소 콘텐츠 부스트의 log2이며, 주어진 픽셀에서 SDR 이미지의 (나누기)을 기준으로 타겟 HDR 렌더링에 허용되는 선형 휘도의 최소 비율입니다. 단일 리얼 또는 헤알의 순서가 지정된 배열일 수 있습니다. 순서가 지정된 Real 배열에는 모든 채널에 적용되는 항목 하나 또는 빨간색, 녹색, 파란색 채널에 각각 적용되는 항목 3개가 포함될 수 있습니다. hdrgm:GainMapMax 이하여야 합니다. 선택사항입니다. 기본값은 0.0입니다.
hdrgm:GainMapMax 실수의 실수 또는 순서 배열 map_max_log2의 값을 저장합니다. 최대 콘텐츠 부스트의 log2이며, 주어진 픽셀에서 SDR 이미지를 (나누어) 기준으로 타겟 HDR 렌더링에 허용되는 선형 휘도의 최대 비율입니다. 단일 리얼 또는 헤알의 순서가 지정된 배열일 수 있습니다. 순서가 지정된 Real 배열에는 모든 채널에 적용되는 항목 하나 또는 빨간색, 녹색, 파란색 채널에 각각 적용되는 항목 3개가 포함될 수 있습니다. hdrgm:GainMapMin 이상이어야 합니다. 필수사항.
hdrgm:감마 실수의 실수 또는 순서 배열 map_gamma의 값을 저장합니다. 저장된 지도 값에 적용할 감마입니다. 단일 헤알 또는 헤알의 순서가 지정된 배열일 수 있습니다. 순서가 지정된 Real 배열에는 모든 채널에 적용되는 항목 1개 또는 빨간색, 녹색, 파란색 채널에 각각 적용되는 항목 3개가 포함될 수 있습니다. 0.0보다 커야 합니다. 선택사항입니다. 기본값은 1.0입니다.
hdrgm:오프셋SDR 실수의 실수 또는 순서 배열 offset_sdr의 값을 저장합니다. 게인 맵 생성 및 적용 중에 SDR 픽셀 값에 적용되는 오프셋입니다. 단일 헤알 또는 정렬된 헤알의 배열일 수 있습니다. 순서가 지정된 Real 배열에는 모든 채널에 적용되는 항목 한 개 또는 빨간색, 녹색, 파란색 채널에 각각 적용되는 항목 3개가 포함될 수 있습니다. 0.0 이상이어야 합니다. 선택사항입니다. 기본값은 0.015625 (1/64)입니다.
hdrgm:오프셋HDR 실수의 실수 또는 순서 배열 offset_hdr의 값을 저장합니다. 게인 맵 생성 및 적용 중에 HDR 픽셀 값에 적용하는 오프셋입니다. 단일 헤알 또는 정렬된 헤알의 배열일 수 있습니다. 순서가 지정된 Real 배열에는 모든 채널에 적용되는 항목 한 개 또는 빨간색, 녹색, 파란색 채널에 각각 적용되는 항목 3개가 포함될 수 있습니다. 0.0 이상이어야 합니다. 선택사항입니다. 기본값은 0.015625 (1/64)입니다.
hdrgm:HDRCapacityMin 실제 hdr_capacity_min의 값을 저장합니다. 지도가 적용되는 최소 디스플레이 부스트 값의 log2입니다. 이 값은 디스플레이 부스트에 따라 게인 맵을 적용할 정도에도 영향을 줍니다. 0.0 이상이어야 합니다. 선택사항입니다. 기본값은 0.0입니다.
hdrgm:HDR용량최대 실제 hdr_capacity_max의 값을 저장합니다. 지도가 완전히 적용되는 최대 디스플레이 부스트 값의 log2입니다. 이 값은 디스플레이 부스트에 따라 게인 맵을 적용할 정도에도 영향을 줍니다. hdrgm:HDRCapacityMin보다 커야 합니다. 필수사항.

게인 맵 XMP 예시

유효한 게인 맵 XMP 패킷의 다음 예에는 소개 섹션에 설명된 예 파일에서 가져온 메타데이터가 포함되어 있습니다.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
     xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/"
     hdrgm:Version="1.0"
     hdrgm:GainMapMin="-0.57609993"
     hdrgm:GainMapMax="4.7090998"
     hdrgm:Gamma="1"
     hdrgm:OffsetSDR="0.015625"
     hdrgm:OffsetHDR="0.015625"
     hdrgm:HDRCapacityMin="0"
     hdrgm:HDRCapacityMax="4.7090998"
     hdrgm:BaseRenditionIsHDR="False"/>
  </rdf:RDF>
</x:xmpmeta>

게인 맵의 MPF 저장소

게인 맵 이미지는 종속 항목 섹션에 참조된 대로 CIPA DC-x 007-2009 Multi-Picture Format에 정의된 추가 이미지로 저장되어야 합니다.

디코딩

이 섹션에서는 준수하는 JPEG 파일에서 게인 맵을 디코딩하는 방법을 설명합니다.

형식의 신호

이 형식을 따르는 JPEG 파일은 기본 이미지의 XMP 패킷에 hdrgm:Version="1.0"가 있으면 식별할 수 있습니다. 여기서 hdrgm는 네임스페이스 URI http://ns.adobe.com/hdr-gain-map/1.0/입니다.

게인 지도 이미지 찾기

이미지 파싱 및 디코딩에 관한 자세한 내용은 다음 GContainer 세부정보 섹션을 참고하세요. XMP rdf:Directory 내의 'GainMap' 시맨틱 항목은 게인 맵 이미지의 위치를 알리는 데 사용됩니다. 또는 MPF 인덱스 IFD와 스캔 이미지의 XMP를 사용하여 게인 맵의 위치를 확인합니다.

잘못된 메타데이터 처리

필수 필드가 없거나 잘못된 값이 있는 필드가 있으면 메타데이터가 잘못된 것으로 간주됩니다. 값이 지정된 유형에 파싱할 수 없거나 예상 범위를 벗어나기 때문에 잘못된 값일 수 있습니다.

잘못된 메타데이터가 발생하면 게인 맵을 무시하고 SDR 이미지가 표시되어야 합니다.

디스플레이

HDR 게인 맵 형식으로 인코딩된 파일은 기존 SDR 디스플레이 또는 더 높은 휘도 출력을 지원하는 HDR 디스플레이에서 렌더링될 수 있습니다.

게인 맵을 사용하여 조정된 HDR 렌더링 만들기

이 섹션의 다음 계산에서는 부동 소수점 산술을 가정합니다.

encoded_recovery(x, y)는 게인 맵 이미지의 부호 없는 단일 채널 8비트 정수 값입니다.

게인 맵이 기본 이미지와 해상도가 다르면 encoded_recovery(x, y)는 각각 기본 이미지 너비와 높이의 범위에 걸쳐 x 및 y에 관한 게인 맵 이미지의 필터링된 샘플링에 의해 결정됩니다. 필터링 메서드는 이중 선형 이상이어야 하며 구현이 정의되어 있습니다.

map_gammahdrgm:Gamma 메타데이터 필드에 의해 결정됩니다.

log_recovery(x, y)는 로그 공간에서 정규화된 부동 소수점 픽셀 게인입니다.

recovery(x, y) = encoded_recovery(x, y) / 255.0
log_recovery(x, y) = pow(recovery(x, y), 1.0 / map_gamma)

최대 디스플레이 부스트는 현재 HDR 화이트 포인트 사이의 비율로 정의되고 현재 SDR 화이트 포인트로 나눈 비율로 정의되는 스칼라 부동 소수점 값입니다. 이 값은 디스플레이 시스템에서 제공하며 시간이 지남에 따라 변경될 수 있습니다.

hdr_capacity_maxhdrgm:HDRCapacityMax 메타데이터 필드에 의해 결정됩니다. hdr_capacity_minhdrgm:HDRCapacityMin 메타데이터 필드에 의해 결정됩니다.

weight_factorhdrgm:BaseRenditionIsHDR가 'False'인 경우 다음과 같이 결정됩니다.

unclamped_weight_factor = (log2(max_display_boost) - hdr_capacity_min)
                        / (hdr_capacity_max - hdr_capacity_min)
weight_factor = clamp(unclamped_weight_factor, 0.0, 1.0)

hdrgm:BaseRenditionIsHDR이 'True'인 경우 두 번째 등식은 다음과 같습니다.

weight_factor = 1.0 - clamp(unclamped_weight_factor, 0.0, 1.0)

gain_map_maxhdrgm:GainMapMax 메타데이터 필드에 의해 결정됩니다. gain_map_minhdrgm:GainMapMin 메타데이터 필드에 의해 결정됩니다. offset_sdrhdrgm:OffsetSDR 메타데이터 필드에 의해 결정됩니다. offset_hdrhdrgm:OffsetHDR 메타데이터 필드에 따라 결정됩니다.

선형 조정 HDR 렌디션은 다음과 같이 계산할 수 있습니다.

log_boost(x, y) = gain_map_min * (1.0f - log_recovery(x, y))
                + gain_map_max * log_recovery(x, y)
HDR(x, y) = (SDR(x, y) + offset_sdr) * exp2(log_boost(x, y) * weight_factor)
          - offset_hdr

필요한 경우 구현은 HDR(x, y)에 변환을 적용하여 디스플레이에서 예상하는 공간에 데이터를 배치할 수 있습니다. 이러한 변환은 색수학적으로 정확해야 합니다.

GContainer 세부정보

이 섹션에서는 이 형식이 GContainer XML 메타데이터를 준수하기 위한 추가 요구사항을 설명합니다. 메타데이터는 ISO 166841:2011(E) XMP 사양 파트 1에 따라 직렬화되고 Adobe XMP 사양 3부 파일 저장소에 설명된 대로 기본 이미지 파일 내에 삽입됩니다. 기본 이미지 파일에는 RDF/XML로 형식이 지정된 다음 항목이 포함됩니다.

XMP 패킷 요구사항

XMP 패킷에는 네임스페이스 URI http://ns.adobe.com/hdr-gain-map/1.0/를 통해 게인 맵 메타데이터 XMP 확장이 포함되어야 합니다. 기본 네임스페이스 프리픽스는 hdrgm입니다.

XMP 패킷은 hdrgm:Version="1.0"를 정의해야 합니다.

컨테이너 요소

GContainer XMP 확장 프로그램의 XMP 네임스페이스는 http://ns.google.com/photos/1.0/container/입니다. 기본 네임스페이스 프리픽스는 Container입니다.

기본 이미지에는 파일 컨테이너에 있는 후속 미디어 파일의 순서와 속성을 정의하는 XMP 메타데이터의 Container:Directory 요소가 포함됩니다. 컨테이너의 각 파일에는 Container:Directory에 상응하는 미디어 항목이 있습니다. 미디어 항목은 파일 컨테이너의 위치와 연결된 각 파일의 기본 속성을 설명합니다.

컨테이너 요소는 기본 이미지의 XMP 메타데이터로 인코딩되며, 컨테이너의 미디어 항목 디렉터리를 정의합니다. 미디어 항목은 디렉터리의 미디어 항목 요소와 같은 순서로 컨테이너 파일에 있어야 하며 긴밀하게 압축되어야 합니다.

디렉터리에는 '기본' 이미지 항목을 하나만 포함할 수 있으며, 이 항목이 디렉터리의 첫 번째 항목이어야 합니다.

요소 이름 유형 설명
컨테이너:디렉터리 구조의 순서가 지정된 배열 컨테이너의 레이아웃과 콘텐츠를 정의하는 Container:Item 구조체를 포함하는 구조체의 순서가 지정된 배열

항목 요소

항목 요소는 애플리케이션에서 각 미디어 항목을 사용하는 방법을 설명합니다.

GContainer 항목 XMP 확장 프로그램의 XMP 네임스페이스 URI는 http://ns.google.com/photos/1.0/container/item/입니다. 기본 네임스페이스 프리픽스는 Item입니다.

첫 번째 미디어 항목은 기본 이미지여야 합니다.항목 MIME 유형 값에 나열된 Item:Semantic = "Primary"Item:Mime를 지정해야 합니다.

기본 이미지 항목의 길이는 파일 컨테이너의 시작 부분에서 시작하여 MIME 유형에 따라 기본 이미지를 파싱하여 결정됩니다.

미디어 항목에는 미디어 항목의 끝과 다음 미디어 항목의 시작 부분 사이에 추가 패딩을 지정하는 Item:Padding 속성이 포함될 수 있습니다. Container:Directory의 마지막 미디어 항목에 있는 경우 Item:Padding은 항목의 끝과 파일 끝 사이의 패딩을 나타냅니다.

각 미디어 항목은 Item:Mime 유형과 Item:Semantic 속성을 포함해야 합니다. 보조 이미지 미디어 항목은 Item:Length 속성을 포함해야 합니다.

순차적 미디어 항목은 파일 컨테이너 내에서 리소스 데이터를 공유할 수 있습니다. 첫 번째 미디어 항목은 파일 컨테이너의 리소스 위치를 결정하고 후속 공유 미디어 항목에는 Item:Length가 0으로 설정됩니다. 리소스 데이터 자체가 컨테이너인 경우 Item:URI를 사용하여 리소스 내 미디어 항목 데이터의 위치를 확인할 수 있습니다.

컨테이너의 미디어 항목 리소스 위치는 기본 이미지 인코딩의 길이, 이전 보조 미디어 항목 리소스의 Item:Length 값, 이전의 모든 Item:Padding 값을 합산하여 결정됩니다. Item:Padding은 값을 지정하지 않는 미디어 항목 리소스에서 0으로 간주됩니다.

속성 이름 유형 설명
항목:MIME 텍스트 컨테이너에 있는 미디어 항목의 MIME 유형을 나타내는 간단한 문자열입니다. 정의는 항목 MIME 유형 값 섹션을 참고하세요. 필수사항:
항목:시맨틱 텍스트 미디어 항목의 애플리케이션별 의미를 나타내는 간단한 문자열입니다. 정의는 항목 시맨틱 값 섹션을 참고하세요. 필수사항:
항목:길이 정수 항목의 바이트 단위의 양의 정수 길이를 포함하는 간단한 문자열입니다. 길이 0은 미디어 항목 리소스가 이전 미디어 항목과 공유되었음을 나타냅니다. 보조 미디어 항목에 필요합니다. 기본 이미지 미디어 항목의 경우 선택사항입니다.
항목:라벨 텍스트 동일한 Item:Semantic로 여러 항목 요소를 구별하는 데 사용되는 구현 정의 문자열입니다. 선택사항.
항목:패딩 정수 미디어 항목의 끝과 다음 미디어 항목의 시작 사이 또는 Container:Directory의 마지막 미디어 항목에 사용되었을 때 파일의 끝 부분 사이에 추가 패딩의 바이트(바이트)를 포함하는 양의 정수 길이입니다. 존재하지 않는 경우 0으로 간주됩니다. 선택사항.
항목:URI 텍스트 ISO/IEC 14496-12 섹션 8.11.9를 준수하는 URI 문자열로, 미디어 항목 리소스 내에 미디어 데이터의 상대 URI가 포함됩니다. 기본값은 기본 이미지 리소스입니다. ISO 기본 미디어 파일 형식 ISO/IEC 14496-12 MIME 유형의 경우 선택사항입니다. 다른 용도로 사용할 수 없습니다.

항목 MIME 유형 값

Item:Mime 속성은 각 미디어 항목 데이터의 MIME 유형을 정의합니다.

설명
이미지/jpeg JPEG 이미지입니다.

GContainer XMP 예시

다음 유효한 GContainer XMP 패킷 예에는 소개 섹션에 설명된 예시 파일에서 가져온 메타데이터가 있습니다.

<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.1.2">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description
     xmlns:Container="http://ns.google.com/photos/1.0/container/"
     xmlns:Item="http://ns.google.com/photos/1.0/container/item/"
     xmlns:hdrgm="http://ns.adobe.com/hdr-gain-map/1.0/"
     hdrgm:Version="1.0">
      <Container:Directory>
        <rdf:Seq>
          <rdf:li rdf:parseType="Resource">
            <Container:Item
             Item:Semantic="Primary"
             Item:Mime="image/jpeg"/>
          </rdf:li>
          <rdf:li rdf:parseType="Resource">
            <Container:Item
             Item:Semantic="GainMap"
             Item:Mime="image/jpeg"
             Item:Length="66171"/>
          </rdf:li>
        </rdf:Seq>
      </Container:Directory>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>