Skip to content

zenytsa/space_images

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Реконструкция изображений с плоского дифракционного объектива космического базирования

1 Немного истории

Камера обскура - первый девайс для получения изображений

Опыт использования различных устройств для создания реальных изображений нашего мира уходит очень далеко. Камера обскура – самое простое, но от этого не менее интересное устройство. Считают, его использовали некоторые художники для создания фотореалистичных картин еще в 15 веке. Процесс такой работы показан на рисунке 1.1.

Рисунок 1.1 – Камера обскура

Часто приводят в качестве примера картину голландского художника Яна ван Эйка «Портрет четы Арнольфини» (1434 г.). Мы его тоже приведем на рисунке 1.2. Очень знакомые лица.

Рисунок 1.2 – Картина Яна ван Эйка «Портрет четы Арнольфини» (1434 г.)

Для своего времени эта картина отличалась невероятной детализацией. Зеркало, в котором отражается вся комната, и металлический канделябр сложной формы часто печатаются отдельными фрагментами как доказательство виртуозности мастера. Посмотрите на рисунок 1.3. Зеркало выпуклое, блики на элементах показывают, что они покрыты лаком. Четки из стекла. Такая реалистичность достигается точнейшей передачей цвета и светотени. Но на глаз сделать такую работу почти невозможно, так как блики меняются, стоит лишь двинуть головой или перевести взгляд.

Рисунок 1.3 – Фрагмент картины с очень высокой детализацией изображения

Стеклянные линзы и первые фотоаппараты

С появлением стеклянных линз стало все гораздо интереснее… и сложнее. Фотография завладела умами многих энтузиастов. На рисунке 1.4 показана схема и внешний вид одного из самых ранних фотоаппаратов. Принцип работы точно такой же как и у «камера обскура». В чем преимущество линзой над отверстием камеры обскура? Попадает больше света, а именно он нужен для химической реакции, которая позволяет регистрировать изображение на носителе.

Рисунок 1.4 – Простейший фотоаппарат с однолинзовым объективом

Первые фотографии были далеки от идеала. Требовали большого времени регистрации изображения из-за несовершенства технологии. Но постоянная работа огромного количества людей над увлекательной задачей фотографирования давала свои плоды. Процесс стал быстрее, качество изображений росло. На рисунке 1.5 представлены две известные фотографии. Изображение, снятое Жозефом Нисефором Ньепсом и известное как «Вид из окна в Ле Гра», было создано в 1826 году с помощью камеры-обскуры (даже пока без использования линзы) на пластинке, покрытой тонким слоем битума. На втором изображении реконструкция и оригинал первого селфи за авторством Роберта Корнелиуса. Вот он уже точно использовал фотоаппарат с линзовым объективом. 1839 год.

Рисунок 1.5 – Самые первые: первая фотография вообще и первый фотопортрет

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

Рисунок 1.6 – Фотографии сделанные Прокудиным-Горским: восстановление из трех фото одного цветного и восстановленная фотография Эмира Бухарского (1911 г.)

Современные объективы

Как и любая технология, объективы фотоаппаратов стали развиваться, усложняться и эволюционировать. Теперь это могут быть очень сложные, тяжелые и дорогие устройства, способные прекрасно решать возложенную на них задачу – собирать нужное количество света и фокусировать его в нужное место. На рисунке 1.7 показан один из современных объективов в разрезе и один из самых (но не самый) тяжелых серийных телеобъективов.

Рисунок 1.7 – Современные фотообъективы. Разрез объектива. Телеобъектив

И даже объективы в мобильных устройствах являются вершиной технологий. Они маленькие и сложные. На рисунке 1.8 показано из скольких элементов может состоять объектив мобильной камеры.

Рисунок 1.8 – Мобильное фото. Из чего состоит камера мобильного телефона

Дифракционная оптика

Несколько десятилетий назад с появлением серьезной вычислительной техники появилась возможность рассчитывать поведение света при прохождении через сложные поверхности на прозрачных элементах. Так началась история дифракционной оптики. На рисунке 1.9 примерный вид получаемого элемента.

Рисунок 1.9 – Дифракционный элемент

Эти сложные поверхности могут преломлять свет так, как нужно нам. При этом высота рельефа может быть всего 10 мкм. Значит, мы можем создать дифракционный элемент, который будет работать как линза и быть при этом очень тонким (и легким). Хм… Плоская линза. Где-то это уже было. Действительно, есть линза Френеля (рисунок 1.10). Дифракционная линза по своей идее очень похожа на линзу Френеля, только тоньше, точнее, НАМНОГО тоньше! На рисунке видно как на круглом стекле нанесены «окружности». Эти окружности высотой всего несколько микрометров. Они и есть наша линза. Если захотеть можно такой элемент создать на очень тонком стекле или даже на плёнке.

Рисунок 1.10 – Линза Френеля. Рельеф дифракционной линзы

Итак, у нас есть линза. Но работает она не совсем так как привычные нам стеклянные линзы. Из-за того, что все происходит на поверхностях с очень низким, сравнимым с длиной волны света рельефом, начинают проявляться другие эффекты.

  1. Дифракционный оптический элемент (ДОЭ) рассчитывается для точного значения длины волны. Так, например, для лазерного излучения, которое имеет одну длину волны, дифракционная линза работает идеально — фокусирует такой пучок в нужной точке пространства. Но видимый свет включает в себя множество длин волн. Можно представить обычный свет, отраженный от какого-то предмета, как множество лазерных пучков, каждый из которых обладает своей длиной волны и своей интенсивностью. Многие из вас и так поняли, что речь идет о спектре света. Так вот, дифракционная линза будет каждый пучок, отличающийся по длине волны от расчётного, фокусировать немного в другое место, ближе к линзе или дальше. При этом на изображении, которое мы получаем дифракционной линзой каждая точка будет выглядеть как немного размытое пятно. И сила такого размытия неодинакова и зависит от спектра света.

  2. Кроме этого, есть эффект, выглядящий на изображениях как ореол, накладывающийся на другие объекты. Этот ореол обусловлен перераспределением энергии при фокусировке.

На рисунке 1.11 один пример изображения, снятого на дифракционную линзу. На рисунке 1.12 изображение, полученное через обычный объектив, с более близкого расстояния и с другого ракурса.

Рисунок 1.11 – Изображение, полученное плоским дифракционным объективом

Рисунок 1.12 – Сцена снятая обычным фотоаппаратом

И тут возникает вопрос, а как же бороться с такими искажениями? Неужели не получится заменить обычную толстую линзу на дифракционную? Можно сделать такое изображение полезным, хотя бы буквы различить? Можно! На рисунке 1.13 пример того, что можно вытащить из снимка.

Рисунок 1.13 – Результат реконструкции изображения, полученного дифракционным объективом

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

2. Применение дифракционной оптики на спутнике

Чтобы проверить, как работает наш объектив, нам нужен был спутник. Такой спутник решили запустить ребята из Высшей Школы Экономики. Спутник в формате CubeSat 3U обладает небольшими размерами 10×10×30 см, но нам много места пока и не было нужно. Был разработан и изготовлен корпус для нашего объектива методом трехмерной печати из порошкового металла (рисунок 2.1).

Рисунок 2.1 - Корпус объектива

В корпус мы установили дифракционную линзу и цифровую матрицу, и команда из ВШЭ поместили корпус в спутник (рисунок 2.2).

Рисунок 2.2 - Спутник CubeSat 3U

21 марта 2021 года спутник был успешно выведен на расчетную орбиту и началась работа. Настройка режимов съемки, передача на Землю несжатых изображений, работа по улучшению изображений, анализ ошибок и переобучение нейронных сетей. Работа и сейчас ведется постоянно. На рисунке 2.3 первое несжатое полноразмерное изображение с нашего объектива, которое мы получили и с которым начали работать.

Рисунок 2.3 - Фрагмент изображения, полученного плоским дифракционным объективом

Задача, которую мы решаем — получить изображение с разрешающей способностью на поверхности не хуже 100 метров на 1 пиксель. А какими способами можно улучшить полученные снимки мы подробно опишем дальше. Это можно сделать при помощи графического редактора, можно использовать программную реконструкцию, или использовать нейронные сети.

3 Улучшение изображений в графических редакторах

Давайте посмотрим на исходное изображение на рисунке 3.1.

Рисунок 3.1 – Исходное изображение

На изображении часть побережья. Что же с ним не так? Изображение недостаточно контрастно и довольно сильно размыто. Всё, как мы любим! Повысить резкость и увеличить контраст можно с помощью графических редакторов (Gimp, Photoshop). Все графические редакторы предоставляют неплохой набор инструментов. Возьмём Adobe Photoshop просто для примера. Попробуем поработать с контрастностью. Глазу приятнее, когда изображение сбалансировано по свету, присутствуют и темные и светлые части. Для начала нужно выровнять гистограмму изображения. За это отвечает инструмент Кривые (Изображение → Коррекция → Кривые) рисунок 3.2.

Рисунок 3.2 – Инструмент Кривые

Выравниваем гистограмму и делаем S-кривую с небольшой кривизной, для этого нам хватит всего четырёх точек. Две точки зафиксируют места, где на изображении уже нет информации — самые яркие (левая часть гистограммы) и самые тёмные (правая часть гистограммы). Самая левая поставленная на кривой точка у нас отвечает за белый цвет, самая правая за черный. Две внутренние точки задают цвета которые на изображении будут наиболее различимыми. На рисунке 3.3 показано, как такие изменения влияют на изображение.

