DevKim

[영상처리] MATLAB 공간 해상도 & 양자화 & 디더링(Dithering) 본문

영상처리

[영상처리] MATLAB 공간 해상도 & 양자화 & 디더링(Dithering)

on_doing 2020. 9. 20. 14:28
728x90

1. 공간 해상도 (spatial resolution)


 

- 영상에 대한 화소들의 밀도

- 공간 해상도가 높을수록 더 많은 화소들이 영상의 디스플레이에 사용됨

 

* imresize 함수를 사용하여 공간 해상도 변경 가능

 

 


사이즈를 1/2로 줄이기위해 2*2 행렬중에 1개만 선택함 -> 그 후에 2배로 늘림 => 실제 해상도는 다르다

 


 

 


2. 양자화 (Quantization)

: 몇 단계로 표현할거냐?

- 영상의 밝기값을 표현하는 데에 사용되는 밝기값의 개수

-기본 영상은 밝기 값을 256으로 양자화한 것임

 

 

*균일 양자화

: 밝기 값의 범위를 균등하게 나누어 양자화

 

 

(1) floor(버림) 함수 사용 방법

*N개의 밝기값으로 양자화하는 경우

 


 

(2) grayslice 함수 사용 방법

 

 

 

양자화를 균일하게 하면 거짓 윤곽선이 생김

 


2. 디더링 (Dithering)

- 일반적으로 영상에서 컬러의 수를 축소시키는 과정

- 제한된 컬러 수만 표현할 수 있는 장비 (인쇄)의 경우 사용

 

*Halftoning

 

-디더링의 한 형태로 두가지 톤으로 표현하는 것

ex) 과거의 신문은 흑과 백으로 만 인쇄함

- 밝기 값이 0,1로 양자화되므로 거짓 윤곽선이 생길 수 있음

 


(1) 거짓 윤곽선을 해결하기위한 패턴처리

- 영역의 밝기에 따라 흑과 백비율을 조절함

-> 어두운 색은 무조건 검정으로! 밝은 색은 무조건 흰색으로! 이런식으로 처리하지 않기 위해 비율 조절

 

 

(2) 디더링 매트릭스

- 디더링 매트릭스를 영상과 같은 크기가 될 때까지 반복한 후 이를 원래 영상과 비교함으로써 디더링을 수행함

 

디더링 매트릭스
같은 위치에서 원본 영상의 값이 더 크면 1, 아니면 0

 

 

<예시>

 

 

 

 

<코드>

 

*둘다 0,1만 사용하여 디스플레이했지만 디더링된 영상이 균일 양자화 영상 보다 우수한 것을 알 수 있음

 

 


* 0과1만 사용해서 디더링하지 않고 2개 이상의 값을 이용해서 디더링 할때

ex) 4개의 출력(0,1,2,3)을 갖는 경우

 

 

D= 0~84 를 4단계로 나눔

 

 

디더링 과정


<case 1> 4개의 출력을 갖는 경우

x=imread('newborn.tif');
D=[0 56; 84 28];
r=repmat(D,128,128); #영상의 크만큰 반복해주는 함수(세로로 128, 가로로 128개 나열해서 metrix생성)
x=double(x);
q=floor(x/85);
x4=q+(x-85*q>r);
imshow(uint8(85*x4)) #0~255 사이의 값으로 만들어주기 위해서

<case2> 8개의 출력을 갖는 경우

x=imread('newborn.tif');
D=[0 24; 36 12];
r=repmat(D,128,128);
x=double(x);
q=floor(x/37);
x8=q+(x-37*q>r);
imshow(uint8(37*x8))

균일 양자화보단 디더링이 훨씬 퀄리티가 좋다는 것을 알 수 있다

728x90
Comments