Научная статья на тему 'ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ ДЛЯ СПЕКТРАЛЬНОГО АНАЛИЗА ШУМА ПЕРЛИНА'

ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ ДЛЯ СПЕКТРАЛЬНОГО АНАЛИЗА ШУМА ПЕРЛИНА Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
401
35
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МАШИННАЯ ГРАФИКА / АМПЛИТУДНО-ЧАСТОТНАЯ ХАРАКТЕРИСТИКА / ШУМ ПЕРЛИНА / БЫСТРОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ / ЯЗЫК PYTHON / БИБЛИОТЕКА SCIPY

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Юрик Е.А., Ильичев В.Ю.

Работа, описанная в статье, направлена на создание программы, способной строить амплитудно-частотную характеристику одного из часто применяемых в машинной графике типов структур - шума Перлина. Построение характеристики производится с применением быстрого преобразования Фурье (FFT); целью этого процесса является исследование меры влияния параметров шума Перлина на степень его хаотичности. Приведены последовательность выполнения кода программы на языке Python и описание библиотек используемых функций. С помощью разработанной программы исследованы несколько вариантов шума Перлина, по полученным результатам сделаны выводы. Приведены рекомендации по применению и совершенствованию описанной методики.The work described in the article is aimed at creating a program capable of constructing the amplitude-frequency characteristic of one of the types of structures often used in machine graphics - Perlin noise. The construction of the characteristic is carried out using a fast Fourier transform (FFT); the purpose of this process is to investigate the measure of the effect of Perlin noise parameters on the degree of its chaotic nature. Provides a sequence for executing Python program code and a description of the function libraries used. Using the developed program, several versions of Perlin noise were investigated, based on the results, conclusions were drawn. Recommendations on application and improvement of the described procedure are given.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ ДЛЯ СПЕКТРАЛЬНОГО АНАЛИЗА ШУМА ПЕРЛИНА»

УДК 62

Технические науки

Юрик Е. А., к.т.н., доцент кафедры «Тепловые двигатели и гидромашины» Калужский филиал ФГОУ ВО «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский

университет), г. Калуга, Россия Ильичев В. Ю., к.т.н., доцент кафедр «Тепловые двигатели и гидромашины», «Мехатронные иробототехнические системы» Калужский филиал ФГОУ ВО «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский

университет), г. Калуга, Россия

ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ ДЛЯ СПЕКТРАЛЬНОГО АНАЛИЗА ШУМА ПЕРЛИНА

Аннотация: Работа, описанная в статье, направлена на создание программы, способной строить амплитудно-частотную характеристику одного из часто применяемых в машинной графике типов структур - шума Перлина. Построение характеристики производится с применением быстрого преобразования Фурье (FFT); целью этого процесса является исследование меры влияния параметров шума Перлина на степень его хаотичности. Приведены последовательность выполнения кода программы на языке Python и описание библиотек используемых функций. С помощью разработанной программы исследованы несколько вариантов шума Перлина, по полученным результатам сделаны выводы. Приведены рекомендации по применению и совершенствованию описанной методики.

Ключевые слова: машинная графика, амплитудно-частотная характеристика, шум Перлина, быстрое преобразование Фурье, язык Python, библиотека SciPy.

Annotation: The work described in the article is aimed at creating a program capable of constructing the amplitude-frequency characteristic of one of the types of structures often used in machine graphics - Perlin noise. The construction of the characteristic is carried out using a fast Fourier transform (FFT); the purpose of this process is to investigate the measure of the effect of Perlin noise parameters on the degree of its chaotic nature. Provides a sequence for executing Python program code and a description of the function libraries used. Using the developed program, several versions of Perlin noise were investigated, based on the results, conclusions were drawn. Recommendations on application and improvement of the described procedure are given.

Keywords: machine graphics, amplitude-frequency response, Perlin noise, fast Fourier transform, Python language, SciPy library.

Введение

Анализом Фурье [9] называется представление сложной математической функции, описывающей изменение численного значения амплитуды (функции) в зависимости от времени (аргумента), в виде суммы простых синусоидальных составляющих (каждая из которых характеризуется своей частотой и амплитудой).

Алгоритмы дискретного преобразование Фурье (DFT) [11] применяются для спектрального (или частотного) анализа различных типов сигналов, являющихся как результатом построения математических функций, так и получаемых с датчиков и первичных преобразователей реальных технических объектов. Улучшенным с точки зрения скорости работы алгоритмом DFT является так называемое быстрое преобразование Фурье (FFT) [8]. Его алгоритм начинал разрабатывать Гаусс в начале 19 века, который ко второй половине 20 века был доработан учёными Кули и Тьюки, и в этом виде используется до сих пор.

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