Рисунок 3.3 Изменение изображения за счет выравнивания гистограммы

Стало гораздо приятнее глазу. Но осталось то, что заметно портит ощущение от изображения — шум, мелкие частые точки, похожие на пыль. Для устранения высокочастотного шума (а мелкие частые точки это именно такой шум) применяем размытие по Гауссу (Фильтр → Размытие → Размытие по Гауссу...) с радиусом 1,6 пикселей. При этом все будет выглядеть, как на рисунке 3.4.

Рисунок 3.4 – Размытие против шума

Теперь было бы неплохо увеличить чёткость (она же резкость) границ предметов на изображении. Инструментом Контурная резкость (Фильтр → Усиление резкости → Контурная резкость...) повышаем резкость на границах светлых и тёмных участков (рисунок 3.5).

Рисунок 3.5 - Улучшение резкости границ

А теперь посмотрим, что было в самом начале и что получилось в результате (рисунок 3.6). Необходимо убедиться, что важная информация сохранилась. При неудовлетворительном результате нужно подобрать чуть другие параметры фильтров.

Рисунок 3.6 – Сравнение исходного изображения и результата

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

4 Программная реконструкция изображений — подавление шума

Приведенные в разделе 3 базовые методы цветовой коррекции выполнены вручную в специальной программе обработки растровых изображений. Здесь мы разберём, как похожие операции выполнить используя Python, библиотеки NumPy, Matplotlib и OpenCV. Обработку по шагам можно выполнить онлайн на платформе Google Colaboratory, используя прилагаемый блокнот (python notebook). Удобство работы с кодом на Python в Google Colaboratory заключается в том, что для работы вам даже не нужно устанавливать Python на свой компьютер. Тоже самое вы можете сделать на своём компьютере, сохранив блокнот в формате *.ipnb на локальный диск и запустив Jupyter notebook на вашем компьютере.

В блокноте Python notebook в Google Colaboratory приведен код и краткое описание шагов выполнения. Далее будут приведены ссылки на конкретные секции блокнота. Перейдем непосредственно к обработке изображений на Python.

На исходном изображении присутствует высокочастотный шум, который желательно отфильтровать перед тем как приступить к восстановлению изображения. Алгоритм фильтрации шумов описан в работе [1]. В данном алгоритме используется два настраиваемых параметра: параметр регуляризации λ∈[0,1] и количество итераций iter_count. При λ=0 алгоритм шумоподавления сглаживает шумы сильнее, выравнивая текстурную составляющую изображения, пренебрегая контурной. При λ=1 алгоритм шумоподавления сглаживает шумы слабее, но при этом сохраняет контуры на изображении. Количество итераций влияет на точность получаемого результата. В начальном приближении рекомендуется установить следующие значения: λ=0.5,iter_count=300. Варьирование данных параметров позволит получить результат обработки, в котором будет найден компромисс между сглаживанием текстурной и сохранением контурной информации на зашумленном изображении.

Код для запуска модуля шумоподавления приведен здесь.

На рисунке 4.1 изображены примеры фильтрации шумов с параметрами λ=0.8,iter_count=300 и λ=0.2,iter_count=300. На рисунке 4.2 приведены увеличенные фрагменты.

Рисунок 4.1 – Демонстрация работы алгоритма шумоподавления, слева направо:
результат обработки с параметрами λ=0.8,iter_count=300,
исходное изображение без обработки,
результат обработки с параметрами λ=0.2,iter_count=300

Рисунок 4.2 – Демонстрация работы алгоритма шумоподавления (увеличенные фрагменты), слева направо:
результат обработки с параметрами λ=0.8,iter_count=300,
исходное изображение без обработки,
результат обработки с параметрами λ=0.2,iter_count=300

На рисунке 4.2 видно, что в случае выбора параметра λ=0.8 шум немного сгладился, но тем не менее его присутствие видно невооруженным взглядом. Контуры очертания материка не пострадали. На изображении, обработанным алгоритмом с заданным параметром λ=0.2, от шумов не осталось и следа, однако, очертания суши значительно “смягчились”.

5 Программная реконструкция изображений — цветовая коррекция

Работа с гистограммой цветного изображения позволяет существенно улучшить цветовой контраст изображения и его визуальное восприятие. Растянутая по всему диапазону гистограмма дает более высокое визуальное качество изображения, однако график гистограммы получается более рваный. Такая «рваная» гистограмма приводит к так называемому эффекту постеризации изображения (вырождения детальности изображения), особенно сильно проявляющемуся после нейросетевой обработки или повышения чёткости изображения. Пример такой постеризации приведён ниже.

