복습
- RGB는 3배의 용량이 들어가므로 통신을 하는데 있어서 용량이 작았으면 좋겠음 -> compression을 시도
- 압축률을 높이면서 손실을 적게(lossy - 유손실, lossless - 무손실) -> ex)정확한 원본의 전송에는 무손실을 사용
- Huffman coding이 가능한 이유 : 자주 나오는 단어가 존재하기 때문 -> 발생확률에대한 예측이 정확해야함
- ceiling function : 올림 혹은 내림
- entropy : 최소한으로 줄인 bit
- run-length encoding
- 한 열씩 묶어서 기록
- 0이 반복된 개수 1이 반복된 개수를 바뀔때마다 기록
- 1이 시작한 위치와 1의 개수를 기록
- binary bit plane
- gray codes : 더욱 간결하게 기록 할 수 있음
- code book은 확률을 고정되어 있음 <-> Arithmetic encoding은 빈도수가 변할때마다 code book이 변화
JPEG
- 사진 전문가들이 모여서 만든 이미지 압축방식
- DCT, IDCT - endcoding, decoding에 집어넣어서 압축률을 매우 높임
- 압축률을 높이면서 손실률을 감소 -> Quantization 덕분
- DPCM : 이전 값과의 차성분을 저장
- code book을 제공
MPEG
- H.26x : 통신에서의 영상 압축
- H.32x : 소리 압축
DCT와 FFT 비교
- DCT는 앞이 저주파, 뒤로 갈수록 고주파 성분
- fft후 상위 4개를 없애버림 -> low pass filter
- invers fft를 하게되면 결과가 이전과 달라짐을 확임
- 이번에는 DCT를 사용 후 상위 4개 제거
- invers DCT를 하면 이전 값과 비슷하게 나오는 것을 확인
The JPEG Algorithm
- 이미지를 8x8로 쪼갬 -> DCT를 할 때 시간이 오래 걸려서 잘라서 계산해보니 8x8이 가장 적합
- 각각의 8x8 블록들을 각각 압축 -> 0~255의 값을 -128~127의 범위로 바꿔주는 것이 좋아서 -128을 해줌
- DCT 적용 후 Quantization table로 나눔
- 결과 값을 확인해보니 왼쪽 상위로 갈수록 저주파성분이 오른쪽 하위로 갈수록 고주파성분이 몰려있는 형태가 됨
- 오른쪽 하위의 고주파성분을 버리고자 함 -> 고주파는 0이 많음
- ZIGZAG로 scan해보면 어느 순간부터는 0의 값이 계속 반복됨
7. 읽어온 후를 확인하여 0이 계속 반복되면 그 순간부터 end of block으로 처리
-
quantization table 예제 : 고주파쪽 값이 큰 이유는 고주파를 없애주기 위함
-
quality값을 곱해주어 Q table을 늘리고 줄이는데, 이 값이 커질수록 PSNR이 작아짐
- incoding 예제
- decoding 예제 -> zigzag를 다시 헹렬로 만들고 시작
- 나눈 Quantiation table 곱함
- invers DCT 후에 빼준 128을 다시 더함
- 원본값과의 차이
-
DC값과 AC값은 다른 방식으로 압축 -> 가장 첫 부분(0,0)은 따로 저장
-
AC값의 Run과 Category를 먼저 설정
-
Run은 0의 개수
-
Category는 정해진 값에 따라서 DC Category를 지정
-
이렇게 table을 참고하여 정리한 후 code table에서 일치하는 값을 code로 지정
-
sign이 0이면 음수, 1이면 양수
'영상처리' 카테고리의 다른 글
chapter 10 - Morphological Operators (0) | 2018.12.11 |
---|---|
[12월4일]chapter15 - WAVELETS (0) | 2018.12.04 |
[11월27일]IMAGE CODING AND COMPRESSION (0) | 2018.11.27 |
[11월22일]chapter13 - Color Processing (0) | 2018.11.23 |
[11월14일]2차 Derivative에 따른 edge 검출 (0) | 2018.11.23 |