Авторизация
Логин:
Пароль:
Регистрация
Забыли свой пароль?
Фото дня

Дискретные нотные каналы

21.01.2011

DNC_compression.jpgДалее об особенностях реализации алгоритма. Следующая программа позволяет наглядно продемонстрировать принцип деления частоты на два и выделения соответствующих октав. Сверху находятся регуляторы частоты и амплитуды , а также выключатели трех исходных синусойд, которые показаны на графике с самого верху, после чего все три синусойды суммируются - зеленым цветом. Далее происходит процесс сворачивания диапазонов по октавам с уменьшением размера массива исходного сигнала в два раза. Внизу два графика показывают результаты обратной деятельности алгоритма и красным ошибки при реконструкции сигнала. Как мы видимо ошибки довольно значительные, из-за того, что были задействованы примитивные алгоритмы децимации и ресемплирования.
Для реализации более правильного алгоритма необходимо задействовать алгоритм децимации (он же десемплирования с уменьшением частоты в два раза) т.е. фильтра высоких частот. К сожалению здесь у меня возникли некоторые алгоритмические трудности с фильтром. Как задействовать фильтр без потери качества. Примерно на каком диапазоне резать понятно и примерно как вычислять частоту сигнала понятно. Собственно задача здесь получить нижнюю половину спектра сигнала. Вычитая из основного/остаточного сигнала (в зависимости от уровня свертки) высокую частоту мы должны будем получить сигнал который можно было бы децимировать без потери качества, т.е. после увеличения битрейта в два раза мы должны будем получить исходный сигнал.
Смысл всей этой свертки заключается ровно в том, что, как наглядно видно на рисунке, нижние частоты могут занимать гораздо меньше места, т.к. они гораздо медленне изменяются без потери качества.
Собственно вся загвоздка в алгоритмах децимации и ресемплинга. Как правило для этих задач применяют все те же алгоритмы БПФ. На самом деле я старался найти более простые и более изящные алгоритмы выделения высокочастотного сигнала. Например, вычисление первой или второй производной сигнала (тангенс соответствующего угла) позволяют увеличить амплитуду высокочастотной составляющей, оставив низкочастотную на том же уровне. После чего вычитая этот сигнал из исходного и произведя процесс обратной производной можно будет выделить только высокочастотную составляющую. Но алгоритм ресемплирования (здесь я имею ввиду увеличение битрейта в два раза) по прежнему нуждается в доработках, т.к. надо не просто продублировать каждое дискретное значение сигнала, а сделать это с соответствующим сглаживанием во избежание появления гармоник и тресков в звуке. Также правильный алгоритм ресемплирования необходимо будет задействовать и при децимации сигнала, во избежание потери данных.
В общем, пока что все сводится к БПФ, хотя здесь вполне можно было бы получить в результате и адекватный аналог БПФ, с большей возможностью для сжатия, а также анализа. А с помощью БПФ можно легко дополнить этот алгорим для децимации и ресемплинга реализуя БПФ с небольшими окнами и выделяя высокочастотную составляющую для фильтрации. Но мне это не так интересно, как создать свой аналог БПФ. Так что буду искать простые и быстрые алгоритмы ресемплинга.

Автор: Терентьев Константин Михайлович.

Страница 2 - 2 из 2
Начало | Пред. | 1 2 | След. | Конец

Рейтинг:  3.25
Количество показов: 174384

Возврат к списку

(Голосов: 3, Рейтинг: 3.25)

Материалы по теме:


Ваше имя:
Смайлики
С улыбкой  Шутливо  Широкая улыбка 
Здорово  Печально  Скептически 
Очень грустно  Со злостью  Удивленно 
Смущенно  Поцелуй  Вопрос 
Восклицание  Идея 
Защита от автоматических сообщений:
Защита от автоматических сообщений Символы на картинке: