adapthisteq
대비 제한 적응 히스토그램 평활화(CLAHE: Contrast-limited adaptive histogram equalization)
설명
예제
대비 제한 적응 히스토그램 평활화(CLAHE) 적용하기
영상에 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)')
인덱스 색상 영상에 CLAHE 적용하기
인덱스 색상 영상을 작업 공간으로 읽어 들입니다.
[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')
향상된 영상에서 그림자가 더 어둡게 보이고 밝은 부분은 더 밝게 보입니다. 전체적인 대비가 개선되었습니다.
입력 인수
I
— 회색조 영상
2차원 숫자형 행렬
회색조 영상으로, 2차원 숫자형 행렬로 지정됩니다.
데이터형: single
| double
| int16
| uint8
| uint16
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: "NumTiles",[8 16]
은 영상을 8개 행, 16개 열의 타일로 나눕니다.
NumTiles
— 타일 개수
[8,8]
(디폴트 값) | 양의 정수로 구성된 요소를 2개 가진 벡터
adapthisteq
가 영상을 나누는 사각형 문맥 영역(타일)의 개수로, 양의 정수로 구성된 요소를 2개 가진 벡터로 지정됩니다. 원래 영상을 M
개 행, N
개 열의 타일로 나누는 경우, NumTiles
의 값은 [M N]
입니다. M
과 N
은 모두 2
이상이어야 합니다. 타일의 총 개수는 M*N
과 같습니다. 최적의 타일 개수는 입력 영상의 유형에 따라 달라지며 실험을 통해 가장 정확하게 결정할 수 있습니다.
데이터형: double
ClipLimit
— 대비 향상 제한값
0.01
(디폴트 값) | [0, 1] 범위의 숫자
대비 향상 제한값으로, [0, 1] 범위의 숫자로 지정됩니다. 제한값이 높을수록 대비가 향상됩니다.
ClipLimit
는 구체적으로 동질 구역(homogeneous areas)에서 일어나는 영상의 과포화를 방지하는 대비 인자입니다. 동질 구역은 많은 픽셀이 같은 회색 레벨 범위 내에 속하게 되어 영상의 특정 타일의 히스토그램에서 높게 솟은 피크로 나타납니다. 자르기 제한값이 없으면 적응 히스토그램 평활화 기법은 경우에 따라 원래 영상보다 좋지 않은 결과를 생성할 수도 있습니다.
데이터형: double
NBins
— 대비를 향상시키는 변환을 생성하는 데 사용되는 히스토그램 Bin의 개수
256
(디폴트 값) | 양의 정수
대비를 향상시키는 변환을 생성하는 데 사용되는 히스토그램 Bin의 개수로, 양의 정수로 지정됩니다. 값이 클수록 처리 속도가 느려지는 대신 동적 범위는 넓어집니다.
데이터형: double
Range
— 출력 데이터의 범위
"full"
(디폴트 값) | "original"
출력 영상 데이터의 범위로, 다음 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"full" | 출력값 클래스의 전체 범위를 사용합니다(예: uint8 의 경우 [0 255]). |
"original" | 범위를 [min(I(:)) max(I(:))] 로 제한합니다. |
데이터형: char
| string
Distribution
— 원하는 히스토그램 형태
"uniform"
(디폴트 값) | "rayleigh"
| "exponential"
원하는 히스토그램 형태로, 다음 값 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"uniform" | 평평한 히스토그램을 만듭니다. |
"rayleigh" | 종 모양의 히스토그램을 만듭니다. |
"exponential" | 곡선형 히스토그램을 만듭니다. |
Distribution
은 adapthisteq
가 대비 변환 함수를 만들 때 기반으로 사용하는 분포를 지정합니다. 입력 영상의 유형에 따라 다른 분포를 선택해야 합니다. 예를 들어, 수중 영상은 레일리 분포를 사용할 때 훨씬 자연스럽게 보입니다.
데이터형: char
| string
Alpha
— 분포 파라미터
0.4
(디폴트 값) | 음이 아닌 숫자
분포 파라미터로, 음이 아닌 숫자로 지정됩니다. Alpha
는 Distribution
이 "rayleigh"
또는 "exponential"
로 설정된 경우에만 사용됩니다.
데이터형: double
알고리즘
CLAHE는 전체 영상이 아니라 타일이라고 하는 영상의 작은 영역에 대해 연산을 수행합니다. adapthisteq
는 각 타일에 대해 개별적으로 대비 변환 함수를 계산합니다. 출력 영역의 히스토그램이 Distribution
값으로 지정된 히스토그램과 거의 일치하도록 각 타일의 대비가 향상됩니다. 그런 다음, 인위적으로 만든 경계선을 제거하기 위해 쌍선형 보간을 사용하여 이웃 타일을 결합합니다. 특히 동질 영역에서 영상에 있을 수도 있는 잡음의 증폭을 방지하기 위해 대비가 제한될 수 있습니다.
참고 문헌
[1] Zuiderveld, Karel. "Contrast Limited Adaptive Histograph Equalization." Graphic Gems IV. San Diego: Academic Press Professional, 1994. 474–485.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
adapthisteq
함수는 C 코드 생성을 지원합니다(MATLAB® Coder™가 필요함). 자세한 내용은 Code Generation for Image Processing 항목을 참조하십시오.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2022b: 스레드 기반 환경 지원
adapthisteq
함수는 이제 스레드 기반 환경을 지원합니다.
R2022a: GPU Coder를 사용하여 CUDA 코드 생성
이제 adapthisteq
함수는 최적화된 CUDA® 코드 생성을 지원합니다(GPU Coder™가 필요함).
R2021a: MATLAB Coder를 사용하여 C 코드 생성하기
이제 adapthisteq
함수는 C 코드 생성을 지원합니다(MATLAB Coder가 필요함).
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)