Алгоритмы и программное обеспечение



С помощью СПФ СМ выполняются следующие алгоритмы:

Прямое преобразование комплексного массива. Размер массива N = 2n (n = 1, 2, …, 12).

Прямое ДПФ с получением энергетического спектра с вышеуказанными параметрами.

Прямое ДПФ с предварительным взвешиванием преобразуемого массива. При выполнении предварительного взвешивания время увеличивается на 30%.

Обратное ДПФ.

Операции масштабирования массивов: а)увеличение отсчета массива в 2a раз и выявление числа переполнений, числа значащих битов максимального по абсолютной величине числа (мнимые и действительные части рассматриваются как независимые числа, при переполнении производится ограничение); б)управление делением в 2 раза после каждого этапа БПФ в блоке БПФ; в)уменьшение значений энергетического спектра в 4b раза.

Основное назначение операций a) и б) состоит в минимизации погрешности ДПФ, а операции в) – в уменьшении разрядности результата и экономии ОЗУ за счет укороченного формата мощности. Кроме того, операция а) позволяет ограничить массив сигнала и выявить статистику его амплитуды.

Дополнительные операции над массивами:

а) поэлементное перемножение двух комплексных массивов;

б) вычисление суммы произведений элементов двух комплексных массивов.

Размещение массивов в ОЗУ. Действительные и мнимые части данных располагаются последовательно. Шаг размещения массива произвольный, что позволяет исключать лишние пересылки при совместном анализе нескольких сигналов или при обработке двумерных массивов.

Управление спецпроцессором со стороны операционной системы СМ3 или СМ4 осуществляется программой-драйвером, выполняющей за одно обращение следующие команды:

· прямое и обратное БПФ;

· БПФ и вычисление энергетического спектра;

· ОБПФ и вычисление массива из квадратов модулей значений результата;

· умножение на массив весовых коэффициентов и БПФ;

· умножение на массив весовых коэффициентов и ОБПФ;

· умножение на массив весовых коэффициентов, БПФ и вычисление энергетического спектра;

· умножение на массив весовых коэффициентов, ОБПФ и вычисление массива из квадратов модуля значений результата;

· скалярное произведение двух массивов;

· вычисление квадрата модуля скалярного произведения двух массивов;

· вычисление массива квадратов модулей поэлементного произведения.

Наборы макрокоманд и модулей системной библиотеки позволяют спецпроцессору выполнять следующие операции ДПФ: свертку двух действительных массивов, двумерное ДПФ массива, расположенного на магнитном носителе, ДПФ массива большого размера, находящегося на магнитном носителе; взвешивание преобразуемого массива.

Разработчики и промышленная история

 

Разработка спецпроцессора СПФ СМ осуществлялась в Институте электронных управляющих машин, в отделе возглавлявшемся к. т. н. Фельманом Борисом Яковлевичем. Разработка выполнялась совместно с ИРЭ АН СССР. Спецпроцессор СПФ СМ выпускался малой серией. Общее количество выпущенных силами предприятий-разработчиков экземпляров – 30-40.

Интересным примером применения спецпроцессора СПФ СМ явилась обработка радиолокационных сигналов зондирования поверхности планеты Венера, которое проводилось со спутника.


Глава 3. Применение цифровой обработки сигналов.

Шумоподавление для звука

 

Звуковой сигнал, записываемый в реальных акустических условиях, часто содержит нежелательные шумы, которые могут порождаться окружающей средой или звукозаписывающей аппаратурой. Один из классов шумов - аддитивные стационарные шумы.

Аддитивность означает, что шум суммируется с "чистым" сигналом и не зависит от него.

Стационарность означает, что свойства шума (мощность, спектральный состав) не меняются во времени.

Примерами таких шумов могут являться постоянное шипение микрофона или усилительной аппаратуры, гул электросети. Работа различных приборов, не меняющих звучания по времени (вентиляторы, компьютеры) также может создавать шумы, близкие к стационарным. Не являются стационарными шумами различные щелчки, удары, шелест ветра, шум автомобилей.

Для подавления аддитивных стационарных шумов существует алгоритм спектрального вычитания. Он состоит из следующих стадий:

1. Разложение сигнала с помощью кратковременного преобразования Фурье (STFT) или другого преобразования, компактно локализующего энергию сигнала.

2. Оценка спектра шума.

3. "Вычитание" амплитудного спектра шума из амплитудного спектра сигнала.

4. Обратное преобразование STFT - синтез результирующего сигнала.

В качестве банка фильтров рекомендуется использовать STFT с окном Ханна длиной порядка 50 мс и степенью перекрытия 75%. Амплитуду весового окна надо отмасштабировать так, чтобы при выбранной степени перекрытия окон банк фильтров не менял общую амплитуду сигнала в отсутствие обработки.

Оценка спектра шума может осуществляться как автоматически, путем поиска участков минимальной энергии в каждой частотной полосе, так и вручную, путем анализа спектра на временном сегменте, который пользователь идентифицировал как шум.

Одна из проблем метода спектрального вычитания – т.н. «музыкальный шум». Он появляется вследствие того, что коэффициенты STFT шумовых сигналов статистически случайны, что приводит к их неравномерному подавлению. В результате, очищенный сигнал содержит кратковременные и ограниченные по частоте всплески энергии, которые на слух воспринимаются как "колокольчики" или "льющаяся вода". В некоторых случаях этот эффект даже менее желателен, чем исходный подавляемый шум.

Для подавления этого артефакта можно применять следующие методы:

• Завышение оценки шумового порога (увеличение k). Приводит к подавлению слабых компонент полезного сигнала, звук становится глуше.

• Неполное подавление шума (ограничение снизу константой, отличной от нуля). Часть шума остается в сигнале и отчасти маскирует «музыкальный шум».

• Сглаживание по времени оценок спектра. Приводит к размытию или подавлению транзиентов (резких всплесков в сигнале: ударов, атак музыкальных инструментов).

• Адаптивное сглаживание оценок спектра по времени и частоте. Наиболее качественный, но и трудоемкий метод.

Наиболее распространенный способ подавления «музыкального шума» – использует сглаживание спектра по времени. Для этого к STFT-коэффициентам исходного сигнала применяется рекурсивная фильтрация по времени. Более качественного подавления можно достичь, применяя к спектрограмме адаптивные двумерные алгоритмы фильтрации, такие как билатеральный фильтр или алгоритм нелокального усреднения, используемые в шумоподавлении для изображений.

Передискретизация

Ресамплинг (передискретизация, resampling) – это изменение частоты дискретизации цифрового сигнала. Применительно к цифровым изображениям ресамплинг означает изменение размеров изображения. Существует множество различных алгоритмов ресамплинга изображений. Например, для увеличения изображения в 2 раза можно просто продублировать каждую из его строк и каждый из его столбцов (а для уменьшения – выкинуть). Такой метод называется методом ближайшего соседа (nearest neighbor). Можно промежуточные столбцы и строки получить линейной интерполяцией значений соседних столбцов и строк. Такой метод называется билинейной интерполяцией (bilinear interpolation). Можно каждую точку нового изображения получить как взвешенную сумму большего числа точек исходного изображения (бикубическая и другие виды интерполяции).

Наиболее качественный ресамплинг получается при использовании алгоритмов, учитывающих необходимость работы не только с временной, но и с частотной областью изображения. Сейчас мы рассмотрим алгоритм ресамплинга, который основан на идее максимального сохранения частотной информации изображения. Алгоритм построен по принципу интерполяция / фильтрация / прореживание (interpolation / filtering / decimation).

Работу алгоритма будем рассматривать на одномерных сигналах, так как двумерное изображение можно сначала растянуть или сжать по горизонтали (по строкам) а потом – по вертикали (по столбцам). Таким образом, ресамплинг двумерного изображения сводится к ресамплингу одномерного сигнала.

Пусть нам нужно «растянуть» одномерный сигнал от длины n точек до длины m точек, т.е. в nm раз. Для выполнения этой операции необходимо выполнить 3 шага. Первый шаг – интерполяция нулями, увеличивающая длину сигнала в m раз. Нужно умножить все отсчеты исходного сигнала на m, а потом после каждого отсчета сигнала нужно вставить m-1 нулевое значение. При этом спектр сигнала изменяется следующим образом. Та часть спектра, которая изначально содержалась в цифровом сигнале, остается без изменения (именно этого мы добиваемся). Но выше старой половины частоты дискретизации возникают помехи (отраженные копии спектра), от которых необходимо избавиться с помощью фильтрации.

