카메라 응답 함수를 이용한 High Dynamic Range 및 Low Dynamic Range 예시

간략한 설명

파일: \examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Bayer.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Color.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange\HDR_CRC_Gray.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_8bit_8192_4xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_10bit_8192_4xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_8192_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_16384_2xCxp2L.vad
\examples\Processing\HDR_ImageComposition\HighDynamicRange_HighDynamicRange_racer2L\HDR_CRC_Mono_12bit_8192_4xCxp2L.vad

기본 플랫폼: mE5-MA-VCL, imaFlex CXP-12 Quad

요약 설명

Debevec과 Malik이 제안한 HDR 알고리즘과 Reinhard 등 및 Fattal 등이 제안한 LDR 알고리즘.

HDR(High Dynamic Range) 이미지는 넓은 명도 범위를 재현합니다. 따라서 매우 어두운 부분과 매우 밝은 부분의 디테일이 모두 하나의 이미지에 결합됩니다. 대부분의 사진 촬영 기법으로는 단 한 번의 노출 시간으로 이토록 넓은 명도 범위를 구현할 수 없습니다. 따라서 HDR 이미지는 서로 다른 노출 시간을 가진 이미지들을 조합하여 생성됩니다. HDR 이미지는 대부분의 디스플레이에서 직접 표시할 수 없습니다. 따라서 HDR 이미지를 표시하기 위해서는 밝기를 조정하여 저동적 범위(LDR) 이미지와 대비를 줄이는 과정이 필요합니다. 이 과정을 톤 매핑이라고도 합니다. 이 VisualApplet 예제에서는 Debevec과 Malik[Deb97]의 HDR 알고리즘이 구현되어 있습니다. LDR 알고리즘은Reinhard [Rei02]와Fattal [Fat02]의 방법을 따릅니다. 다음에서 두 알고리즘에 대해 간략히 설명하겠습니다.

HDR (High Dynamic Range) 이미징

픽셀 값 픽셀 좌표가 포함된 이미지 i에서 및 조도 값의 함수로 표현될 수 있다 그리고 노출 시간 :

식 (32).


우리가 다음을 정의할 때 다음과 같이 이어집니다:

식 33.


여기서 우리는 다음을 호출합니다 응답 곡선. 이는 픽셀 값과 노출 시간 장면의 조도 . 모든 픽셀에 대해 일정하다고 가정합니다. 이를 알고 및 , 특이값 분해 방법을 사용하여 계산할 수 있습니다 [Deb97]. 이제 다음 식을 사용하여 HDR 이미지를 생성할 수 있습니다 [Deb97]:

식 34.


여기서 대수적 조도 값(기수 ) 생성된 HDR 이미지의 x, y 픽셀 위치에서 . 컬러 이미지의 경우 빨강, 초록 및 파랑 값은 (, 및 ). 즉, 식 34 빨강, 초록, 파랑 값에 대해 각각 별도로 계산해야 합니다. 는 노출 횟수입니다. 에서 식 34 는 가중치 함수입니다:

식 35.


LDR (Low Dynamic Range) 이미징

Bayer 및 컬러 이미지

HDR 이미지를 표시하려면 밝기 대비를 낮춰야 합니다. Reinhard 등 [Rei02] LDR 휘도 다음과 같이 계산할 수 있습니다:

식 (36).


여기서 다음은 스케일링된 HDR 휘도입니다:

식 37.


함수에 전달되는 표시된 LDR 이미지의 밝기를 조정합니다. 일반적인 값은 0.09에서 0.72 사이입니다 [Rei02]. 소위 상대적 “세계” 휘도 HDR 색상을 바탕으로 계산됩니다: , 및 :

식 38.


평균값 이 예제에서는 다음과 같이 계산됩니다.

식 39.


Fattal 등 [Fat02] LDR의 색상 성분 , 및 이제 다음과 같이 재구성할 수 있다.

식 40.


Grayscale Images

LDR 이미지 값 디스플레이에 출력할 그레이스케일 이미지의 경우 다음과 같이 계산할 수 있습니다:

식 41.


여기서 다음에 따른 HDR 처리의 결과입니다. 식 34. 이는 출력 이미지의 밝기를 조정하는 데 사용할 수 있는 매개변수 상수입니다.

VisualApplets Design