например, применяемых для анализа музыки и удаления шумов (CoolEdit, Steinberg Cubase [1], Shazam), сжатия изображений и звуков (Matlab и многих других, применяющих алгоритмы с частичной потерей информации, например, mp3 и jpeg [3]). Также существуют функции FFT, входящие в библиотеки современных популярных языков программирования, например, универсального свободно распространяемого языка Python.

Целью данной работы является использование алгоритма быстрого преобразования Фурье для исследования спектральных свойств одной из широко применяемых в машинной графике структур - шума Перлина, имитирующего природные объекты - горы, огонь, течение жидкости, построение которой на языке Python было рассмотрено в статье автора [6]. Таким образом, с помощью одной программы должно быть осуществлено как построение картины шума Перлина, так и произведён его спектральный анализ с помощью FFT, который должен помочь выявить характеристики спектра данного алгоритма создания машинной графики и заключающиеся в нём закономерности.

Материал и методы исследования

Алгоритмы преобразования Фурье содержатся в широко применяемой в научных исследованиях библиотеке языка программирования Python, именуемой SciPy. Она уже применялась во многих исследованиях авторов [4; 5]. Также реализация быстрого преобразования Фурье содержится в модуле Numpy [12], однако в этом случае она имеет меньше параметров и её код не оптимизируется разработчиками с течением времени. Поэтому, для использования в создаваемой исследовательской программе выбран более продвинутый субмодуль fft.SciPi.

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

Процесс применения средств указанной библиотеки и прочих

особенностей разработанного алгоритма анализа шума Перлина при достижении цели исследования нагляднее всего может быть описан путём последовательного рассмотрения частей созданного программного кода:

1. Импорт двух функций из субмодуля scipy.fft: Шйэд и fft, соответственно, для возврата частот и амплитуд выборки преобразования Фурье.

2. Импорт модуля работы с массивами данных Numpy. В описываемой программе необходимы создание и обработка массивов данных по амплитудам, таймингам и частотам сигналов.

3. Импорт модуля для вывода результатов исследований в качественном графическом виде Matplotlib.pyplot.

4. Подгрузка модуля РегНпЫ^е [2] для создания особого типа сигнала (шума Перлина), характеризующегося как некоторой степенью хаотичности, так и упорядоченности, которые предстоит исследовать.

5. Создание объекта-переменной, позволяющей сформировать временную последовательность точек шума Перлина, которой присваивается значение функции РегНпК^е, имеющей два характерных аргумента: количество октав шума и начальное значение, с помощью которого формируется псевдослучайная последовательность. Количество октав является ключевым параметром шума Перлина, от которого зависит его упорядоченность; именно его влияние на частотный спектр генерируемого сигнала и необходимо показать в данной работе.

6. Далее задаётся количество сэмплов (отсчётов амплитуды сигнала в течение определённого промежутка времени). Используя количество сэмплов и продолжительность рассматриваемого промежутка времени, определяется время между отсчётами.

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

формируемого графика FFT.

8. Создаётся пустой массив амплитуд функции шума Перлина y (для формирования значений по оси ординат), который затем в цикле заполняется числами, генерируемыми с помощью функции, описанной в п. 4.

9. Сформированный 2D график шума Перлина (зависимости амплитуды сигнала от времени) выводится на экран, а также в графический файл.

10. К массиву шума Перлина применяются функции быстрого преобразования Фурье, описанные в п. 1. Таким образом, формируется зависимость амплитуд синусоид, входящих в ряд Фурье, от их частот, которая также выводится на экран и в графический файл.

Рассмотрим примеры применения созданной программы для анализа сгенерированного шума Перлина с разным количеством октав и сделаем вывод об их влиянии на спектр шума (в первую очередь, на показатели его упорядоченности или хаотичности). Вначале сгенерируем шум Перлина с большим количеством октав (к примеру, 30). Количество сэмплов примем равным 1000, время между сэмплами зададим равным 1/10 секунды - таким образом, сигнал будет формироваться на промежутке времени, равном 100 с. Изменение амплитуды полученного шума Перлина в зависимости от времени представлена на рис. 1.

А

0.4 -0.2 -0.0 --0,2 --0.4 -

0 20 40 60 ВО 100

Рис. 1. Результат построения шума Перлина с большим количеством октав

Применив к представленному на рисунке алгоритм быстрого преобразования Фурье, получим картину, представленную на рис. 2.

Рис. 2. Спектр шума Перлина, полученный с помощью быстрого преобразования Фурье

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

Попробуем значительно уменьшить количество октав генерируемого шума Перлина - до 3. Остальные параметры (количество сэмплов и время между сэмплами) оставим неизменным. Изменение амплитуды шума с течением времени представлено на рис. 3.