Рисунок 5.1 – Пример постеризации изображения. Информация о мелких деталях утеряна

С учетом сказанного, предпочтительным результатом обработки является сдвиг гистограммы влево с растяжением, при этом получается компромиссный вариант по улучшению цвета изображения (рисунок 5.2) с минимальным эффектом постеризации, результат приведен на рисунке 5.3.

Рисунок 5.2 – Исходное изображение после обработки алгоритмом шумоподавления

Рисунок 5.3 – Результат сдвига гистограммы влево с растяжением

Код для запуска модуля цветовой коррекции приведен здесь.

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

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

  • Классический — применение цветовой коррекции и обратной свёртки для повышения чёткости изображения;
  • Нейросетевой подход — применение предварительно обученной свёрточной нейронной сети. В данном разделе рассмотрим применение метода обратной свёртки на основе метода минимизации полной вариации [2]. Предлагаемый подход основан на следующих этапах:
  • идентификация ядра размытия — функции размытия точки;
  • реализация обратной свёртки на основе метода минимизации полной вариации. Получение оценки ядра размытия основано на сравнении получаемого снимка калибровочного изображения и его четкого оригинала (рисунок 6.1). Изображение калибровочной шкалы содержит белый шум, равномерное распределение интенсивностей от 0 до 255.

Рисунок 6.1 – Шкала идентификации функции размытия точки

Идентификация функции размытия точки осуществлялась в лаборатории перед отправкой объектива в космос. Перед применением обратной свертки с рассчитанным ядром смаза осуществляется цветовая коррекция изображения с использованием трехмерных таблиц поиска (3D LUT). Для вычисления параметров цветовой коррекции так же использовались калибровочные цветовые шкалы. Пример такой шкалы приведён на рисунке 6.2.

Рисунок 6.2 – Цветовая калибровочная шкала

Результат применения цветовой коррекции с использованием 3D LUT и алгоритма обратной свёртки приведён на рисунке 6.3.

Рисунок 6.3 – Результат обработки алгоритмом обратной свертки

Код для запуска модуля реконструкции с использованием обратной свертки приведен здесь.

7 Нейросетевая реконструкция изображений

В данном разделе приведён пример восстановления качества изображения с помощью нейронной сети U-Net. Архитектура сети и процедура обучения описаны в работе [3]. Нейросетевая реконструкция изображений относится к области вычислительной фотографии. Ознакомление с данной темой рекомендуется начать со статьи [4]. На рисунке 7.1 представлено наше исходное изображение, полученное плоским дифракционным объективом и поступающее на вход нейросети.

Рисунок 7.1 – Пример изображения, полученного плоским дифракционным объективом

Перед обработкой нейронной сетью U-Net предлагается устранить высокочастотный шум на основе алгоритма, описанного в разделе 4 (рисунок 7.2). Также после подавления шума предлагается сдвинуть гистограмму изображения влево с растяжением (рисунок 7.3). Процедура описана в разделе 5. Результирующее изображение подается на вход нейронной сети. На рисунке 7.4 представлен результат нейросетевой реконструкции.

Рисунок 7.2 – Результат шумоподавления (λ=0.2,iter_count=1200)

Рисунок 7.3 – Результат сдвига гистограммы влево с растяжением

Рисунок 7.4 - Результат нейросетевой реконструкции

Код для запуска модуля реконструкции с использованием нейронной сети приведен здесь.

Список литературы

  1. Nikonorov, A. Vessel segmentation for noisy CT data with quality measure based on single-point contrast-to-noise ratio / A. Nikonorov, A. Kolsanov, M. Petrov, Y. Yuzifovich, E. Prilepin, S. Chaplygin, P. Zelter, K. Bychenkov // Communications in Computer and Information Science. – 2016. – V. 585. – P. 490-507.
  2. Heide, F. High-Quality Computational Imaging Through Simple Lenses / F. Heide, M. Rouf, M. B. Hullin et. al. // ACM Transactions on Graphics (TOG). – 2013. – Vol. 32, Iss. 5, No. 149.
  3. Евдокимова, В.В. Нейросетевая реконструкция видеопотока в дифракционных оптических системах массового производства / В.В. Евдокимова, М.В. Петров, М.А. Клюева, Е.Ю. Зыбин, В.В. Косьянчук, И.Б. Мищенко, В.М. Новиков, Н.И. Сельвесюк, Е.И. Ершов, Н.А. Ивлиев, Р.В. Скиданов, Н.Л. Казанский, А.В. Никоноров // Компьютерная оптика. – 2021. – Т. 45, № 1. – С. 130-141. – DOI: 10.18287/2412-6179-CO-834.
  4. https://vas3k.ru/blog/computational_photography/

About

Images captured from LEO

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published