이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

adapthisteq

대비 제한 적응 히스토그램 평활화(CLAHE: Contrast-limited adaptive histogram equalization)

설명

예제

J = adapthisteq(I)는 대비 제한 적응 히스토그램 평활화(CLAHE) [1]를 사용해 값을 변환하여 회색조 영상 I의 대비를 향상시킵니다.

J = adapthisteq(I,Name,Value)는 추가 이름-값 쌍을 지정합니다. 파라미터 이름은 축약형일 수 있으며, 대/소문자를 구분하지 않습니다.

예제

모두 축소

영상에 CLAHE를 적용하고 결과를 표시합니다.

I = imread('tire.tif');
J = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh');
imshowpair(I,J,'montage');
title('Original Image (left) and Contrast Enhanced Image (right)')

인덱스 색상 영상을 작업 공간으로 읽어 들입니다.

[X, MAP] = imread('shadow.tif');

인덱스 영상을 트루컬러(RGB) 영상으로 변환한 다음, RGB 영상을 L*a*b* 컬러스페이스로 변환합니다.

RGB = ind2rgb(X,MAP);
LAB = rgb2lab(RGB);

값을 adapthisteq 함수에 필요한 범위 [0 1]로 스케일링합니다.

L = LAB(:,:,1)/100;

L 채널에서 CLAHE를 수행합니다. 결과를 스케일링하여 L*a*b* 컬러스페이스에서 사용된 범위로 되돌립니다.

L = adapthisteq(L,'NumTiles',[8 8],'ClipLimit',0.005);
LAB(:,:,1) = L*100;

결과로 나타나는 영상을 다시 RGB 컬러스페이스로 변환합니다.

J = lab2rgb(LAB);

원본 영상과 처리된 영상을 표시합니다.

figure
imshowpair(RGB,J,'montage')
title('Original (left) and Contrast Enhanced (right) Image')

향상된 영상에서 그림자가 더 어둡게 보이고 밝은 부분은 더 밝게 보입니다. 전체적인 대비가 개선되었습니다.

입력 인수

모두 축소

입력 명암 영상으로, 숫자형 2차원 배열로 지정됩니다.

데이터형: single | double | int16 | uint8 | uint16

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'NumTiles',[8 16]은 영상을 8개 행, 16개 열의 타일로 나눕니다.

adapthisteq가 영상을 나누는 사각형 문맥 영역(타일)의 개수로, 양의 정수로 구성된 요소를 2개 가진 벡터로 지정됩니다. 원래 영상을 M개 행, N개 열의 타일로 나누는 경우, 'NumTiles'의 값은 [M N]입니다. MN은 모두 2 이상이어야 합니다. 타일의 총 개수는 M*N과 같습니다. 최적의 타일 개수는 입력 영상의 유형에 따라 달라지며 실험을 통해 가장 정확하게 결정할 수 있습니다.

데이터형: double

대비 향상 제한값으로, 범위 [0, 1]의 실수형 스칼라로 지정됩니다. 제한값이 높을수록 대비가 향상됩니다.

'ClipLimit'는 구체적으로 동질 구역(homogeneous areas)에서 일어나는 영상의 과포화를 방지하는 대비 인자입니다. 동질 구역은 많은 픽셀이 같은 회색 레벨 범위 내에 속하게 되어 영상의 특정 타일의 히스토그램에서 높게 솟은 피크로 나타납니다. 자르기 제한값이 없으면 적응 히스토그램 평활화 기법은 경우에 따라 원래 영상보다 좋지 않은 결과를 생성할 수도 있습니다.

데이터형: double

대비를 향상시키는 변환을 생성하는 데 사용되는 히스토그램 Bin의 개수로, 양의 정수 스칼라로 지정됩니다. 값이 클수록 처리 속도가 느려지는 대신 동적 범위는 넓어집니다.

데이터형: double

출력 영상 데이터의 범위로, 다음 값 중 하나로 지정됩니다.

설명
'full'출력값 클래스의 전체 범위를 사용합니다(예: uint8의 경우 [0 255]).
'original'범위를 [min(I(:)) max(I(:))]으로 제한합니다.

데이터형: char | string

원하는 히스토그램 형태로, 다음 값 중 하나로 지정됩니다.

설명
'uniform'평평한 히스토그램을 만듭니다.
'rayleigh'종 모양의 히스토그램을 만듭니다.
'exponential'곡선형 히스토그램을 만듭니다.

'Distribution'adapthisteq가 대비 변환 함수를 만들 때 기반으로 사용하는 분포를 지정합니다. 입력 영상의 유형에 따라 다른 분포를 선택해야 합니다. 예를 들어, 수중 영상은 레일리 분포를 사용할 때 훨씬 자연스럽게 보입니다.

데이터형: char | string

분포 파라미터로, 음이 아닌 실수형 스칼라로 지정됩니다. 'Alpha''Distribution''rayleigh' 또는 'exponential'로 설정된 경우에만 사용됩니다.

데이터형: double

출력 인수

모두 축소

출력 명암 영상으로, 입력 영상 I와 같은 클래스의 2차원 배열로 반환됩니다.

알고리즘

CLAHE는 전체 영상이 아니라 타일이라고 하는 영상의 작은 영역에 대해 연산을 수행합니다. adapthisteq는 각 타일에 대해 개별적으로 대비 변환 함수를 계산합니다. 출력 영역의 히스토그램이 'Distribution' 값으로 지정된 히스토그램과 거의 일치하도록 각 타일의 대비가 향상됩니다. 그런 다음, 인위적으로 만든 경계선을 제거하기 위해 쌍선형 보간을 사용하여 이웃 타일을 결합합니다. 특히 동질 영역에서 영상에 있을 수도 있는 잡음의 증폭을 방지하기 위해 대비가 제한될 수 있습니다.

참고 문헌

[1] Zuiderveld, Karel. “Contrast Limited Adaptive Histograph Equalization.” Graphic Gems IV. San Diego: Academic Press Professional, 1994. 474–485.

참고 항목

R2006a 이전에 개발됨