Модифицированное дискретное косинусное преобразование ( MDCT ) представляет собой преобразование, основанное на дискретном косинусном преобразовании типа IV (DCT-IV), с дополнительным свойством наложения : оно предназначено для выполнения на последовательных блоках большего набора данных , где последующие блоки перекрываются таким образом, что последняя половина одного блока совпадает с первой половиной следующего блока. Это перекрытие, в дополнение к энергетическим качествам DCT, делает MDCT особенно привлекательным для приложений сжатия сигнала, поскольку оно помогает избежать артефактов, возникающих из-за границ блоков. В результате этих преимуществ MDCT является наиболее широко используемым методом сжатия с потерями в сжатии аудиоданных . Он используется в большинстве современных стандартов кодирования звука , включая MP3 , Dolby Digital (AC-3), Vorbis (Ogg), Windows Media Audio (WMA), ATRAC , Cook , Advanced Audio Coding (AAC), [1] High-Definition Coding (HDC), [2] LDAC , Dolby AC-4 , [3] и MPEG-H 3D Audio , [4], а также в стандартах кодирования речи , таких как AAC-LD (LD-MDCT), [5] G.722.1 , [6] G.729.1 , [7] CELT , [8] и Opus . [9] [10]
Дискретное косинусное преобразование (DCT) было впервые предложено Насиром Ахмедом в 1972 году [11] и продемонстрировано Ахмедом совместно с Т. Натараджаном и К. Р. Рао в 1974 году [12]. MDCT было позднее предложено Джоном П. Принсеном, А. В. Джонсоном и Аланом Б. Брэдли в Университете Суррея в 1987 году [13] после более ранней работы Принсена и Брэдли (1986) [14] по разработке базового принципа MDCT отмены наложения спектров во временной области (TDAC), описанного ниже. (Также существует аналогичное преобразование, MDST, основанное на дискретном синусоидальном преобразовании , а также другие, редко используемые, формы MDCT, основанные на различных типах DCT или комбинациях DCT/DST.)
В MP3 MDCT не применяется к аудиосигналу напрямую, а скорее к выходу 32-полосного банка полифазных квадратурных фильтров (PQF). Выход этого MDCT подвергается постобработке с помощью формулы уменьшения псевдонимов для уменьшения типичного наложения спектров банка фильтров PQF. Такая комбинация банка фильтров с MDCT называется гибридным банком фильтров или поддиапазонным MDCT. AAC, с другой стороны, обычно использует чистый MDCT; только (редко используемый) вариант MPEG-4 AAC-SSR (от Sony ) использует четырехполосный банк PQF, за которым следует MDCT. Подобно MP3, ATRAC использует стекированные квадратурные зеркальные фильтры (QMF), за которыми следует MDCT.
Как преобразование с перекрытием, MDCT несколько необычно по сравнению с другими преобразованиями, связанными с Фурье, поскольку имеет вдвое меньше выходов, чем входов (вместо того же числа). В частности, это линейная функция (где R обозначает множество действительных чисел ). 2 N действительных чисел x 0 , ..., x 2 N -1 преобразуются в N действительных чисел X 0 , ..., X N -1 по формуле:
(Коэффициент нормализации перед этим преобразованием, здесь единица, является произвольным соглашением и отличается между обработками. Ограничивается только произведение нормализаций MDCT и IMDCT, приведенное ниже.)
Обратное MDCT известно как IMDCT . Поскольку существует разное количество входов и выходов, на первый взгляд может показаться, что MDCT не должно быть обратимым. Однако идеальная обратимость достигается путем добавления перекрывающихся IMDCT последующих перекрывающихся блоков, что приводит к отмене ошибок и извлечению исходных данных; эта техника известна как отмена наложения временных данных ( TDAC ).
IMDCT преобразует N действительных чисел X 0 , ..., X N -1 в 2 N действительных чисел y 0 , ..., y 2 N -1 по формуле:
(Как и в случае с DCT-IV , ортогональным преобразованием, обратное преобразование имеет ту же форму, что и прямое преобразование.)
В случае оконного MDCT с обычной нормализацией окна (см. ниже) коэффициент нормализации перед IMDCT следует умножить на 2 (т.е. он должен стать равным 2/ N ).
Хотя прямое применение формулы MDCT потребовало бы O( N 2 ) операций, можно вычислить то же самое со сложностью всего лишь O( N log N ) путем рекурсивной факторизации вычисления, как в быстром преобразовании Фурье (FFT). Можно также вычислить MDCT с помощью других преобразований, обычно DFT (FFT) или DCT, в сочетании с O( N ) этапами предварительной и последующей обработки. Кроме того, как описано ниже, любой алгоритм для DCT-IV немедленно предоставляет метод для вычисления MDCT и IMDCT четного размера.
В типичных приложениях сжатия сигнала свойства преобразования дополнительно улучшаются за счет использования оконной функции w n ( n = 0, ..., 2 N −1), которая умножается на x n в формулах MDCT и на y n в формулах IMDCT, приведенных выше, чтобы избежать разрывов на границах n = 0 и 2 N, заставляя функцию плавно стремиться к нулю в этих точках. (То есть оконная функция применяется к данным до MDCT или после IMDCT.) В принципе, x и y могут иметь разные оконные функции, и оконная функция также может меняться от одного блока к другому (особенно в случае, когда объединяются блоки данных разных размеров), но для простоты мы рассмотрим общий случай идентичных оконных функций для блоков одинакового размера.
Преобразование остается обратимым (то есть TDAC работает) для симметричного окна w n = w 2 N −1− n , пока w удовлетворяет условию Принсена-Брэдли:
Используются различные функции окна. Окно, которое создает форму, известную как модулированное перекрывающееся преобразование (MLT) [15] [16], задается как
и используется для MP3 и MPEG-2 AAC, а также
для Vorbis. AC-3 использует окно Кайзера–Бесселя (KBD) , а MPEG-4 AAC также может использовать окно KBD.
Обратите внимание, что окна, применяемые к MDCT, отличаются от окон, используемых для некоторых других типов анализа сигналов, поскольку они должны удовлетворять условию Принсена–Брэдли. Одной из причин этого различия является то, что окна MDCT применяются дважды, как для MDCT (анализ), так и для IMDCT (синтез).
Как можно увидеть из определений, для четных N MDCT по сути эквивалентен DCT-IV, где вход смещается на N /2 и два N -блока данных преобразуются одновременно. При более тщательном изучении этой эквивалентности можно легко вывести важные свойства, такие как TDAC.
Чтобы определить точное отношение к DCT-IV, нужно понимать, что DCT-IV соответствует чередующимся четным/нечетным граничным условиям: четным на левой границе (около n = −1/2), нечетным на правой границе (около n = N − 1/2) и т. д. (вместо периодических границ, как для DFT ). Это следует из тождеств и . Таким образом, если его входы представляют собой массив x длины N , мы можем представить расширение этого массива до ( x , − x R , − x , x R , ...) и т. д., где x R обозначает x в обратном порядке.
Рассмотрим MDCT с 2 N входами и N выходами, где мы делим входы на четыре блока ( a , b , c , d ) каждый размером N / 2. Если мы сдвинем их вправо на N / 2 (от термина + N / 2 в определении MDCT), то ( b , c , d ) выйдут за пределы конца N входов DCT-IV, поэтому мы должны «сложить» их обратно в соответствии с граничными условиями, описанными выше.
(Таким образом, любой алгоритм вычисления DCT-IV может быть тривиально применен к MDCT.)
Аналогично, формула IMDCT выше — это ровно 1/2 DCT-IV (которая является своей собственной инверсией), где выход расширен (через граничные условия) до длины 2 N и сдвинут влево на N /2. Обратный DCT-IV просто вернул бы входы (− c R − d , a − b R ) сверху. Когда это расширено через граничные условия и сдвинуто, получается:
Половина выходов IMDCT, таким образом, избыточны, так как b − a R = −( a − b R ) R , и аналогично для последних двух членов. Если мы сгруппируем вход в более крупные блоки A , B размера N , где A = ( a , b ) и B = ( c , d ), мы можем записать этот результат более простым способом:
Теперь можно понять, как работает TDAC. Предположим, что вычисляется MDCT последующего, перекрывающегося на 50%, блока 2 N ( B , C ). Тогда IMDCT даст, аналогично вышеприведенному: ( B − B R , C + C R ) / 2. Когда это добавляется к предыдущему результату IMDCT в перекрывающейся половине, обратные члены отменяются, и получается просто B , восстанавливая исходные данные.
Происхождение термина «отмена наложения во временной области» теперь ясно. Использование входных данных, которые выходят за границы логического DCT-IV, приводит к наложению данных таким же образом, как частоты за пределами частоты Найквиста накладываются на более низкие частоты, за исключением того, что это наложение происходит во временной области, а не в частотной: мы не можем различить вклады a и b R в MDCT ( a , b , c , d ), или, что эквивалентно, в результат
Комбинации c − d R и так далее имеют именно те знаки, которые нужны для того, чтобы комбинации сокращались при сложении.
Для нечетных N (которые редко используются на практике) N /2 не является целым числом, поэтому MDCT не является просто перестановкой сдвига DCT-IV. В этом случае дополнительный сдвиг на половину выборки означает, что MDCT/IMDCT становится эквивалентным DCT-III/II, и анализ аналогичен вышеприведенному.
Мы видели выше, что MDCT 2 N входов ( a , b , c , d ) эквивалентно DCT-IV N входов (− c R − d , a − b R ). DCT-IV разработано для случая, когда функция на правой границе нечетная, и поэтому значения вблизи правой границы близки к 0. Если входной сигнал гладкий, то это так: самые правые компоненты a и b R являются последовательными во входной последовательности ( a , b , c , d ), и поэтому их разность мала. Давайте посмотрим на середину интервала: если мы перепишем приведенное выше выражение как (− c R − d , a − b R ) = (− d , a )−( b , c ) R , второй член, ( b , c ) R , дает плавный переход в середине. Однако в первом члене (− d , a ) существует потенциальный разрыв, где правый конец − d встречается с левым концом a . Это причина использования оконной функции, которая уменьшает компоненты вблизи границ входной последовательности ( a , b , c , d ) по направлению к 0.
Выше было доказано свойство TDAC для обычного MDCT, показывающее, что добавление IMDCT последующих блоков в их перекрывающейся половине восстанавливает исходные данные. Вывод этого обратного свойства для оконного MDCT лишь немного сложнее.
Рассмотрим перекрывающиеся последовательные наборы из 2 N входов ( A , B ) и ( B , C ) для блоков A , B , C размером N . Напомним, что когда и подвергаются MDCT, IMDCT и складываются в их перекрывающейся половине, мы получаем , исходные данные.
Теперь предположим, что мы умножаем как входы MDCT , так и выходы IMDCT на оконную функцию длины 2 N . Как и выше, мы предполагаем симметричную оконную функцию, которая, следовательно, имеет вид где W — вектор длины N , а R обозначает обращение, как и прежде. Тогда условие Принсена-Брэдли можно записать как , с квадратами и сложениями, выполненными поэлементно.
Поэтому вместо MDCTing мы теперь MDCT (все умножения выполняются поэлементно). Когда это IMDCTed и умножается снова (поэлементно) на оконную функцию, последняя N половина становится:
(Обратите внимание, что у нас больше нет умножения на 1/2, поскольку нормализация IMDCT отличается в 2 раза в оконном случае.)
Аналогично, оконный MDCT и IMDCT дают в своей первой половине :
Сложив эти две половины, мы получим:
восстановление исходных данных.