본문 바로가기
[Public] 신호처리/MPEG-4

[MPEG] DCT

by 차출발 2009. 7. 8.
반응형

DCT (Discrete Cosine Transform)

 

2009. 07. 07()


사용자 삽입 이미지

 

계산의 용이성을 위해서 시간 영역의 데이터를 주파수 영역으로 바꾸어 준다. 예를 들어 두 개 이상의 신호를 Convolution 하거나 Correlation과정을 수행하려면 다른 시간축의 데이터를 시프트 하고 적분을 수행하는 과정이 필요하여 연산의 부하가 매우 크고 계산 과정이 매우 복잡해진다.

Fourier Transform 은 대표적인 주파수 영역으로 바꾸는 방법인데 이를 구현하려면 적분이 무한대에서 + 무한대까지 진행되어야 하는데 실제 연산에서는 불가능하여 이를 연속적인 시간에서 일정 신호 주기로 샘플링 한 것이 DFT(Discrete Fourier Transform) 변환이다.


 그러나 DFT 역시 상용제품에 적용하기에는 계산부하가 매우 크다. 그래서 샘플링 개수를 줄이고 필요한 신호만 추출한 것이 FFT(Fast Fourier Transform)이다.


 DFT
FFT 역시 허수부의 데이터를 포함하고 있기 때문에 실제 계산시 데이터 처리가 복잡해 지는 문제가 있다. 그래서 영상처리에서는 허수부의 데이터를 제거하여도 사람의 눈에 영향을 미치지 않는 범위에 있다는 특성을 이용하여 DFT의 실수 부분만 취하는 DCT(Discrete Cosine Transform) 변환 방법을 사용한다 DCT DFT Sin Cos 성분으로 나누어지는데 여기서 Sin은 허수부 정보를 포함한다. 그래서 Sin 을 지워버리면 Cos 성분만 남는다. 그래서 DCT라 불리운다.

 

<DFT>

 

위는 DFT 식인데 DCT로변환하기 위하여 Sin 성분을 제거하면

 

<DCT>

 

위의 식을 매번 계산해준다면 많은 계산량 때문에 문제 발생 그래서 Cos 성분이 일정주기로 나타내어진다는 점을 이용하여 이를 행렬의 곱으로 표현 가능하다.

 

X : 입력 이미지 행렬 데이터

Y : 출력 DCT 계수 행렬 데이터

A : Cos 성분을 대치한 N*N 변환 행렬 데이터

: A의 전치 행렬

 

 

 행렬 A 는 위와 같이 변환 할 수 있다. 위의 식을 대입하면

 

 

Cos 함수의 주기의 성질을 이용하고 근사치 값을 넣으면

 

아래와 같이 값이 나온다.

 

<행렬식 A>

 

이의 전치행렬을 구하면

 

<행렬식 >

 

반대로 IDCT (Inverse DCT) 를 구하려면



'[Public] 신호처리 > MPEG-4' 카테고리의 다른 글

[MPEG-4] MEPG-4 비디오 압축  (0) 2009.05.01