Graphics Programming

The Discrete Cosine Transform 본문

Season 1/플래시

The Discrete Cosine Transform

minseoklee 2015. 11. 7. 13:26

blockwise DCT - wonderfl build flash online

 

JPEG 압축에 쓰이는 discrete cosine transform을 구현했다.

 

이미지 가로, 세로 길이는 8의 배수라 가정하며 다음과 같이 작동한다.

 

1. 원본 이미지를 준비한다. 여기서는 간단히 펄린 노이즈를 생성했다.

2. DCT를 수행한다.

3. Quantization을 수행한다.

4. band cutting을 수행한다. 주파수 영역에서 정보가 손실될 때 복원률을 알아보기 위한 단계다.

5. IDCT를 수행한다.

6. 원본 이미지, 주파수 이미지, 복원 이미지를 화면에 그린다.

 

DCT 이미지에 마우스를 올리면 마우스가 있는 블록의 주파수 값을 볼 수 있다.

 

이미지를 8x8 블록들로 나눠서 DCT를 수행하기 때문에 대응하는 주파수 영역도 8x8 블록이 된다.

가장 높은 주파수 영역부터 너비를 1씩 늘려가며 스펙트럼을 0으로 만들 수 있으며 그 너비가 클 수록 복원률이 낮아진다.

 

 

위 사진에서는 가장 밑의 가로줄에서 시작해 5줄을 0으로 만들었다.

가장 오른쪽부터 세로줄을 0으로 만들려면 vertical only를 선택한다.

오른쪽 밑에서 시작해 가로줄, 세로줄 모두 0으로 만들려면 both direction을 선택한다.

Comments