Частотное разложение: ЧАСТОТНОЕ РАЗЛОЖЕНИЕ — Olga Pavolga

Частотное разложение в Фотошопе (Полный урок)

Всем привет на уроке от WiFiGiD.RU. Сегодня мы поговорим про частотное разложение фотографии в Фотошопе. Для начала давайте я коротко расскажу, что это за зверь такой.

Частотное разложение изображения – процедура при которой текстура рисунка отделяется от слоя с оттенком и другими цветовыми тонами.

Очень часто используется при обработке портретных фото. При работе с частотным разложением у нас будет два слоя. Первый (верхний) – слой текстуры кожи и других поверхностей. Второй (нижний или фоновый) – будет содержать информацию только о тоне и цвете.

Для чего это нужно? При работе с двумя слоями, которые отвечают за разного рода информацию, проще обрабатывать очень сложные в структуре фотографии. Таким образом можно добавить максимального реализма при серьезной обработке. Подобная процедура часто используется при создании объемных текстур в играх и 3D-анимации.

В уроке ниже мы пошагово и на русском языке посмотрим, как правильно делать частотное разложение в программе Фотошоп. Если в процессе возникнут какие-то вопросы – пишите в комментариях.

Содержание

  1. ШАГ 1: Создание дополнительных слоев
  2. ШАГ 2: Правка текстуры
  3. ШАГ 3: Исправление тона
  4. Задать вопрос автору статьи

и амплитуда a :

 f = np. массив ([261,6, 329,6, 392,0])
а = np.массив ([1,5, 0,5, 1])
s, t = sine_wave (f = f.reshape (3, 1),
                 а=а.изменить(3, 1),
                 продолжительность=0,25,
                 sample_rate=10e3) 

Результатом является набор из трех синусоидальных кривых длиной 0,25 с:

Общий сигнал определяется суммой трех кривых:

 s = np.sum(s, axis=0) 

Преобразование Фурье

Хотя это смешанное или политонный сигнал представляет собой просто сумму трех чистых тонов, разобраться в компонентах уже не тривиально. Здесь в дело вступает преобразование Фурье.

Мы не будем вдаваться в подробности того, как работает преобразование Фурье. Лучшее объяснение, которое я видел за последнее время, — это вводное видео Гранта Сандерсона. Дело в том, что преобразование описывает сигналы как смеси периодических составляющих. Попробуем на нашем аккорде.

Сначала мы конусность сигнала путем умножения его на функцию окна . Идеальные чистые тона имеют бесконечную продолжительность, а сужение помогает предотвратить влияние краев нашего конечного сигнала на преобразование Фурье.

 s = s * np.blackman(s.size) 

Оконная функция (зеленая) оказывает сужающее действие на сигнал:

Поскольку функция s определена для данного момента времени t , мы называем это представление сигнала временем 9(е) {\ Displaystyle {\ шляпа {s}} (е)}). Это новое представление называется частотной областью. Он состоит из массива

коэффициентов Фурье :

 S = np.fft.fft(s) 

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

 freq = np.fft.fftfreq(s.size, d=1/10e3) 

Результатом является массив из коэффициентов Фурье , большинство из которых равны нулю. Но на частотах аккорда и вблизи них коэффициенты велики. Результат: «рецепт» аккорда с точки зрения синусоидальных монотонов.

Это называется спектром сигнала s . Он показывает величину каждой частотной составляющей.

Частотно-временное представление

Теперь мы знаем, как расплетать политонические сигналы, но давайте введем еще одно усложнение — сигналы, компоненты которых меняются со временем. Такие сигналы называются нестационарный . Например, подумайте о монотонном сигнале, тон которого меняется в какой-то момент (см. Блокнот для кода, который генерирует этот сигнал):

Мы можем вычислить преобразование Фурье этого сигнала, как и раньше:

 с *= np.blackman(s.size)
S = np.fft.fft(s)
freq = np.fft.fftfreq(s.size, d=1/10e3) 

И постройте амплитуду S в зависимости от массива частот freq :

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

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

