ì´ì‚° ì½”ì‚¬ì¸ ë³€í™˜
위키백과 ― 우리 모ë‘ì˜ ë°±ê³¼ì‚¬ì „.
ì´ì‚° ì½”ì‚¬ì¸ ë³€í™˜, DCT(discrete cosine transform)는 ì´ì‚° í‘¸ë¦¬ì— ë³€í™˜(DFT)ê³¼ ìœ ì‚¬í•œ 변환ì´ë‹¤. ì´ì‚°ì—¬í˜„변환(離散餘弦變æ›)ì´ë¼ê³ í•˜ê¸°ë„ í•œë‹¤. DFT와 비êµí•´ ë³¼ ë•Œ 길ì´ê°€ ë‘ ë°°ì´ê³ ì‹¤ìˆ˜ê°’ì„ ê°€ì§€ëŠ” ì§í•¨ìˆ˜ì— ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤ëŠ” ì ì„ ì œì™¸í•˜ë©´ ê±°ì˜ ìœ ì‚¬í•˜ë‹¤. ì‹¤ìˆ˜ê°’ì„ ê°€ì§€ëŠ” ì§í•¨ìˆ˜ì˜ í‘¸ë¦¬ì— ë³€í™˜ë„ ì‹¤ìˆ˜ê°’ì„ ê°€ì§€ëŠ” ì§í•¨ìˆ˜ì´ê¸° 때문ì´ë‹¤. ìž…ë ¥/ì¶œë ¥ ë°ì´í„°ë¥¼ ë°˜ 샘플 ì •ë„ ì´ë™ì‹œí‚¤ëŠ” 등 8ê°€ì§€ì˜ ë³€í˜•ì´ ìžˆëŠ”ë° ê·¸ 중ì—ì„œ 4가지가 ë„리 사용ëœë‹¤.
가장 ë„리 ì“°ì´ëŠ” 변형 DCT ì•Œê³ ë¦¬ì¦˜ì€ type-II DCTì¸ë°, ì´ê²ƒì„ 그냥 "DCT"ë¼ê³ 부르는 경우가 많다. ì´ê²ƒì˜ ì—ë³€í™˜ì´ type-III DCTì¸ë° 마찬가지로 단순히 "ì—DCT"í˜¹ì€ "IDCT"ë¼ê³ 부른다.
DCT와 ì—°ê´€ëœ ë³€í™˜ì€ ë‘ ê°€ì§€ê°€ 있다. ì´ì‚° ì‚¬ì¸ ë³€í™˜ (DST)ì€ ì‹¤ìˆ˜ ê°’ì„ ê°€ì§€ëŠ” í™€í•¨ìˆ˜ì˜ DFT와 ë™ì¼í•˜ë©°, 변형 ì´ì‚° ì½”ì‚¬ì¸ ë³€í™˜ (MDCT)ì€ ë‹¤ë¥¸ 하나는 겹치는 ë°ì´í„°ë¥¼ 사용한다.
목차[숨기기] |
[편집] ì‘ìš©
DCT, 특히 DCT-II는 ì‹ í˜¸ì²˜ë¦¬ ë° ì˜ìƒì²˜ë¦¬ì— 사용한다. 특히 DCT는 ì‹ í˜¸ì˜ ì—너지 성분 ëŒ€ë¶€ë¶„ì´ ì €ì£¼íŒŒ 성분 ì¼ë¶€ì— 집중ë˜ëŠ” 'ì—너지 집중 현ìƒ'ì„ ê°€ì§€ê³ ìžˆê¸° 때문ì—, ì†ì‹¤ ì••ì¶•ì— ë„리 사용한다. 예를 들어, JPEG ì˜ìƒ 압축, MJPEG, MPEG, DV ë™ì˜ìƒ 압축등ì—ì„œ DCT를 사용한다. N × N 블ë¡ì— 2ì°¨ì› DCT-IIì„ ì ìš©í•˜ê³ , ê²°ê³¼ê°’ì„ ì–‘ìží™”í•˜ê³ ì—”íŠ¸ë¡œí”¼ 부호화한다. ì´ë•Œ, Nê°’ì€ ë³´í†µ 8ì´ë©° ì´ ë¸”ë¡ì˜ 행과 ì—´ì— DCT-II ê³µì‹ì„ ì 용한다. ê²°ê³¼ê°’ì€ 8 × 8 변환 계수 í–‰ë ¬ì´ë©°, (0,0) ì›ì†ŒëŠ” (주파수가 0ì¸) ì§ë¥˜ 성분ì´ê³ 나머지 ì„±ë¶„ì€ ì ì 주파수가 커지는 순서로 ë°°ì—´ëœë‹¤.
변형 ì´ì‚° ì½”ì‚¬ì¸ ë³€í™˜ (modified discrete cosine transform, 줄여서 MDCT)는 AAC, Vorbis, MP3ë“±ì˜ ì˜¤ë””ì˜¤ ì••ì¶•ì— ì‚¬ìš©í•œë‹¤. DCT는 편미분 ë°©ì •ì‹ì„ 푸는ë°ë„ ì‚¬ìš©í• ìˆ˜ 있다.
[편집] 엄밀한 ì •ì˜
ì´ì‚° ì½”ì‚¬ì¸ ë³€í™˜ì€ ì—함수가 존재하는 ì„ í˜•í•¨ìˆ˜ F : RN -> RNì´ë‹¤. (Rì€ ì‹¤ìˆ˜ì˜ ì§‘í•©ì´ë‹¤.) ë˜ëŠ” N × N ì •ì‚¬ê°í–‰ë ¬ë¡œ 나타낼 ìˆ˜ë„ ìžˆë‹¤. DCTì˜ ì •ì˜ëŠ” 약간씩 다를 수 있다. 아래 ê³µì‹ ì¤‘ 하나를 ì´ìš©í•˜ì—¬ Nê°œì˜ ì‹¤ìˆ˜ x0, ..., xN-1ê°€ Nê°œì˜ ì‹¤ìˆ˜ f0, ..., fN-1ë¡œ 변형한다.
[편집] ì—변환
DCT-Iì˜ ì—ë³€í™˜ì€ DCT-Iì— 2/(N-1)ì„ ê³±í•œ 것ì´ë‹¤. DCT-IVì˜ ì—ë³€í™˜ì€ DCT-IVì— 2/Nì„ ê³±í•œ 것ì´ë‹¤. DCT-IIì˜ ì—ë³€í™˜ì€ DCT-IIIì— 2/Nì„ ê³±í•œ 것ì´ë©°, DCT-IIIì˜ ì—ë³€í™˜ì€ DCT-IIì— 2/Nì„ ê³±í•œ 것ì´ë‹¤.
DFTê³¼ 마찬가지로, 관습ì 으로 변환 ê³µì‹ ì•žì— ì¼ì •í•œ 수를 곱해서 ì •ê·œí™”í•˜ëŠ” 경우가 ìžˆëŠ”ë° ì´ë¥¼ 따르지 않는 ê²½ìš°ë„ ë§Žë‹¤. 예를 들어, ì–´ë–¤ ì‚¬ëžŒë“¤ì€ ì—변환 ê³µì‹ ì•žì— ê³±í•˜ëŠ” 수를 ì—†ì• ê¸° 위해서 변환 ê³µì‹ ìžì²´ì— 를 ê³±í•˜ê¸°ë„ í•œë‹¤.
[편집] 계산
ê³µì‹ì„ 그대로 ì 용하면 O(N2)ì˜ ì—°ì‚°ì´ í•„ìš”í•˜ì§€ë§Œ, ê³ ì† í‘¸ë¦¬ì— ë³€í™˜(FFT)ê³¼ 마찬가지로 계산 ê³¼ì •ì„ ë¶„í•´í•˜ì—¬ O(N log N)만í¼ì˜ 연산으로 ê³„ì‚°í• ìˆ˜ë„ ìžˆë‹¤. O(N)만í¼ì˜ ì „ì²˜ë¦¬ ë° í›„ì²˜ë¦¬ ê³¼ì •ì„ í†µí•´ DCT를 FFTë¡œ 변환하여 ê³„ì‚°í• ìˆ˜ë„ ìžˆë‹¤.