Рис. 3. Результат построения шума Перлина с малым количеством октав

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

Рис. 4. Спектр шума, отличающегося малым количеством суммируемых октав

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

В качестве ещё одного примера на рис. 5. приведён результат применения быстрого анализа Фурье к сгенерированного с помощью программы синусоидального сигнала частотой 1 Гц. Данный график представляет из себя всего один столбец, явно показывающий частоту и амплитуду анализируемого сигнала.

Рис. 5. Спектр сгенерированного синусоидального сигнала частотой 1 Гц

Заключение

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

параметрами, а самое главное - выделить отдельные его частотные составляющие с использованием алгоритма быстрого преобразования Фурье. Такой амплитудно-частотный анализ сигнала позволяет наглядно показать степень его хаотичности, либо упорядоченности. В качестве примера на рис. 5 приведён пример амплитудно-частотной характеристики синусоидального сигнала, являющегося в полной мере упорядоченным (описываемым с помощью простейшей тригонометрической функции).

По результатам анализа влияния исходных характеристик шума Перлина на его хаотичность и упорядоченность можно сделать однозначный вывод о том, что чем большую меру порядка в структуре генерируемого сигнала мы хотим достичь, тем меньшее количество октав шума следует использовать. Дополнительное детальное исследование показало, что количество октав выше 5 приводит к созданию 2D шума Перлина, в котором практически невозможно обнаружить какую-либо меру порядка. То есть, в данном случае он напоминает полностью случайный процесс.

Созданную в результате выполнения работы программу, а также её отдельные части можно использовать как основу для выполнения более сложных исследований, а также для обучения основам использования рассмотренных в ней модулей и функций [7]. Это представляется важным, так как язык Python [10] в настоящее время приобрёл огромную популярность, а рассмотренные в статье технологии являются чрезвычайно востребованными в ходе создания комплексных методик научных исследований.

Библиографический список:

1. Бунькова А.Д., Царев Д.А. Аранжировка и процесс сведения музыкальной композиции в программе Steinberg Cubase. // Перспективы развития информационных технологий. 2016. № 30. С. 94-103.

2. Жучков Е.А., Жучкова Т.Г. Разработка и реализация алгоритма процедурной генерации ландшафта на основе шума Перлина. // В сборнике: Актуальные проблемы модернизации математического и естественно-научного

образования. Сборник научных трудов по материалам Всероссийской научно-методической конференции. 2020. С. 112-114.

3. Ильичев В.Ю. Разработка программных средств увеличения изображений с использованием их фрактальных свойств. // Системный администратор. 2021. № 1-2 (218-219). С. 124-127.

4. Ильичев В.Ю. Разработка программы для исследования аттрактора Лоренца и ее использование. // Сложные системы. 2021. № 1 (38). С. 56-63.

5. Ильичев В.Ю. Использование алгоритма дифференциальной эволюции для решения оптимизационных задач. // Системный администратор. 2021. № 4 (221). С. 80-83.

6. Качурин А. В., Ильичев В. Ю. Основы формирования визуальной картины шума Перлина при программировании на языке Python // E-Scio [Электронный ресурс]: Электронное периодическое издание «E-Scio.ru» Режим доступа: http ://e-scio.ru/wp-content/uploads/2021/08/Качурин-А. -В. -Ильичев-В. -to.pdf.

7. Коротков Н.И., Григорьева И.И. Реализация индивидуального проекта школьника с использованием графических библиотек Python. // Вестник ТОГИРРО. 2018. № 2 (40). С. 93.

8. Кошелева Д.Д., Доронина А.В. Преобразование Фурье и быстрое преобразование Фурье. // Инновации. Наука. Образование. 2021. № 38. С. 626632.

9. Мищенкова О.В., Черепов И.В. Фурье-анализ в термогазодинамических задачах при расчете тепловых двигателей. // Вестник ИжГТУ имени М.Т. Калашникова. 2012. № 3 (55). С. 154-159.

10. Петров А.М., Лобастова О.А. Программирование на Python. // В сборнике: Информатика и вычислительная техника. сборник научных трудов. Б.М. Калмыков (гл. редактор); Н.В. Первова (отв. редактор). Чебоксары, 2015. С. 91-94.

11. Фирсова С.А. Преобразование дискретного преобразования Фурье в полиномиальную форму. // Вестник Таганрогского государственного

педагогического института. 2014. № 1. С. 73-76.

12. Ilichev V.Y. Development of program for determination of fractal dimensions of images. // International Research Journal. 2021. № 4-1 (106). С. 6-10.

i Надоели баннеры? Вы всегда можете отключить рекламу.