매우 어두운 물체와 매우 밝은 물체가 혼재된, 명도 범위가 매우 넓은 장면을 촬영하기 위한 HDR/LDR 알고리즘이 VisualApplets 에 그레이스케일("HDR_CRC_Gray.vad"), 베이어("HDR_CRC_Bayer.vad") 및 컬러("HDR_CRC_Color.vad") 카메라 이미지에 대해 구현되었습니다. 이미지가 PC로 전송되며, 이 이미지에서는 장면 내의 모든 피사체가 올바르게 표시됩니다. "HDR_CRC_Bayer.vad" 설계의 기본 구조는 그림 347에 나와 있습니다. 모든 예제는 동일한 원리를 따릅니다. 베이어 패턴 원시 이미지의 경우, 각 이미지 픽셀에 대한 적색, 녹색 및 청색 값은 HierarchicalBox Bayer 를 사용하여 Bayer5x5Linear연산자를 사용하여 계산됩니다. 이 박스는 예제 “HDR_CRC_Bayer.vad”의 내용만을 포함합니다. 이 박스는 예제 “HDR_CRC_Bayer 연산자를 사용하여 계산됩니다. 이 박스는 “HDR_CRC_Bayer.vad” 예제의 유일한 구성 요소입니다. “ ImageSequence 상자에는 세 장의 이미지 시퀀스가 버퍼링됩니다. 이 세 장의 이미지는 HDR-LDR 처리를 위해 서로 다른 세 가지 노출 시간을 가져야 합니다. 노출 시간은 각 이미지 픽셀이 노출 시퀀스 중 적어도 한 장의 이미지에서 과다 노출되거나 노출 부족되지 않도록 선택해야 합니다. 이러한 시간은 SignalWidth width1 부터 width3 HierarchicalBox 내의 트리거 (그림 348 참조). 시간 척도는 8 ns 단위의 시스템 클럭 틱임을 유의하십시오. 연산자 Generate-Period 는 최소한 다음 연산자들의 가장 긴 시간보다 큰 값으로 설정되어야 합니다. 연산자들 SignalWidth width1 부터 width3까지입니다. 또한 연산자 Generate-Period 의 최소 주기 길이에 대해서도 카메라 설명서를 참조해 주십시오. 세 장의 이미지는 앞서 설명한 Debevec과 Malik [Deb97]의 HDR 알고리즘을 사용하여 합성됩니다. 이 알고리즘은 HierarchicalBox HDR (그림 347)에 구현되어 있습니다. 그레이스케일, 베이어 및 컬러 이미지의 경우 구현 방식은 동일합니다. LDR 알고리즘은 LDR에 구현되어 있습니다. 컬러/베이어 이미지와 그레이스케일 이미지에 대한 구현 방식은 서로 다릅니다( 및 절 참조). 결과 RGB 이미지의 색상은 HierarchicalBox OutputToPC에서 병합됩니다. 이 박스는 예제 "HDR_CRC_Gray.vad"에는 존재하지 않습니다. 연산자 SourceSelector 연산자는 처리된 HDR-LDR 이미지 또는 (베이어 디모자이징 처리된) 카메라 이미지 중 하나를 DMA 전송 대상으로 선택할 수 있게 해줍니다.

기본 설계 구조

그림 347. 기본 설계 구조


박스 트리거의 내용

그림 348. ‘Trigger’ 상자의 내용


그림에서 349 HierarchicalBox의 내용을 확인할 수 있습니다 HDR. 버퍼링된 이미지 시퀀스의 세 장의 이미지에 대해, 분자의 가산항들은 그리고 분모 멤버는 식 34 은 이미지 1~3에 대해 계산됩니다 (HierarchicalBox 이미지1 에서 이미지3) 빨강, 초록, 파랑 색상에 대해 각각.

HDR 박스 내용물

그림 349. 상자 내 내용물 HDR


