Main Content

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)')

Figure contains an axes object. The axes object with title Original Image (left) and Contrast Enhanced Image (right) contains an object of type image.

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

[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')

Figure contains an axes object. The axes object with title Original (left) and Contrast Enhanced (right) Image contains an object of type image.

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

입력 인수

모두 축소

회색조 영상으로, 2차원 숫자형 행렬로 지정됩니다.

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

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: "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"곡선형 히스토그램을 만듭니다.

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

데이터형: char | string

분포 파라미터로, 음이 아닌 숫자로 지정됩니다. AlphaDistribution"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.

확장 기능

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨

모두 확장