Получение цифровой Фурье-голограммы изображения. Восстановление голограммы по известному ключу

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 12:36, 1 июня 2017.
Open book.svg Авторство
В.О. Чесноков
Согласовано: 2011

Описание задачи

Решаемая задача

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

Выполнение поставленной задачи

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

Исходные и выходные данные

Исходные данные

Исходные данные проекта состоят из трех примеров сообщений:

  • sample1.bmp
  • sample2.bmp
  • sample3.bmp

При желании выбрать другое изображение необходимо в строчке

Image := READBMP("sample2.bmp")

заменить «sample2.bmp» на название соответствующего файла. Рекомендуется в качестве исходных данных использовать черно-белые изображения не очень большого размера, чтобы Mathcad производил вычисления за разумное время.

Выходные данные

Выходные данные проекта – файл output.bmp. Он содержит восстановленное из голограммы исходное изображение.

Результаты выходных данных можно посмотреть в файлах

  • output1.bmp
  • output2.bmp
  • output3.bmp

Каждый файл – восстановленное из голограммы Фурье изображение из файлов sample1.bmp, sample2.bmp, sample3.bmp соответственно.

Решение задачи

Получить цифровую Фурье-голограмму изображения

Загружаем исходное изображение из файла:

Image := READBMP("sample2.bmp")

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

Height := rows(Image) * 2 Width := cols(Image) * 2

В данном случае Height и Width равны 256.

Задаем угол θ, кототрый будет являться ключом для восстановления голограммы:

θ := 0.5

Выбираем фазу опорного пучка излучения:

φ := 0.5

Дополняем изображение нулями справа и снизу, приводим яркость пикселей к значению в диапазоне от 0 до 1:

OiRS Chesnokov holo signal ij.png

Делаем преобразование Фурье для полученного сигнала:

F := cfft(Signal)

Подсвечиваем тест-объект пучком когеретного излучения, избавляясь от эффекта близнецов:

OiRS Chesnokov holo F lighted ij.png

Интерфереционная картина, образуемая в плоскости регистрации голограммы, описывается выражением:

OiRS Chesnokov holo I ij.png
OiRS Chesnokov holo I.png

Квадратичный «фоторегистратор» записывает распределение контраста в виде:

OiRS Chesnokov holo Hologram ij.png
Hologram =
0 1 2 3 4 5 6 7 8
0 0.944 0.957 0.984 1.007 1.013 1.013 1.019 1.027 1.023
1 0.966 0.995 1.013 1.014 1.011 1.016 1.022 1.017 1.005
2 1.006 1.016 1.012 1.008 1.013 1.020 1.016 1.005 1.003
3 1.019 1.009 1.005 1.014 1.023 1.020 1.010 1.009 1.019
4 1.010 1.006 1.019 1.031 1.028 1.016 1.013 1.021 1.019
5 1.011 1.026 1.038 1.033 1.017 1.009 1.014 1.010 0.987
6 1.031 1.041 1.030 1.008 0.997 0.999 0.997 0.976 0.955
7 1.035 1.019 0.992 0.979 0.983 0.986 0.971 0.954 0.961
8 1.003 0.975 0.964 0.974 0.984 0.977 0.964 0.971 1.000
9 0.965 0.960 0.977 0.994 0.994 0.983 0.986 1.009 1.028
10 0.968 0.990 1.012 1.014 1.001 0.996 1.010 1.026 1.022
11 1.006 1.027 1.026 1.009 0.996 1.001 1.014 1.014 1.000
12 1.030 1.025 1.004 0.986 0.986 0.998 1.003 0.997 0.991
13 1.011 0.990 0.974 0.973 0.987 0.999 1.000 0.996 0.997
14 0.977 0.968 0.971 0.987 1.003 1.009 1.006 1.003 1.006
15 0.973 0.982 0.997 1.013 1.020 1.014 1.007 1.005 ...
OiRS Chesnokov holo Hologram.png

Линии уровня (Contour Plot) для голограмы:

OiRS Chesnokov holo Hologram Contour Plot.png

На этом завершается получение Фурье-голограммы.

Восстановить голограмму по известному ключу

Для восстановления исходного изображения необходимо знать ключ θ - угол падения опорного виртуального пучка и тип голограммы.

Примем ключ для восстановления равным исходному ключу θ:

θ1 := θ

Подсвечиваем голограмму пучком когерентного излучения и освещаем ее опорным пучком:

OiRS Chesnokov holo H lighted ij.png

Делаем обратное преобразование Фурье:

BF := cfft(H_lighted)

Отражаем получившееся изображение по вертикали и горизонтали:

OiRS Chesnokov holo BFF ij.png

Делаем счетчики до половины изображения по высоте и ширине:

k := 0 .. Height/2 l := 0 .. Width/2

Нормализуем выражение:

OiRS Chesnokov holo BFFn kl.png
OiRS Chesnokov holo BFFn.png

OUTPUT := WRITEBMP("output.bmp", BFFn)

Нетрудно видеть, что полученное изображение соответствует оригиналу с небольшими искажениями.

В результате данной работы была получена Фурье-голограмма черно-белого изображения в формате BMP и произведено ее востановление и сохранение результата в формат BMP. Результаты данного исследования могут быть использованы дальнейших работах микроколлектива, в частности, для решения задачи 3.3: сформировать стегосообщение, представляющее собою контейнер с занесенной цифровой Фурье-голограммой методом LSB.

Изображения

Исходные изображения

Восстановленные голограммы