Программное обеспечение для формирования фантомных изображений. Включает в себя модули:
gi.experiment
-- формирование фантомных изображений из экспериментальных данныхgi.emulation
-- эмуляция экспериментов по формированию фантомных изображений, в т.ч. в волоконной фантомной оптикеgi.slm
-- эмуляция фазовой и амплитудной модуляции излучения с помощью SLM и DMD
ПО на уровне интерфейсов совместимо с библиотекой быстрого расчета распространения полей lightprop2d
и библиотекой расчета мод в многомодовых волокнах pyMMF
.
gi.experiment
и gi.emulation
поддерживают вычисления на CPU с помощью numpy
и на GPU с помощью cupy
.
При больших объёмах данных используется dask.array
для предотвращения утечек памяти и ускорения вычислений.
Исследование выполнено за счет гранта Российского научного фонда (проект № 21-12-00155).
Публичные атрибуты классов GIEmulator
и GIExpDataProcessor
делятся на 4 категории по размерности возвращаемых значений:
- Трехмерные массивы
numpy
:xycorr_widths_data
:(2, self.Nx if nx is None else nx, self.Ny if ny is None else ny)
, гдеnx,ny
-- аргументы методаcalculate_xycorr_widths
. - Двухмерные массивы
numpy
:g2_data,ghost_data,contrast_data
:(self.Nx, self.Ny)
;xycorr_data
:(self.Nx, self.Ny) if window_points is None else (window_points,)*2
, гдеwindow_points
-- аргумент методаcalculate_xycorr
. - Одномерные массивы
numpy
:timecorr_data
:(self.settings.TCPOINTS if tcpoints is None else tcpoints)
, гдеtcpoints
-- аргумент методаcalculate_timecorr
;xycorr_width
:(2,)
. - Числа типа
float
:g2,contrast,timecorr_width
.
Возвращаемые значения имеют следующий смысл:
ghost_data
-- фантомное изображение объектаxycorr_data
-- пространственная корреляционная функция интенсивности в референсном каналеxycorr_width
-- ширина пространственной корреляционной функции интенсивности в референсном канале по двум координатамxycorr_widths_data
-- попиксельное значение ширины пространственной корреляционной функции интенсивности в референсном каналеg2_data
-- попиксельное значение второго нормированного момента интенсивностиg2
, характеризующего дисперсию данныхg2
-- среднее значениеg2
по изображению, либо в центре изображения, еслиxycorr_widths_data
не рассчитываласьcontrast_data
-- попиксельный контраст фантомного изображения объектаcontrast
-- среднее значение контрастаtimecorr_data
-- временная корреляционная функция изображенийtimecorr_width
-- ширина временной корреляционной функции
Классы GIEmulator
и GIExpDataProcessor
позволяют ускорять вычисления, используя вычисления на GPU с помощью cupy
.
Для этого переопределяется self.backend
-- бэкенд вычислений, который определяет типы массивов ref_data,obj_data
.
Использование GPU для расчета фантомных изображений регулируется ключом use_cupy
: если True
, то self.backend = cupy
и self.ref_data,self.obj_data
являются массивами cupy.ndarray
.
По умолчанию use_cupy=False
, self.backend = numpy
и self.ref_data,self.obj_data
-- массивы numpy.ndarray
.
В классе GIEmulator
есть дополнительный управляющий флаг use_gpu
, аналогичным способом управляющий типом массивов при эмуляции фантомных изображений с помощью класса lightprop2d.Beam2D
.
Если use_cupy=True
, то автоматически use_gpu=True
для уменьшения накладных расходов на преобразование данных.
При обработке больших объемов данных могут возникать утечки памяти.
Для избежания их используются оркестрированные локальные вычисления с помощью Dask
с разделением self.ref_data
на блоки и последующим ленивым вычислением результатов.
Активирует оркестрацию флаг use_dask
: если True
, то self.ref_data
является массивом dask.array.Array
, по умолчанию use_dask=False
и self.ref_data
-- массивы self.backend.ndarray
.
Класс GIEmulator
позволяет эмулировать процесс расчета фантомного изображения на основе экспериментальных спекл-картин.
Для использования этой процедуры необходимо задать следующие аргументы конструктора:
use_expdata=True
expdata_dir="Путь к папке изображений абсолютный или относительно текущей папки"
.expdata_crop=(low_y, high_y, low_x, high_x)
Координаты углов для обрезки изображения.img_prefix
Постоянная часть имени файлов для фильтрации изображений в папке.