Библиотека для построения графиков Python matplotlib предлагает удобный способ построения графика время-частота, также известного как спектрограмма . В одной строке кода он создает график 2D-изображения, показывающий зависимость частоты от времени.

 _ = plt.specgram(s, Fs=1/10e3,
                   NFFT=512, noverlap=480) 

Немного поработав, мы можем получить очень богатое представление наших данных:

График использует алгоритм, называемый кратковременным преобразованием Фурье, или STFT.

Это просто делает преобразование Фурье в скользящем окне длиной NFFT с перекрытием точек, перекрывающихся в предыдущем окне. Мы хотим NFFT должен быть длинным, чтобы получить хорошее разрешение по частоте, и мы хотим, чтобы nooverlap был большим, чтобы получить хорошее разрешение по времени.

Обратите внимание, что мы не можем точно увидеть точную частоту компонентов — они не служат достаточно долго, чтобы их можно было зафиксировать. И есть некоторая неопределенность в отношении сроков перехода, потому что для получения приличного разрешения по частоте нам нужен длинный сегмент сигнала (в данном случае 512 отсчетов) — поэтому мы теряем информацию о времени. Но в целом этот сюжет лучше, чем только спектр: мы видим, что есть по крайней мере два сильных сигнала с частотами около 250 и 400 Гц, и что изменение происходит примерно через 0,125 с.

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

Существует большое сходство между этим частотно-временным разложением и нотной записью:

Оказывается, самые интересные сигналы — и, возможно, все естественные сигналы — политонны и нестационарны. По этой причине, хотя временные ряды часто полезны, частотно-временная декомпозиция может быть очень показательной. Вот некоторые примеры; в каждом случае частота отложена по вертикальной оси, а время по горизонтальной оси. Цвета указывают мощность от низкой (синий) до высокой (желтый) (пропорционально квадрату амплитуды).

Человеческий голос произносит «SEG». Сонорные гласные имеют гармоники (горизонтальные полосы), а шипящие звуки «С» и первой части «Г» — шумоподобные. спектральные отклики.

На этой спектрограмме показана 5-секундная серия чириканий летучих мышей. Я указал 18 кГц, приблизительный предел человеческого слуха, оранжевой линией, и если вы слушаете звук этого сигнала в Ноутбук, можно убедиться, что чириканье еле слышно при нормальной скорости воспроизведения; только при замедлении клипа они могут быть отчетливо слышны.

Наконец, вот вулканический «крик» — гармонический толчок, предшествующий взрывному извержению на горе Редут, Аляска, в марте 2009 года. На слух это звучит невероятно, но спектрограмма тоже интересно. В отличие от чириканья летучей мыши, этот 15-минутный временной ряд нужно ускорить, чтобы его услышать.

Продолжить изучение

Все рисунки в этой записной книжке можно воспроизвести с помощью кода в записной книжке Jupyter, прилагаемой к этой статье, на https://github.com/seg/tutorials-2018. Вы даже можете запустить код в облаке и поиграть с ним в браузере. Ничего не сломаешь — не волнуйся!

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

Счастливого разложения!

Автор, ответственный за переписку

  • Автор, ответственный за переписку: Matt Hall, Agile Scientific, Mahone Bay, Новая Шотландия, Канада. Электронная почта: mattagilescientific.com

Благодарности

Фортепианная запись из BWV846 Баха лицензирована Кимико Ишизака CC-BY на http://welltemperedclavier.org. Данные чириканья летучих мышей лицензированы CC-BY-NC пользователем http://freesound.org klankschap. Спасибо Алисии Хотовек-Эллис за ее помощь с данными о горе Редут, записанными вулканической обсерваторией Геологической службы США на Аляске.

Внешние ссылки

найти литературу о
Частотно-временное разложение
  • Мадагаскарский рабочий процесс — воспроизводимый с помощью Мадагаскарского программного обеспечения с открытым исходным кодом

