Преобразования Фурье для обработки сигналов с помощью Python |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-11-07 12:02 Данный материал представляет собой незначительно сокращенный перевод статьи Кэмерона МакЛаудаFourier Transforms With scipy.fft: Python Signal Processing. *** Преобразование Фурье– повсеместно используется для анализа сигналов – от обработки звука до сжатия изображений, от инженерных расчетов до Data Science. Популярная Python-библиотека SciPy предоставляет готовую реализацию преобразования Фурье в модуле Сам модуль поначалу выглядит устрашающе. Виной тому множество однотипно названных функций и то, чтодокументацияоперирует технической терминологией без каких-либо пояснений. Но есть и хорошие новости: чтобы начать использовать модуль, достаточно усвоить лишь несколько основных концепций. Не волнуйтесь, если не чувствуете себя уверенно в математических изысканиях – мы рассмотрим алгоритм на конкретном практическом примере. Чтобы представить преобразование Фурье визуально, обязательно посмотрите следующийролик 3Blue1Brown(есть русские субтитры). Из этого руководства вы узнаете:
Обратите внимание Текст публикации также доступен в виде блокнота Jupyter. Модуль scipy.fft Установка SciPy и Matplotlib Прежде чем начать, необходимо установить SciPy, NumPy (библиотека для работы с массивами) и Matplotlib (библиотека для визуализации данных). Вы можете сделать это одним из двух способов:
Вы можете убедиться, что установка прошла успешно, запустив следующий код: Этот код импортирует NumPy, SciPy, Matplotlib и выведет версии модулей, если они установлены в системе. Разница между scipy.fft и другими модулями Очертим различия между модулем
Модуль
Реализация быстрого преобразования Фурье (англ. Fast Fourier transform, FFT) в SciPy содержит больше функций и более вероятно будет исправлена в случае обнаружения ошибки, чем реализация NumPy ( Преобразование Фурье Анализ Фурье – область математического анализа, отвечающая на вопрос, как можно представить математическую функцию в виде комбинации простых тригонометрических функций. Преобразование Фурье – это инструмент, который позволяет в исследуемом сигнале увидеть вклад каждой из этих гармонических составляющих, характеризуемых определенной частотой. В этом смысле говорят, что преобразование Фурье позволяет разложить функцию по частотам. Итак, мы будем говорить о трех компонентах:
Следующее изображение иллюстрирует примеры гармонических сигналов различной частоты и мощности. Представьте, что вы использовали преобразование Фурье для записи того, как кто-то играет на фортепиано аккорд из трёх нот. Результирующий частотный спектр покажет три пика – по одному для каждой ноты. Если человек играл одну ноту мягче, мощность для частоты этой ноты будет меньше, чем для двух других. Зачем может понадобиться преобразование Фурье? Преобразование Фурье полезно во многих приложениях. Например, Shazam и другие службы распознавания музыки используют преобразование Фурье для идентификации песен. Алгоритм сжатияJPEGпредставляет собой вариант преобразования Фурье, применяемый для удаления высокочастотных компонент изображений. В распознавании речи преобразование Фурье и связанные с ним преобразования служат для восстановления произнесенных слов. Задача преобразования Фурье возникает всякий раз, когда нужно как-либо работать с сигналом, представляемым в пространстве частот. Временная область против частотной области Далее мы будем иметь дело свременно?йи частотной областями] – двумя подходами к представлению сигнала: как информации, которая изменяется во времени и информации, отображенной в виде набора частот и соответствующих им амплитуд. Ниже представлено характерное изображение аудиосигнала – классического примера сигнала во временной области. Горизонтальная ось соответствует времени, вертикальная ось – амплитуде. Тот же звуковой сигнал можно представить разложенным по составляющим его частотам. Горизонтальная ось на рисунке ниже представляет частоту, вертикальная ось – мощность. Классификация преобразований Фурье Преобразование Фурье подразделяют на категории по нескольким признакам. В первую очередь – по типу функций, с которыми работает преобразование: непрерывные или дискретные. В этом руководстве мы рассматриваемдискретное преобразование Фурье(DFT). Термины DFT и FFT нередко используются как взаимозаменяемые. Однако это не совсем одно и то же: быстрое преобразование Фурье (FFT) – лишь один из алгоритмов вычисления дискретного преобразования Фурье. Еще одна линия раздела в терминологии, с которым вы столкнетесь при использовании Практический пример: удаление нежелательного шума из аудиофайла Чтобы лучше понять преобразование Фурье и то, как его можно применить, решим задачу фильтрации звука. Намеренно создадим звуковой сигнал с высокочастотным шумом, а затем удалим шум с помощью преобразования Фурье. Создание сигнала Одиночное гармоническое (синусоидальное) колебание представляют одну частоту и в музыкальном отношении является чистым тоном. Воспользуемся свойством таких волн для генерации звука: После импорта NumPy и Matplotlib мы определили две константы:
Затем мы определяем функцию для генерации синусоидальной волны – позже мы воспользуемся ей несколько раз. Функция принимает частоту Координаты Ось Смешивание аудиосигналов Микширование аудиосигналов состоит всего из двух этапов:
Символ подчеркивания ( Следующий шаг – нормализация, масштабирование сигнала под целевой формат. В нашем случае это 16-битное целое число в диапазоне от Деление Чтобы прослушать звук, необходимо сохранить его в формате, который может прочитать аудиоплеер. Воспользуемся методом SciPy Этот код запишет данные в файл Используем быстрое преобразование Фурье для удаления шума Быстрое преобразование Фурье (FFT) – алгоритм, который позволяет вычислить частотный спектр сигнала: На построенном спектре видны два пика на положительных частотах и два их зеркальных отражения в отрицательной области. Пики положительных частот находятся на позициях 400 и 4000 Гц. Преобразование Фурье взяло колеблющийся сигнал и разложило его по содержащимся в нем частотам. Поскольку мы сами внесли только две частоты, на выходе преобразования мы видим только их. Симметричное представление в положительной и отрицательной областях – побочный эффект ввода действительных значений в преобразование Фурье, о чём мы поговорим подробнее в дальнейшем. Самый важный раздел в этом небольшом скрипте – вычисление преобразования Фурье: Код вызывает две функции:
Под бином здесь понимается интервал значений, сгруппированных аналогично гистограмме. В рамках этого руководства достаточно рассматривать их как отдельные значения. Интересной частью кода является обработка, выполняемая с Комплексное число– это число, состоящее из двух частей: действительной и мнимой. Такие необычные числа полезны во многих приложениях, но если вы столкнулись с ними впервые, то сейчас достаточно знать лишь то, что они существуют. Математики обычно записывают комплексные числа в форме Поскольку комплексные числа состоят из двух компонент, построение графика их зависимости от частоты на двумерной оси требует, преобразовать два значения в одно. На помощь приходит Примечание Кстати, по графику можно заметить, что Обрабатываем сигнал еще быстрее с помощью rfft() Частотный спектр, выдаваемый Фильтрация сигнала Самая замечательная вещь в преобразовании Фурье заключается в том, что оно обратимо. Любой сигнал, измененный в частотной области, можно преобразовать обратно во временную область. Воспользуемся этим, чтобы отфильтровать высокочастотный шум. Возвращаемые Обнулим Остался только один пик. Применим обратное преобразование Фурье, чтобы вернуться во временную область. Применение обратного преобразования Фурье Применение обратного FFT аналогично применению FFT: Поскольку мы использовали Как видите, теперь есть одна синусоида, колеблющаяся с частотой 400 Гц – мы успешно удалили шум на 4000 Гц. Нормализуем сигнал и запишем результат в файл. Сделать это можно так же, как в прошлый раз: Проиграв файл, вы услышите, что раздражающий писк исчез. Будьте осторожны с фильтрацией Приведенный пример в большей мере предназначен для образовательных целей, чем для реального использования. Воспроизведение процесса для таких сигналов, как музыкальные произведения, может даже создать больше шума, чем устранить.Для фильтрации сигналов обычно используются специальные функции проектирования фильтров пакета Дискретные косинусные и синусоидальные преобразования Туториал по модулю Упрощенно говоря, DCT и DST – как бы две половины преобразования Фурье, вычисляемые по отдельности быстрее, чем полное преобразование Фурье. Прежде чем вы научитесь выбирать между ними, нужно освежить в памяти понятиечетныхинечетныхфункций. Четные функции симметричны относительно оси При расчете полного преобразования Фурье (DFT) предполагается, что функция, по которой происходит вычисление, повторяется бесконечно. Однако преобразования DCT и DST позволяют учесть симметрию сигнала. Косинусное преобразование (DCT) предполагает, что функция продлевается за счет четной симметрии, а для DST – за счет нечетной симметрии. На следующем изображении показано, как каждое преобразование представляет, как функция будет продолжаться в бесконечности. На изображении выше полное преобразование повторяет функцию как есть. DCT отражает функцию по вертикали, а DST – по горизонтали. Обратите внимание, что симметрия DST приводит к существенным разрывам функции. Это вносит высокочастотные составляющие в результирующем частотном спектре. Если нет сведений о симметрии сигнала, лучше использовать DCT. Естьмножество примеровиспользования DCT в различных задачах, требующих высокой скорости преобразования Фурье, в том числе в алгоритмах JPEG, MP3 и WebM. Заключение Преобразование Фурье – это мощная концепция, применяемая в самых разных областях – от чистой математики до аудиотехники и даже финансов. В этом уроке мы рассмотрели:
Мы рассмотрели только базовую идею, но ее понимание поможет разобраться в других вопросах, связанных с преобразованием Фурье и представлением функций в виде частотных спектров. Источники Источник: proglib.io Комментарии: |
|