Второй шаг – это отфильтровывание этих помех с помощью НЧ-фильтра. Теперь мы получили сигнал, который в m раз длиннее исходного, но сохранил его частотную информацию и не приобрел посторонней частотной информации (ее мы отфильтровали). Если бы нашей задачей было удлинение сигнала в m раз, то на этом шаге можно было бы остановиться. Но наша задача требует теперь уменьшить длину сигнала в n раз. Для этого нужно выполнить 2 шага. Первый шаг – это антиалиасинговая фильтрация. Так как частота дискретизации уменьшается в n раз, то из спектра сигнала, согласно теореме Котельникова, удастся сохранить только его низкочастотную часть. Все частоты выше половины будущей частоты дискретизации нужно удалить с помощью антиалиасингового фильтра с частотой среза равной n1 от текущей половины частоты дискретизации. Второй шаг – это прореживание полученного сигнала в n раз. Для этого достаточно выбрать из сигнала каждый n-й отсчет, а остальные – отбросить. Этот алгоритм очень схож с работой АЦП, который тоже сначала отфильтровывает ненужные частоты из сигнала, а потом замеряет Заметим, что две НЧ-фильтрации, применяемые в этом алгоритме друг за другом, можно (и нужно) заменить одной. Для этого частоту среза единого НЧ -фильтра нужно выбрать равной минимуму из частот среза двух отдельных НЧ-фильтров. Еще одно существенное улучшение алгоритма – это поиск общих делителей у чисел m и n. Например, очевидно, что для того, чтобы сигнал из 300 точек сжать до 200 точек, достаточно положить в алгоритме m=2 и n=3.

Заметим, что приведенный алгоритм требует очень большого объема вычислений, т.к. промежуточный размер одномерного сигнала при ресамплинге может быть порядка сотен тысяч. Существует способ существенно повысить быстродействие алгоритма и сократить расход памяти. Этот способ называется многофазной фильтрацией (polyphase filtering). Он основан на том, что в длинном промежуточном сигнале совсем необязательно вычислять все точки. Ведь большая часть из них все равно будет отброшена при прореживании. Многофазная фильтрация позволяет непосредственно выразить отсчеты результирующего сигнала через отсчеты исходного сигнала и антиалиасингового фильтра.

Отметим, что здесь мы не рассматриваем такие детали алгоритма, как коррекция границ изображения, выбор фазы сигнала при интерполяции и прореживании и построение хорошего антиалиасингового фильтра. Отметим только, что для ресамплинга изображений требуется уделить особое внимание как частотной, так и пространственной характеристике фильтра. Если оптимизировать фильтр только в частотной области, то это приведет к большим пульсациям в ядре фильтра. А при ресамплинге изображений пульсации в ядре фильтра приводят к пульсациям яркости вблизи резких перепадов яркости в изображении (эффект Гиббса, Gibbs phenomenon)

Антиалиасинг изображений

 

Избежать алиасинга при генерации изображений – важная задача компьютерной графики. Алиасинг в изображениях приводит к зубчатости краев фигур, муару, плохой читаемости текста и графиков. Одним из основных способов предотвращения алиасинга является так называемый суперсамплинг (super-sampling). Этот прием заключается в генерации изображения с большим разрешением и ресамплингу этого изображения до нужного размера. Рассмотрим пример. Пусть нам нужно сгенерировать трехмерное изображение шахматной доски с разрешением 200x150 пикселей. Если сделать это непосредственно (например, трассировкой лучей через каждую точку экрана), то результат может быть существенно искажен алиасингом (рис. 13). Применим метод суперсамплинга. Сгенерируем нужное нам изображение с четырехкратным размером 800x600 пикселей, а затем уменьшим его до размера 200x150. Заметим, что качество получаемого таким образом изображения существенно лучше и зависит от качества алгоритма ресамплинга и от степени суперсамплинга (во сколько раз большее изображение мы сгенерировали). Желательно применять алгоритм ресамплинга, обеспечивающий хороший антиалиасинг.

 

Рис. 13. Изображение, сгенерированное без антиалиасигна и с антиалиасингом.

 

Рассмотренный алгоритм широко применяется в компьютерной графике, несмотря на большие вычислительные затраты. Выбирая степень суперсамплинга, можно варьировать производительность алгоритма. Очевидно, что сложность алгоритма квадратично зависит от степени суперсамплинга. Обычно используются степени суперсамплинга от двух до четырех.


Дата добавления: 2019-07-15; просмотров: 175; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!