Частотно-временная декомпозиция — SEG Wiki

  • 1 Преобразование Фурье
  • 2 Частотно-временное представление
  • 3 Продолжить изучение
  • 4 Автор, ответственный за переписку
  • 5 Благодарностей
  • 6 Внешние ссылки
  • Рассмотрим форму волны или сигнала s как функцию времени t . Например, синусоидальная волна с некоторой амплитудой a и с некоторой частотой f может быть определена как

    s (t) = asin⁡ (2πft) {\ displaystyle s (t) = a \ sin (2 \ pi ft)}.

    Мы можем реализовать эту математическую функцию как подпрограмму, обычно также называемую функцией , на языке программирования Python. Поскольку компьютеры живут в дискретном мире, мы необходимо оценить функцию в течение некоторого времени и с некоторой частотой дискретизации:

     по определению sine_wave(f, a, продолжительность, частота дискретизации):
        t = np.arange(0, продолжительность, 1/sample_rate)
        return a * np.sin(2 * np.pi * f * t), t 

    Теперь мы можем вызвать эту функцию, передав ей частоту f = 261,63 Гц. Мы попросим 0,25 с с частотой дискретизации 10 кГц.

     с, t = sine_wave(f=261,63,
                       а=1,
                       продолжительность=0,25,
                       sample_rate=10e3) 

    Это приводит к следующему сигналу, обычно называемому временной ряд , который мы визуализируем путем построения графика s в зависимости от времени t :

    Я изобразил результирующий массив в виде линии, но на самом деле это ряд дискретных точек, представленных в Python в виде массива чисел, начиная с этих четырех:

     array([ 0.  , 0.1636476 , 0.32288289, 0.47341253]) 

    Построим первые 80 точек:

    Когда воздух вибрирует на этой частоте, мы слышим среднее До или До4. Вы можете прослушать примечание для себя в Jupyter Notebook, сопровождающем эту статью, по адресу https://github.com/seg/tutorials-2018. (В блокноте также содержится весь код для построения графиков.) Код для отображения массива s , так как звук очень короткий:

     из IPython.display import Audio
    фс = 10e3
    Audio(s, rate=fs) 

    Этот сигнал имеет длину всего 0,25 с, а шевелений уже много. Мы бы хотели иметь сейсмические данные на этой частоте! Большинство сейсмических данных воспроизводятся только на нижних 20–30 клавишах 88-клавишного фортепиано — действительно, самая нижняя клавиша — это A0, что на частоте 27,5 Гц превышает пиковую частоту многих старых съемок.

    Если бы мы хотели узнать частоту этого сигнала, мы могли бы предположить, что это чистый тон, и просто подсчитать количество циклов в единицу времени. Но естественные сигналы редко бывают монотонными, так что давайте сделаем более интересный сигнал. Мы можем использовать нашу функцию, чтобы создать до-мажорный аккорд с тремя нотами (C4, E4 и G4), передав векторы-столбцы (изменив форму массивов) для частоты 9.0021 f и амплитуда a :

     f = np.массив ([261,6, 329,6, 392,0])
    а = np.массив ([1,5, 0,5, 1])
    s, t = sine_wave (f = f.reshape (3, 1),
                     а=а.изменить(3, 1),
                     продолжительность=0,25,
                     sample_rate=10e3) 

    Результатом является набор из трех синусоидальных кривых длиной 0,25 с:

    Общий сигнал определяется суммой трех кривых:

     s = np.sum(s, axis=0) 

    Преобразование Фурье

    Хотя это смешанное или политонный сигнал представляет собой просто сумму трех чистых тонов, разобраться в компонентах уже не тривиально. Здесь в дело вступает преобразование Фурье.

    Мы не будем вдаваться в подробности того, как работает преобразование Фурье. Лучшее объяснение, которое я видел за последнее время, — это вводное видео Гранта Сандерсона. Дело в том, что преобразование описывает сигналы как смеси периодических составляющих. Попробуем на нашем аккорде.

    Сначала мы конусность сигнала путем умножения его на функцию окна . Идеальные чистые тона имеют бесконечную продолжительность, а сужение помогает предотвратить влияние краев нашего конечного сигнала на преобразование Фурье.

     s = s * np.blackman(s.size) 

    Оконная функция (зеленая) оказывает сужающее действие на сигнал:

    Поскольку функция s определена для данного момента времени t , мы называем это представление сигнала временем 9(е) {\ Displaystyle {\ шляпа {s}} (е)}). Это новое представление называется частотной областью. Он состоит из массива коэффициентов Фурье :

     S = np.fft.fft(s) 

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

     freq = np.fft.fftfreq(s.size, d=1/10e3) 

    Результатом является массив из коэффициентов Фурье , большинство из которых равны нулю. Но на частотах аккорда и вблизи них коэффициенты велики. Результат: «рецепт» аккорда с точки зрения синусоидальных монотонов.

    Это называется спектром сигнала s . Он показывает величину каждой частотной составляющей.

    Частотно-временное представление

    Теперь мы знаем, как расплетать политонические сигналы, но давайте введем еще одно усложнение — сигналы, компоненты которых меняются со временем. Такие сигналы называются нестационарный . Например, подумайте о монотонном сигнале, тон которого меняется в какой-то момент (см. Блокнот для кода, который генерирует этот сигнал):

    Мы можем вычислить преобразование Фурье этого сигнала, как и раньше:

     с *= np. blackman(s.size)
    S = np.fft.fft(s)
    freq = np.fft.fftfreq(s.size, d=1/10e3) 

    И постройте амплитуду S в зависимости от массива частот freq :

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

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

    Библиотека для построения графиков Python matplotlib предлагает удобный способ построения графика время-частота, также известного как спектрограмма . В одной строке кода он создает график 2D-изображения, показывающий зависимость частоты от времени.

     _ = plt.specgram(s, Fs=1/10e3,
                       NFFT=512, noverlap=480) 

    Немного поработав, мы можем получить очень богатое представление наших данных:

    График использует алгоритм, называемый кратковременным преобразованием Фурье, или STFT. Это просто делает преобразование Фурье в скользящем окне длиной NFFT с перекрытием точек, перекрывающихся в предыдущем окне. Мы хотим NFFT должен быть длинным, чтобы получить хорошее разрешение по частоте, и мы хотим, чтобы nooverlap был большим, чтобы получить хорошее разрешение по времени.

    Обратите внимание, что мы не можем точно увидеть точную частоту компонентов — они не служат достаточно долго, чтобы их можно было зафиксировать. И есть некоторая неопределенность в отношении сроков перехода, потому что для получения приличного разрешения по частоте нам нужен длинный сегмент сигнала (в данном случае 512 отсчетов) — поэтому мы теряем информацию о времени. Но в целом этот сюжет лучше, чем только спектр: мы видим, что есть по крайней мере два сильных сигнала с частотами около 250 и 400 Гц, и что изменение происходит примерно через 0,125 с.

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

    Существует большое сходство между этим частотно-временным разложением и нотной записью:

    Оказывается, самые интересные сигналы — и, возможно, все естественные сигналы — политонны и нестационарны. По этой причине, хотя временные ряды часто полезны, частотно-временная декомпозиция может быть очень показательной. Вот некоторые примеры; в каждом случае частота отложена по вертикальной оси, а время по горизонтальной оси. Цвета указывают мощность от низкой (синий) до высокой (желтый) (пропорционально квадрату амплитуды).

    Человеческий голос произносит «SEG». Сонорные гласные имеют гармоники (горизонтальные полосы), а шипящие звуки «С» и первой части «Г» — шумоподобные. спектральные отклики.

    На этой спектрограмме показана 5-секундная серия чириканий летучих мышей. Я указал 18 кГц, приблизительный предел человеческого слуха, оранжевой линией, и если вы слушаете звук этого сигнала в Ноутбук, можно убедиться, что чириканье еле слышно при нормальной скорости воспроизведения; только при замедлении клипа они могут быть отчетливо слышны.

    Наконец, вот вулканический «крик» — гармонический толчок, предшествующий взрывному извержению на горе Редут, Аляска, в марте 2009 года. На слух это звучит невероятно, но спектрограмма тоже интересно. В отличие от чириканья летучей мыши, этот 15-минутный временной ряд нужно ускорить, чтобы его услышать.

    Продолжить изучение

    Все рисунки в этой записной книжке можно воспроизвести с помощью кода в записной книжке Jupyter, прилагаемой к этой статье, на https://github.com/seg/tutorials-2018. Вы даже можете запустить код в облаке и поиграть с ним в браузере. Ничего не сломаешь — не волнуйся!

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

    alexxlab

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *