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

히스토그램 평활화

히스토그램 평활화를 사용하면 명암 값을 조정하는 과정을 자동으로 수행할 수 있습니다. 히스토그램 평활화에서는 출력 영상의 히스토그램이 지정된 히스토그램과 거의 일치하도록 명암 값을 변환하는 작업이 수반됩니다. 기본적으로, 히스토그램 평활화 함수 histeq는 64개의 Bin을 갖는 평평한 히스토그램을 매칭하려고 시도하지만, 다른 히스토그램을 대신 지정할 수 있습니다.

입력값이 대부분 0.3과 0.6 사이에 있고 출력값은 0과 1 사이에 균일하게 분포되어 있는 히스토그램이 변환 곡선에 어떻게 반영되는지 확인해 보십시오.

히스토그램 평활화를 사용하여 명암 값 조정하기

이 예제에서는 히스토그램 평활화를 사용하여 회색조 영상의 대비를 조정하는 방법을 보여줍니다. 원본 영상은 대비가 낮으며 대부분의 픽셀 값이 명암 범위의 가운데 부분에 분포하고 있습니다. histeq는 픽셀 값이 범위 전반에 걸쳐 균일하게 분포된 출력 영상을 생성합니다.

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

I = imread('pout.tif');

영상과 영상의 히스토그램을 표시합니다.

figure
subplot(1,2,1)
imshow(I)
subplot(1,2,2)
imhist(I,64)

히스토그램 평활화를 사용하여 대비를 조정합니다. 이 예제에서는 히스토그램 평활화 함수 histeq가 64개의 Bin을 갖는 평평한 히스토그램을 매칭하려고 시도합니다. 이것이 디폴트 동작입니다. 다른 히스토그램을 대신 지정할 수 있습니다.

J = histeq(I);

대비가 조정된 영상과 그 영상의 새로운 히스토그램을 표시합니다.

figure
subplot(1,2,1)
imshow(J)
subplot(1,2,2)
imhist(J,64)

히스토그램 평활화의 변환 곡선 플로팅하기

이 예제에서는 히스토그램 평활화의 변환 곡선을 플로팅하는 방법을 보여줍니다. histeq는 각 입력값에 대응하는 결과 출력값을 1x256 벡터로 반환할 수 있습니다. (이 벡터의 값은 입력 영상의 클래스와 관계없이 범위 [0,1] 내에 있습니다.) 이 데이터를 플로팅하여 변환 곡선을 얻을 수 있습니다.

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

I = imread('pout.tif');

histeq 함수로 히스토그램 평활화를 사용하여 대비를 조정합니다. 회색조 변환 반환 값 T를 지정합니다. T는 명암 영상 I의 회색 레벨을 J의 회색 레벨에 매핑하는 벡터입니다.

[J,T] = histeq(I);

변환 곡선을 플로팅합니다. 입력값이 대부분 0.3과 0.6 사이에 있고 출력값은 0과 1 사이에 균일하게 분포되어 있는 히스토그램이 변환 곡선에 어떻게 반영되는지 확인해 보십시오.

figure
plot((0:255)/255,T);