УДК 778.38
Технические науки
Ильичев Владимир Юрьевич, к.т.н., доцент кафедр «Тепловые двигатели и
гидромашины» и «Мехатроника и робототехнические системы» Калужский филиал ФГОУ ВО «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский
университет), г. Калуга, Россия Юрик Елена Алексеевна, к.т.н., доцент кафедры «Тепловые двигатели и гидромашины», Калужский филиал ФГОУ ВО «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет), г. Калуга, Россия Желтков Андрей Николаевич, студент кафедры «Тепловые двигатели и гидромашины», Калужский филиал ФГОУ ВО «Московский государственный технический университет имени Н.Э. Баумана (национальный исследовательский университет), г. Калуга, Россия
ЦИФРОВОЕ ГОЛОГРАФИЧЕСКОЕ КОДИРОВАНИЕ 3D ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ ЯЗЫКА PYTHON
Аннотация: В статье приведён обзор особенностей использования цифровой голографии для кодирования трёхмерных изображений и хранения их в виде двухмерных массивов. Описана практическая методика и процесс её реализации в виде программы с использованием специальных функций языка Python, большинство из которых объединены в библиотеку LiberTEM. С помощью созданной авторами программы произведён расчёт примера, приведены все промежуточные вспомогательные картины обработки изображения и полученная голограмма. После этого путём восстановления амплитудной и фазовой картин изображения оценивается качество применяемой методики.
Ключевые слова: голограмма, 3D изображение, цифровое кодирование,
язык Python, библиотека LiberTEM.
Annotation: The article provides an overview of the features of using digital holography to encode three-dimensional images and store them in the form of two-dimensional arrays. The practical methodology and the process of its implementation in the form of a program using special Python language functions, most of which are combined into the LiberTEM library, is described. Using the program created by the authors, an example was calculated, all intermediate auxiliary images of image processing and the resulting hologram are given. After that, by restoring the amplitude and phase paintings of the image, the quality of the applied method is estimated.
Keywords: hologram, 3D image, digital coding, Python language, library LiberTEM.
Введение
Одной из актуальных проблем современной науки является разработка технологий преобразования и хранения трёхмерной (3D) информации [9]. К настоящему времени известно множество методик для реализации данных процессов, и наиболее перспективными из них считаются голографические методы [3], теоретические основы которых получили быстрое развитие в последнее время и даже начали практически применяться, например, в таких областях, как астрономия или медицинские исследования. Наиболее качественные результаты получаются при использовании цифровых камер, дающих большое разрешение изображения.
Перспективность цифровой голографии связана с её многочисленными достоинствами и многогранностью применения [7]:
- нет необходимости в использовании очков, как в других методах;
- появление новых моделей 3D дисплеев и способов трёхмерной проекции;
- во многих случаях трёхмерное изображение зрители могут наблюдать с любого ракурса;
- использование голограмм для шифрования изображений при передаче по каналам связи, создания защиты для денежных купюр (намного более совершенной, чем применяемая сейчас);
- часть голограммы (сохранившуюся при потере информации при её передаче) можно использовать для восстановления полного изображения, хотя и в худшем качестве;
- развитие новых способов объёмной визуализации параметров физических процессов (например, изменения температуры), исследования микрообъектов с помощью голографических интерферометров и микроскопов;
- возможность показа динамического высококачественного 3D изображения в киноиндустрии будущего, хотя уже и сейчас подобные технологии активно развиваются и демонстрируются;
- возможность «сжатия» голографической картинки, подобно тому, как это делается для обычных 2D изображений, представленных в цифровом виде.
Голография чаще всего подразумевает определённое шифрование образа 3D объекта в виде графического 2D изображения. Затем это изображение может быть использовано для восстановления исходной 3D картины. Для реализации процесса шифрования необходимо сохранять как амплитудную 2D характеристику отражённого от объекта света (что осуществляется и с помощью традиционного фотографирования с определённого ракурса), так и фазовую (это даёт возможность «рассматривания» объекта с любого ракурса). Данные операции обычно выполняются с помощью использования специально спроектированных приборов [2].
Целью данной работы являлась разработка кода программы на свободно распространяемом языке Python [10], с применением появившихся в последнее время специальных библиотек функций, позволяющих моделировать процессы создания, преобразования и оценки качества созданных голографических изображений численными методами (такие голограммы называют цифровыми).
Код используемых библиотек функций является очень сложным, и разрабатывался на протяжении нескольких лет. Далее следует рассмотреть пример применения созданной авторами программы.
Материал и методы исследования
Как было сказано выше, для создания голограммы необходимо отдельно создать амплитудное и фазовое изображение объекта. В дальнейшем эти изображения можно объединить с помощью определённой функции в одну картинку (которую и называют цифровой голограммой). Проще всего рассмотреть набор модулей и функций, применяемых для шифрования (создания 2D голограммы) и расшифровки (восстановления исходного 3D изображения), а также сам код программы на языке Python, написанный авторами для реализации данных приёмов. Основной программной библиотекой, благодаря которой в данной работе реализована работа с голограммами, является последняя версия модуля LiberTEM [14].
Вначале приведём последовательное описание кода программы, одновременно рассматривая модули для работы с голограммами:
1. Подключение следующих модулей: Numpy [11] - для работы с массивами данных (например, со значениями пикселей изображения); Matplotlib.pyplot [4] - для вывода качественной 2D графики на экран компьютера или в файл.
2. Подключение некоторых функций из библиотек: Axes3D из Mpl_toolkits.mplot3d - для создания графики в трёхмерной системе координат; Image из PIL [12] - для преобразования массива значений точек в изображение; utils.generate.hologram_frame из LiberTEM - для создания голограмм.
3. Визуализация исследуемого объекта с помощью создания 3D системы координат (сетки) и задания зависимости значений функции Z, откладываемой по вертикальной оси координат, от значений X и Y (количеством 256х256), после чего в узлах сетки вычисляются координаты точек Z(X,Y). Точки с вычисленными координатами помещаются в соответствующие узлы трёхмерной сетки; путём их соединения создаётся поверхность. В статье будет
рассматриваться пример получения голограммы для вертикального цилиндра, изображённого на рис. 1. Координата Z для него равна 1 при выполнении условия
^ - 33)2 + (У - 103)2 < 202. Если условие не выполняется, то Z=0.
Рис. 1. Исследуемый трёхмерный объект
4. Для тех же X и Y, что и в п. 3, производится вычисление массивов фаз и амплитуд для «сигнала» - исходного трёхмерного изображения, по методике, приведённой в [13], исходя из описывающей цилиндр формулы, с заполнением соответствующих массивов numpy. Из массивов с помощью средств библиотеки Matplotlib.pyplot формируются картины фаз и амплитуд, выводимые на экран.
5. С помощью подключённой в п. 2 функции hologram_frame из модуля LiberTEM по массивам фаз и амплитуд создаётся двухмерное изображение голограммы, которое записывается в графический файл.
6. Последующие операции выполняются для восстановления картин фаз и амплитуд из созданной голограммы с целью проверки качества разработанной методики и работы модуля LiberTEM. Количество операций для восстановления голограммы значительно превышает количество действий, необходимых для её создания. Вначале из массивов фаз и амплитуд получают массивы, заполненные единицами для амплитуд и нулями для фаз (так называемые, референсные), но имеющие ту же размерность, что и первоначальные.
7. Подключение ряда дополнительных функций из модуля LiberTEM: MemoryDataSet из подмодуля libertem.io.dataset.memory; HoloReconstructUDF из подмодуля libertem.udf.holography; InlineJobExecutor из модмодуля libertem.executor.inline, а также подмодуля libertem.api.
8. Для обработки референсных массивов используется функция быстрого преобразования Фурье (FFT) из модуля Numpy [5] - таким образом определяется так называемая боковая полоса частот модуляции несущего колебания [6] (одна из операций, применяемых наряду с многими другими для дешифровки амплитудно-фазовых голограмм).
9. Производится восстановление массивов фаз и амплитуд, а также их визуализация, подобно тому, как это реализовано в п. 4.
Пример расчёта
В качестве примера рассмотрим промежуточные результаты обработки трёхмерного изображения цилиндра, представленного на рис. 1.
Результатами выполнения п. 4 кода созданной программы являются выведенные на экран компьютера картины амплитуд и фаз «сигнала» -обработанного изображения (рис. 2).
Амплитуда
Фаза
Л
Рис. 2. Амплитуды и фазы, вычисленные для формирования голограммы
На следующем рисунке представлена голограмма, сформированная с помощью функций библиотеки LiberTEM и созданных массивов фаз и амплитуд обработанного изображения цилиндра - в результате выполнения п. 5 алгоритма программы (рис. 3).
Рис. 3. Голографическое 2D изображение трёхмерного объекта, представленного на рис. 1
Как видно из рисунка, голограмма нисколько не похожа на первоначальное изображение 3D объекта и представляется хаотичным сочетанием пикселей со случайными цветами. Помимо этого, заметны вертикальные интерференционные полосы. Благодаря такому несоответствию
голографического и исходного изображения применяемый метод преобразования может с успехом применяться для шифрования визуальных данных.
Далее посмотрим на результаты восстановления первоначальных картин амплитуд и фаз с помощью того же модуля LiberTEM. Следующий рисунок (рис. 4) содержит результат быстрого преобразования Фурье для осуществления промежуточной операции восстановления (определения боковой полосы частот модуляции несущего колебания - п. 8 программы).
Рис. 4. Результат применения быстрого преобразования Фурье для определения боковой
полосы частот модуляции
На рис. 5 представлены исходная картина амплитуды исследуемого изображения, а также восстановленная программой и отфильтрованная картины.
Рис. 5. Сравнение исходной картины амплитуды исследуемого изображения, а также
результаты её восстановления
На восстановленной картине амплитуды отчётливо видны артефакты в виде серых полос, являющиеся результатом применения цифрового преобразования Фурье. Данный факт является недостатком применяемого метода восстановления, однако при большом разрешении изображения он становится несущественным. В рассматриваемом же примере для уменьшения искажения амплитудной характеристики в программу дополнительно включён улучшающий картину модуль преобразования gaussian_Шter из библиотеки scipy.ndimage.filters, представляющий из себя фильтр Гаусса [1], улучшающий качество двухмерных изображений.
И наконец, на рис. 6 изображены исходная и восстановленная картина фазы сигнала формирования изображения.
Рис. 6. Сравнение исходной картины фазы сигнала формирования изображения, а также
результаты её восстановления
В данном случае результаты восстановления картины фазы достаточно близки к оригинальному её изображению, а в случае использования большего разрешения исходной графики и вовсе будут незаметны.
Заключение
Таким образом, цель описываемой работы достигнута: проанализированы достоинства и дальнейшие перспективы использования описанного вида цифрового кодирования 3D изображений (представления их в виде 2D голограмм).
Разработана программа на языке Python, позволяющая создавать цифровые голограммы простого трёхмерного изображения, описываемого в виде одного уравнения. При этом применена актуальная, и для данного процесса шифрования достаточно простая в применении библиотека LiberTEM, позволяющая продемонстрировать основные принципы цифровой голографии с помощью вывода наглядных изображений, отображающих стадии процесса преобразования. Также показаны и некоторые ограничения метода (искажения, возникающие при восстановлении объектов с низким разрешением при оцифровке), которые по мере его развития будут устранены.
Следует отметить, что кроме рассмотренной библиотеки функций для работы с голограммами, уже существуют и другие, более развитые, методы, однако не дающие такой наглядности и общего понимания происходящих при этом процессов, особенно для не специалистов в данной отрасли. Поэтому помимо вышеописанных целей, данная статья ставит задачу популяризации современных технологий среди широкого круга читателей, так как разработанную и описанную программу можно с успехом применять для обучения основам голографического кодирования и декодирования изображений [8].
Библиографический список:
1. Шелехин П.В., Чесалин П.Ю. Структура хранения 3D информации в
ЭВМ. // В сборнике: Методы и средства обработки и хранения информации: Межвузовский сборник научных трудов. Москва, 2017. С. 67-69.
2. Демин В.В., Козлова А.С. Методы определения координат частиц по их цифровым голографическим изображениям. // Известия высших учебных заведений. Физика. 2010. Т. 53. № 9-3. С. 35-37.
3. Моисеев А.Ю., Бурякова О.С., Морозова Н.И. Современные технологии объемных трехмерных изображений. // В сборнике: Научная весна-2019: Экономические науки. Институт сферы обслуживания и предпринимательства (филиал) Донского государственного технического университета. 2019. С. 94-99.
4. Белкин Е.А., Поярков В.Н., Марков О.И. Установка для неразрушающего голографического 3D-контроля. // Приборы и системы. Управление, контроль, диагностика. 2016. № 3. С. 27-32.
5. Ilyichev V.Yu. Development of a program for Lorentz attractor research and its use. // The Complex Systems. 2021. № 1 (11). С. 58-64.
6. Off-axis electron holography. [Электронный ресурс]. URL: https://libertem.github.io/LiberTEM/app/holography.html (Дата обращения 18.01.2022).
7. Ilichev V.Y. Development of program for determination of fractal dimensions of images. // International Research Journal. 2021. № 4-1 (106). С. 6-10.
8. Ильичев В.Ю., Качурин А.В. Создание программ на языке Python для исследования множества Мандельброта. // E-Scio. 2021. № 5 (56). С. 362-371.
9. Ilichev V.Y. Creation of software for research of Rossler attractor. // International Journal of Humanities and Natural Sciences. 2021. № 5-1 (56). С. 3135.
10. Lichte and H., Lehmann M. Electron holography-basics and applications. Rep. Prog. Phys., 71:016102, 2008. doi:10.1088/0034-4885/71/1/016102.
11. Ильичев В.Ю. Гармонический анализ сложного сигнала колебаний газотурбинного электроагрегата. // Заметки ученого. 2021. № 12-2. С. 82-86.
12. Литюк Л.В., Литюк В.И., Бейко С.А. О слежении за частотой сигнала в информационных системах со сложными сигналами второго порядка. // Известия высших учебных заведений России. Радиоэлектроника. 2010. № 2. С. 23-30.
13. Авилова А.Д., Беляев Р.В. Фильтр Гаусса. // В сборнике: Информатика: проблемы, методология, технологии. сборник материалов XVIII международной научно-методической конференции: в 7 т.. Под редакцией Тюкачева Н.А., Воронежский государственный университет. 2018. С. 3-5.
14. Тимофеев А.Л., Султанов А.Х. Спектральное голографическое кодирование. // В книге: V Научный форум телекоммуникации: теория и технологии ТТТ-2021. Материалы XXIII Международной научно-технической конференции. Самара, 2021. С. 10-14.