Knowledge/Basic

2차원 DCT(Discrete cosine transform), 이산 코사인 변환

VIR&US 2023. 7. 23. 02:22
반응형

목차


    DCT

    흔히 DCT라 부르는 DCT2, DCT역변환은 DCT3이자 IDCT(Inverse DCT)라 부릅니다.

    간단하게 DCT2는 공간 영역에서 주파수 영역으로 변환하는 방법입니다.

    흔히 사용하는 이미지 확장자 JPEG라는 국제 표준 손실 영상 압축 알고리즘의 중심에는 DCT가 있습니다.

    DCT를 사용하는 이유?

    결국에 DCT를 하는 목적은 공간 영역(Spatial Domain)에서 주파수 영역(Frequency Domain)으로 바꾸기 위해 입니다. 저주파와 고주파를 분리하는 작업이기도 합니다. 

     

    앞서 JPEG에서 DCT를 주로 사용한다고 했습니다. JPEG의 목적은 사람이 보는 이미지 화질(인지화질)이 크게 떨어지지 않으면서 용량을 줄이기 위함입니다.

     

    이미지나 영상을 주파수영역으로 바꾸게 되면

    인접한 픽셀과의 차이가 작을 경우 낮은 공간주파수 (저주파)를 가지고

    반대로 인접한 픽셀과의 차이가 큰 경우 높은 공간주파수 (고주파)를 가집니다.

    source: iStock

    근데, 사람의 눈은 큰 변화에 민감하게 반응합니다. 그림을 보면서 설명드리겠습니다.

    source: pixabay

    우리는 해당 사진을 보았을 때 나뭇잎들은 모두 검은색에 가깝게 보입니다. 실제로 픽셀단위로 보면 색이 다 같지는 않습니다. 그러나 나무와 하늘의 경계는 명백히 다른 색으로 인지합니다. 

     

    여기서 해당 사진을 주파수영역을 변환하게 되면 나뭇잎들의 인접 픽셀은 낮은 공간주파수 (저주파), 나뭇잎과 하늘 간의 인접 픽셀은 높은 공간주파수 (고주파)를 가집니다.

     

    생각해 봅시다. 나뭇잎 사이에 갑자기 다른 색이 들어왔다고 가정해 봅시다. 우리는 해당 다른 색임을 인지할 겁니다. 인접색과 확연히 다른 색을 가지기 때문입니다. 그런데 나뭇잎과 하늘사이에 다른 색이 들어왔다고 가정해 봅시다. 우리가 그 차이를 알 수는 있지만 본래 색이 바뀌는 지점이기에 전자보다는 둔감하게 인지하게 됩니다.

     

    정리하자면, 우리는 저주파 성분이 손실되면 인접한 픽셀과의 차이가 작았기 때문에 "큰 변화"로 인식합니다. 반면, 고주파 성분은 손실되더라도 원래 인접한 픽셀과의 차이가 컸기 때문에 "작은 변화"로 인식하게 됩니다. 따라서 저주파 성분은 유지하고 고주파 성분을 줄이는 방식으로 압축을 진행하는 것입니다. 

     

    다시 돌아가서 저주파 성분은 유지하고 고주파 성분을 줄이는 방식으로 압축을 진행하기 위해 먼저 저주파 성분과 고주파 성분을 분리해야 합니다. 이때 DCT를 주로 사용합니다.


    DCT 8x8

    JPEG DCT의 기준이 되는 8x8픽셀 기준으로 살펴보겠습니다.

    source: projectrhea.org

    DCT 변환식

    8x8 행렬이므로 64개 값이 DCT 변환식을 거치면 64개의 DCT 계수를 얻게 됩니다.

    DCT 계수 중 가장 처음 얻는 값인 0차 계수(0,0)는 다른 계수들과 달리 코사인의 함수가 아닙니다.

    이를 DC 계수라고 하며 나머지 63개의 값은 AC 계수라고 합니다.

    (0,0)에 위치하는 DC 계수는 해당 블록 전체의 명도를 결정하는 평균 색상 값을 가지게 됩니다.

     

    DCT수행하게 되면 좌측 상단에 저주파 성분이 배치되고, 우측 하단에 고주파 성분이 배치되게 됩니다.

    대부분의 이미지의 경우 인접한 픽셀은 거의 비슷한 색상으로 형성되어 있는 게 일반적입니다. 즉, 저주파 성분이 많다는 의미이고 이 성분들은 DC 쪽에 값이 몰리게 됩니다.

    source: zhuanlan.zhihu.com/p/337205711

    실제 Data를 DCT 변환을 진행한 예시입니다. 

    source: wikipidea

     

    728x90
    반응형