그림에서 350 HierarchicalBox 내의 이미지 1에 대해 빨간색에 대한 이 계산 과정을 확인할 수 있습니다. Red 상자 안에 이미지1)를 예로 들어보겠습니다. 모든 이미지의 모든 색상은 동일한 방식으로 처리됩니다. 카메라 응답 곡선 (CRC)의 로그 값은 HierarchicalBox 내의 조회 테이블을 통해 (적색/녹색/청색) 픽셀 값에 할당됩니다. 127 이상 픽셀 값이 127보다 크거나 상자 안에 있는 경우 underequal127 픽셀 값이 127 이하인 경우. 이 조회 테이블의 내용은 gO127 및 g_ueq_127 왜냐하면 빨강, 초록, 파랑 색상은 Matlab 프로그램 모듈인 "HDR_CRC.m", "sample.m" 및 "gsolve.m"( \examples\Processing\Advanced\HighDynamicRange\)을 사용하여 계산할 수 있으며, 이 모듈들은 Debevec과 Malik의 코드를 기반으로 하고 있기 때문이다 [Deb97] 및 부분적으로는 M. Eitz의 사례를 바탕으로 [Eit07]. 코드 사용 방법에 대한 자세한 안내는 “HDR_CRC.m” 파일에 포함된 간단한 설명서를 참고하시기 바랍니다. 다음을 사용하여 CONST 연산자 LNdt1 (그리고 아날로그 LNdt2 및 LNdt3 (그림 2 및 3의 경우) 노출 시간의 로그(기수: e) 값을 설정할 수 있습니다. 이 값에 다음을 곱해야 한다는 점에 유의하십시오. 16개의 분수 비트 때문입니다. 해당 시간 기준은 매개변수를 통해 선택할 수 있습니다. LNTimeBase. 의 값은 , 또는 시간 단위를 초, 밀리초 또는 마이크로초로 설정합니다. 조회 테이블에서 무게 에서 350 의 가중치 함수 식 35 구현되어 있습니다. Matlab 프로그램 모듈인 "HDR_CRC.m", "sample.m" 및 "Weight.m"을 사용하면 가중치 테이블 "Weights.txt"를 생성할 수 있습니다. 자세한 지침은 “HDR_CRC.m” (또는 그레이스케일 이미지의 경우 “HDR_CRC_Gray.m”)에 포함된 간단한 설명서를 참조하십시오. HierarchicalBox의 최종 출력 결과는 Red (그리고 아날로그 Green 및 Blue) 상자 안에 이미지1 (그리고 아날로그 이미지2 및 이미지3)는 그 다음에 및 .

이미지 1의 ‘Red’ 구성 요소 내용

그림 350. 이미지 1의 ‘Red ’ 구성 요소 내용


다시 그림으로 돌아가서. 349 상자 내용물로서 HDR. HDR 색상 구성 요소의 로그값 계산 , 및 ~에 따르면 식 34 상자 안에서 수행됩니다 Red, Green 및 Blue. 분자의 모든 성분에 대한 합계 그리고 분모 여기에서 값과 최종 나눗셈이 구현됩니다 (그림에서 빨간색 부분 참조) 351 (예를 들어).

HDR 모드에서 상자 안의 내용이 빨간색으로 표시됨

그림 351. HDR 모드에서 빨간색 상자의 내용


상자 Lw 에서 349 HDR 색상 값의 계산 과정이 포함되어 있습니다 , 및 로그 값을 바탕으로. 지수 함수는 조회 테이블을 사용하여 구현됩니다. 그런 다음 상대적 “월드” 휘도 “Lw”는 HDR 색상 성분을 바탕으로 다음 공식에 따라 계산됩니다. 식 38. 에 따르면 그 평균값은 식 39 는 상자 내에서 계산됩니다 Lw_d 모듈 내에서 LDR (기본 설계 구조는 그림 참조. 347). 의 전체 내용은 LDR 그림에 나와 있다. 352.

"HDR_CRC_Bayer.vad" 및 "HDR_CRC_Color.vad" 설계 파일 내 LDR 블록의 내용

그림 352. “HDR_CRC_Bayer.vad” 및 “HDR_CRC_Color.vad” 설계에서 LDR 블록의 내용


이 모듈 Ls 다음에 따라 스케일링된 휘도 계산이 포함되어 있습니다. 식 37 상대적 “세계” 휘도 및 그 평균값에 “밝기 매개변수”를 곱한 값으로 나눈 값 a. 이 매개변수 값을 변경하면 최종 처리된 이미지의 밝기를 조절할 수 있습니다. 이 매개변수에 대한 적절한 값은 VA 설계의 주석 상자에서 확인하거나, 더 자세한 내용이 궁금하신 경우 [Rei02]. LDR_휘도 다음에 따라 LDR 휘도를 계산합니다. 식 36. 이 값은 마지막으로 HierarchicalBox의 출력값과 곱해집니다. HDRColor , 및 적색, 녹색, 청색 색상 성분을 각각 따로 처리합니다. 그 결과, LDR의 적색, 녹색, 청색 색상 성분이 도출됩니다. [Fat02] 처리된 출력 이미지의. HierarchicalBox의 내용 LDR 그레이스케일 이미지에 대한 결과는 그림에 나와 있다. 353.

"HDR_CRC_Gray.vad" 설계 내 LDR 박스의 내용

그림 353. “HDR_CRC_Gray.vad” 설계 내 LDR 박스의 내용


HierarchicalBox Exp_Ln 는 그 로그값을 바탕으로 계산됩니다 HDR 처리의 결과로 (식 34). 상자 안에는 SQRT 제곱근은 ~절에 제시된 알고리즘에 따라 구해집니다. . 그 결과를 그 자체에 더한 값으로 나눈다 그리고 . 의 값은 이를 통해 운영자가 출력 이미지의 밝기를 설정할 수 있습니다. ShiftLeft_밝기.