DevKim
[영상처리] MATLAB 공간 해상도 & 양자화 & 디더링(Dithering) 본문
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) 디더링 매트릭스
- 디더링 매트릭스를 영상과 같은 크기가 될 때까지 반복한 후 이를 원래 영상과 비교함으로써 디더링을 수행함
<예시>
<코드>
*둘다 0,1만 사용하여 디스플레이했지만 디더링된 영상이 균일 양자화 영상 보다 우수한 것을 알 수 있음
* 0과1만 사용해서 디더링하지 않고 2개 이상의 값을 이용해서 디더링 할때
ex) 4개의 출력(0,1,2,3)을 갖는 경우
<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))
균일 양자화보단 디더링이 훨씬 퀄리티가 좋다는 것을 알 수 있다
'영상처리' 카테고리의 다른 글
[영상처리] MATLAB 히스토그램(Histogram) : imhist, imadjust, gamma, piecewise linear (0) | 2020.09.27 |
---|---|
[영상처리] MATLAB 영상처리 연산 (0) | 2020.09.27 |
[영상처리] MATLAB imshow 함수와 영상의 데이터 타입 (0) | 2020.09.20 |
[영상처리] 영상 디스플레이의 기초 (0) | 2020.09.20 |
[영상처리] MATLAB 데이터 타입 변환과 영상파일,포맷, Bayer filter & Demosaicing (0) | 2020.09.20 |