DevKim

[영상처리] MATLAB 히스토그램 평활화(equalization) & 룩업(Lookup) 테이블 본문

영상처리

[영상처리] MATLAB 히스토그램 평활화(equalization) & 룩업(Lookup) 테이블

on_doing 2020. 10. 4. 11:22
728x90

 

1) 평활화 (equalization)

: 영상의 모든 밝기 값의 빈도수를 같게 만듦 (이상적으로)

: 자동으로 수행됨

 


 

<히스토그램 평활화 과정>

 

 

 

ex) 4bit 영상의 밝기 값 분포가 아래와 같을 때

 

 

밝기 값이 아래와 같이 변경됨

 

히스토그램 평활화는 이상적인 형태로 모든 밝기 값의 빈도가 같아지게 만들진 못함,

그러나 유사하게는 만든다

--> 밝기 값누적합이 선형으로 증가하는 형태로!!!!!

 


histeq(영상)

p=imread('pout.tif');
ph=histeq(p);
figure,imshow([p ph]);
figure,imhist(p),axis tight;
figure,imhist(ph),axis tight;

결과값

 

en=imread('engineer.gif');
e=imdivide(en,4); #일부러 대비 안 좋게 만듦
eh=histeq(e);
imshow([en e eh]);

결과값

 


2) Lookup 룩업(=검색) 테이블

: 밝기값 변환시, 참조되는 테이블

:각 밝기에 대한 변경되는 값 저장됨

 

→ 매번 연산 안해도 돼서 연산 속도 빨라짐


 

<ex> 밝기 값을 2로 나누는 연산에 대한 LUT(룩업 테이블)

 

* T LUT가 저장된 배열이고 im변환하기 위한 영상이면, 아래와 같은 단순한 방법으로 밝기 값 변환 가능

T(im+1)

 

b=imread('block.tif');
T=uint8(floor([0:255]/2));
b2=T(b+1);
figure,imshow([b b2]);

 


<ex 2> 부분 선형함수에 대한 LUT(룩업 테이블)

 

 

t1=0.667*[0:96];
t2=2*[97:160]-128;
t3=0.6632*[161:255]+85.8947;
T=uint8(floor([t1 t2 t3]));

b=imread('blocks.tif'); #원본
b3 = T(b+1); #룩업 테이블 거친 영상
figure; imshow([b b3]);

728x90
Comments