Способы получения PSF
Итак, возьмем за отправную точки описанный фильтр Винера — вообще говоря, существует множество других подходов, но все они дают примерно одинаковые результаты. Так что все описанное ниже будет справедливо и для остальных методов деконволюции. Основная задача — получить оценку функции распределения точки (PSF). Это можно сделать несколькими способами:1. Моделирование. Очень непросто и трудоемко, т.к. современные объективы состоят из десятка, другого различных линз и оптических элементов, часть из которых имеет асферическую форму, каждый сорт стекла имеет свои уникальные характеристики преломления лучей с той или иной длиной волны. В итоге задача корректного расчета распространение света в такой сложнейшей оптической системе с учетом влияния диафрагмы, переотражений и т.п. становится практически невозможной. И решение ее, пожалуй, доступно только разработчикам современных объективов.2. Непосредственное наблюдение. Вспомним, что PSF — это то, во что превращается каждая точка изображения. Т.е. если мы сформируем черный фон и одну белую точку на нем, а затем сфотографируем это с нужным значением расфокусировки, то мы получим непосредственно вид PSF. Кажется просто, но есть много нюансов и тонкостей.3. Вычисление или косвенное наблюдение. Присмотримся к формуле (1) процесса искажение и подумаем, как можно получить H(u,v)? Решение приходит сразу — нужно иметь исходное F(u,v) и искаженное G(u,v) изображения. Тогда поделив фурье-образ искаженного изображения на фурье-образ исходного изображения мы получим искомую PSF.
Как улучшить четкость фото
Установите Фоторедактор Movavi
Скачайте установочный файл на компьютер и запустите его. Следуйте инструкциям по установке на экране. По окончании установки программа откроется автоматически.
Нажмите кнопку Открыть файл и выберите фото для обработки или просто перетащите картинку в окно программы.
Отредактируйте изображение
Чтобы повысить резкость, перейдите во вкладку Улучшение фото. Передвигайте ползунок Четкость, пока изображение не станет более резким. Потяните вправо ползунок Детали, чтобы выделить текстуру. Эти инструменты помогут уменьшить размытие и смазанность изображения. Помимо повышения резкости, во вкладке Улучшение фото есть еще множество различных инструментов. Используйте их, чтобы увеличить насыщенность изображения, сделать его ярче и контрастнее.
Сохраните отредактированное изображение
Нажмите Сохранить в правом нижнем углу окна программы. Выберите папку и сохраните изображение в нужном формате.
Теперь вы знаете, как убрать размытость на фото и сделать его более четким с помощью Movavi Фоторедактора всего за пару минут! Возможности программы не ограничиваются исправлением качества фото: в ней можно удалять ненужные объекты, заменять фон, добавлять надписи, применять художественные эффекты, делать коллажи и многое другое.
Blurity
Приложение Blurity в отличие от своих конкурентов обладает несколькими особенностями: очень подробным руководством и самодостаточностью. Под самодостаточностью я понимаю способность программы взять на себя тяжелую работу по настройке, если того пожелаете. Если знаете, что делаете, можете получить доступ к продвинутым настройкам, но это совсем необязательно.
После прохождения обучения, можно приступать к обработке. Для этого необходимо поместить красный квадрат на область с сильной размытостью и нажать на кнопку Process. В большинстве случаев на этом всё. Если результаты вас не удовлетворяют, можно переместить квадрат в другую область и попытаться снова. Приложение выполняет свою работу хорошо, ему удалось превратить некоторые размытые фотографии во вполне достойные.
Как видите, минусом являются водяные знаки, которые накладываются на все фотографии, которые вы обрабатываете, используя бесплатную версию приложения. Если вам действительно нравится программа и хотите избавиться от водяных знаков, лицензия будет стоить вам 39$.
- Плюсы: Легкость в использовании, хорошие результаты обработки, с текстом — хуже.
- Минусы: На все обработанные фото накладываются водяные знаки. Лицензия стоит 39$.
PSF — Непосредственное наблюдение
Как уже говорилось выше, необходимо сформировать черный фон и белую точку. Но просто напечатать на принтере одну точку недостаточно. Необходим намного большее отличие в яркости черного фона и белой точки, т.к. одна точка будет размываться по большому кругу — соответственно должна иметь большую яркость, чтобы быть видной после размытия. Для этого я распечатал черный квадрат Малевича (да, тонера много ушло, но чего не сделаешь ради науки!), наложил с другой стороны фольгу, т.к. лист бумаги все же неплохо просвечивает и иголкой проколол маленькую дырочку. Затем соорудил нехитрую конструкцию из 200-ваттной лампы и сэндвича из черного листа и фольги. Выглядело это вот так: Далее включил лампу, закрыл ее листом, выключил общий свет и сделал несколько фоток используя два объектива — китовый Canon EF 18-55 и портретник Canon EF 85mm/1.8. Из получившихся фоток я вырезал PSF и затем построил графики профилей. Вот что получилось для китового объектива: И для портретника Canon EF 85mm/1.8: Хорошо видно как меняется характер боке с жествкого на мягкий для одного и того же объектива в случае переднего и заднего фокуса. Также видно, какую непростую форму имеет PSF — она весьма далека от идеального круга. Для портретника также видны большие хроматические аберрации из-за большой светосилы объектива и малой диафрагмы 1.8. И вот еще пара снимков при диафрагме 14 — на нем видно, как поменялась форма с круга на правильный шестиугольник:
SmartDeblur
SmartDeblur — полностью бесплатное приложение, которым можно пользоваться сколько угодно раз, и во многих отношениях оно дружелюбнее, чем Focus Magic. С другой стороны, его работа не отличается стабильностью (программа зависала несколько, пока я ее тестировал, особенно при загрузке слишком тяжелых изображений), а результаты, которые выдает программа, могут быть разными.
Есть несколько полезных возможностей в SmartDeblur — наличие zoom-опции, а также опции Fit To Window (Подстроить под размер окна). Также можно сравнивать результаты с оригиналом, нажав на «Show Original». Предобзор доступен для всего изображения. Программа содержит образец на котором можно научиться увеличивать резкость, чтобы прочесть размытый текст.
Испытав инструмент на своих собственных фотографиях, я обнаружил, что он не работает так же хорошо как Focus Magic. Но мне удалось получить хорошие результаты с картинкой, содержащей текст.
- Плюсы: Абсолютно бесплатное, обладающее дружелюбным интерфейсом, очень полезное для прочтения на фотографии размытого текста.
- Минусы: Не очень стабильное, не так уж хорошо работает с реальными фотографиями (но испытайте приложение сами, чтобы вынести свой вердикт).
Пытаясь восстановить потерянные детали, вы почувствуете, будто работаете с CSI, но не ожидайте ничего выдающегося.
Про боке
Перед тем как перейдем к деталям, расскажу немного теории расфокусировки применительно к оптике. Идеальный объектив имеет PSF в виде круга, соответственно каждая точка превращается в круг некоторого диаметра. Кстати, это для многих неожиданность, т.к. с первого взгляда кажется, что дефокус просто растушевывает все изображение. Это же объясняет и то, почему фотошоповское размытие Гаусса совсем не похоже на тот рисунок фона (его еще называют боке), который мы видим у объективов. На самом деле это два разных типа размытия — по Гауссу каждая точка превращается в нечеткое пятно (колокол Гаусса), а дефокус каждую точку превращает в круг. Соответственно и разные результаты. Но идеальных объективов у нас нет и в реальности мы получаем то или иное отклонение от идеального круга. Именно это и формирует неповторимый рисунок боке каждого объектива, заставляя фотографов тратить кучу денег на объективы с красивым боке Боке можно условно разделить на три типа: — Нейтральное. Это максимальное приближение к кругу — Мягкое. Когда края имеют меньшую яркость, чем центр — Жесткое. Когда края имеют большую яркость, чем центр. Рисунок ниже иллюстрирует это: Более того, тип боке — мягкое или жесткое зависит еще и от того, передний это фокус или задний. Т.е. фотоаппарат сфокусирован перед объектом или же за ним. К примеру, если объектив имеет мягкий рисунок боке в переднем фокусе (когда, скажем, фокус на лице, а задний план размыт), то в заднем фокусе боке того же объектива будет жестким. И наоборот. Только нейтральное боке не меняется от вида фокуса. Но и это еще не все — поскольку каждому объективу присущи те или иные геометрические искажения, то вид PSF зависит еще и от положения. В центре — близко к кругу, по краям — эллипсы и другие сплюснутые фигуры
Это хорошо видно на следующем фото — обратите внимание на правый нижний угол: А теперь рассмотрим подробнее два последних метода получения PSF
Focus Magic
Focus Magic — это нечто большее, чем просто программа увеличения резкости. Согласно заявлениям с их сайта, используются «продвинутые криминалистические деконволюционные технологии, которые буквально, как рукой, снимают размытие». В теории, приложение справляется с расфокусированными изображениями и размытыми видео, восстанавливая потерянные детали. Но действительно ли это работает?
Программа Focus Magic далеко не автоматический инструмент. И это огромный минус, поскольку бесплатная пробная версия позволяет выполнить только 10 операций. После этого нужно будет приобрести полную лицензию, которая стоит 45 долларов. После загрузки изображения вам сперва необходимо решить, будете ли фокусировать, убирать размытие при движении, дефокусировать или очищать изображение от мусора. Потом начинается долгий процесс подстройки параметров.
Поскольку возможно увидеть привью лишь для небольшой области изображения, уходит множество попыток, чтобы достичь хорошего эффекта для всей фотографии.
- Плюсы: Выглядит как профессиональный инструмент, с помощью которого действительно можно достичь хороших результатов.
- Минусы: Работа требует множества попыток, но их у пользователя бесплатной версией только 10. К тому же, отсутствует опция изменения масштаба (зума), что доставляет неудобства.
С помощью приложения можно вернуть резкость изображениям, если у вас есть терпение и деньги.
Обзор приложений для размытия фона на телефоне
Сегодня в Google Play можно найти огромное количество всевозможных программ для съемки или обработки фото. С их помощью зачастую можно спасти даже самые, казалось бы, неудачные кадры. Мы выделили несколько крутых приложений, которые позволят без особых усилий размыть фото на андроид.
Bokeh (Background defocus)
Одна из лучших бесплатных программ, которая идеально подходит для создания эффекта боке и размытия заднего плана на фотографиях
Важно отметить, что создана она для съемки, а не для редактирования готовых снимков. Данный вариант больше подходит для создания селфи и портретов, поэтому чтобы сделать красивое фото на размытом фоне, необходимо, чтобы объект находился в 15-45 см от объектива
Несомненно, главным критерием качества изображения являются характеристики андроида.
DSLR Camera Blur Background
Простое и очень понятное приложение для размытия фона на фото. Находится в свободном доступе в Google Play и содержит все необходимые инструменты для редактирования заднего плана. Программа подходит для готовых снимков.
AfterFocus
Snapseed
Приложение, которое покорило сердца пользователей своей функциональностью и отличными эффектами. Чтобы размыть фон на фото на телефоне, необходимо открыть понравившееся фото, перейти в Фильтры-Размытие и выбрать подходящую форму инструмента. Добиться реалистичного результата можно, меняя интенсивность фильтра.
Сравнение
Осталось сравнить качество обработки с коммерческими аналогами. Я выбрал 2 самые известные программы 1. Topaz InFocus — www.topazlabs.com/infocus 2. Focus Magic — www.focusmagic.com Для чистоты эксперимента будем брать те рекламные изображения, которые приведены на официальных сайтах — так гарантируется, что параметры тех программ выбраны оптимальными (т.к. думаю, разработчики тщательно отбирали изображения и подбирали параметры перед публикацией в рекламе на сайте). Итак, поехали — восстановление смаза: Берем пример с сайта Topaz InFocus:www.topazlabs.com/infocus/_images/licenseplate_compare.jpg Обрабатываем с вот такими параметрами: и получаем такой результат: Результат с сайта Topaz InFocus: Результат весьма схожий, это говорит о том, что в основе Topaz InFocus используется похожий алгоритм деконволюции плюс постобработка в виде заглаживания-удаления шумов и подчеркивания контуров. Примеров сильно дефокусировки на сайте этой программы найти не удалось, да и она не предназначена для этого (максимальный радиус размытия составляет всего несколько пикселей). Можно отметить еще один момент — угол наклона оказался ровно 45 градусов, а длина смаза 10 пикселей. Это наводит на мысль о том, что изображение смазано искусственно. В пользу этого факта говорит и то, что качество восстановления очень хорошее. Пример номер два — восстановление дефокусировки. Для этого возьмем пример с сайта Focus Magic: www.focusmagic.com/focusing-examples.htm Получили вот такой результат:
Результат SmartDeblur | Результат Focus Magic |
Тут уже не так очевидно, что лучше.
Практическая реализация
Я сделал программу, демонстрирующую восстановление смазанных и расфокусированных изображений. Написана она на C++ с использованием Qt. В качестве реализации преобразования Фурье я выбрал библиотеку FFTW, как самую быструю из опен-соурсных реализаций. Называется моя программа SmartDeblur, скачать ее можно на странице github.com/Y-Vladimir/SmartDeblur, все исходники открыты под лицензией GPL v3. Скриншот главного окна: Основные функции: — Высокая скорость. Обработка изображения размером 2048*1500 пикселей занимает около 300мс в режиме Preview (когда перемещаются ползунки настроек) и 1.5 секунды в чистовом режиме (когда отпустили ползунки настроек). — Подбор параметров в Real-time режиме. Нет необходимости нажимать кнопки Preview, все делается автоматически, нужно лишь двигать ползунки настроек искажения — Вся обработка идет для изображения в полном разрешении. Т.е. нет никакого маленького окошка предпросмотра и кнопок Apply. — Поддержка восстановления смазанных и расфокусированных изображений — Возможность подстройки вида PSF Основной упор при разработке был сделан на скорость. В итоге она получилась такая, что превосходит коммерческие аналоги в десятки раз. Вся обработка сделана по-взрослому, в отдельном потоке. За 300 мс программа успевает сгенерить новую PSF, сделать 3 преобразования Фурье, сделать деконволюцию по Винеру и отобразить результат — и все это для изображения размером 2048*1500 пикселей. В чистовом режиме делается 12 преобразований Фурье (3 для каждого канала, плюс одно для каждого канала для подавления краевых эффектов) — это занимает около 1.5 секунд. Все времена указаны для процессора Core i7. Пока в программе есть ряд багов и особенностей — скажем, при некоторых значениях настроек изображение покрывается рябью. Точно причину выяснить не удалось, но предположительно — особенности работы библиотеки FFTW. Ну и в целом в процессе разработки пришлось обходить множество скрытых проблем как в FFTW (например не поддерживаются изображения с нечетным размером одной из сторон, типа 423*440.). Были проблемы и с Qt — выяснилось, что рендеринг линии со включенным Antialiasing работает не совсем точно. При некоторых значениях углов линия перескакивала на доли пикселя, что давало артефакты в виде сильной ряби. Для обхода этой проблемы добавил строчки:
Вспомним теорию
Подробное описание теории было в первой части, но все же напомню вкратце основные моменты. В процессе искажения из каждого пикселя исходного изображения получается некоторое пятно в случае расфокусировки и отрезок для случая обычного смаза. Все это друг на друга накладывается и в результате мы получаем искаженное изображение — это называется сверткой изображения или конволюцией. То, по какому закону размазывается один пиксель и называется функцией искажения. Другие синонимы – PSF (Point spread function, т.е. функция распределения точки), ядро искажающего оператора, kernel и другие. Чтобы восстановить исходное изображение нам необходимо каким-то образом обратить свертку, при этом не забывая про шум. Но это не так-то просто – если действовать, что называется, «в лоб», то получится огромная система уравнений, которую решить за приемлемое время невозможно. Но на помощь к нам приходит преобразование Фурье и теорема о свертке, которая гласит, что операция свертки в пространственной области эквивалентна обычному умножению в частотной области (причем умножение поэлементное, а не матричное). Соответственно, операция обратная свертке эквивалентна делению в частотной области. Поэтому процесс искажения можно переписать следующим образом: (1), где все элементы — это фурье-образы соответствующих функций: G(u,v) – результат искажения, т.е. то, что мы наблюдаем в результате (смазанное или расфокусированное изображение) H(u,v) – искажающая функция, PSF F(u,v) – исходное неискаженное изображение N(u,v) – аддитивный шум Итак, нам нужно восстановить максимальное приближение к исходному изображению F(u,v). Просто поделить правую и левую часть на H(u,v) не получится, т.к. при наличии даже совсем небольшого шума (а он всегда есть на реальных изображениях) слагаемое N(u,v)/H(u,v), будет доминировать, что приведет к тому, что исходное изображение будет целиком скрыто под шумом. Чтобы решить эту проблему, были разработаны более устойчивые методы, одним из которых являтся фильтр Винера (Wiener). Он рассматривает изображение и шум как случайные процессы и находит такую оценку f’ для неискаженного изображения f, чтобы среднеквадратическое отклонение этих величин было минимальным: (2) Функцией S здесь обозначаются энергетические спектры шума и исходного изображения соответственно – поскольку, эти величины редко бывают известны, то дробь Sn / Sf заменяют на некоторую константу K, которую можно приблизительно охарактеризовать как соотношение сигнал-шум.
Краевые эффекты
Следующая проблема заключается в том, что если напрямую применить фильтр Винера, то на краях изображения будет своеобразный «звон». Его причина, если объяснять на пальцах, заключается в следующем — когда делается деконволюция для тех точек, которые расположены на краях, то при сборке не хватает пикселей, которые находятся за краями изображения и они принимаются либо равным нулю, либо берутся с противоположной стороны (зависит от реализации фильтра Винера и преобразования Фурье). Выглядит это так: Одно из решений, чтобы избежать этого состоит предобработке краев изображения. Они размываются с помощью той же самой PSF. На практике это реализуется следующем образом — берется входное изображение F(x,y), размывается с помощью PSF и получается F'(x,y), затем итоговое входное изображение F»(x,y) формируется суммированием F(x,y) и F'(x,y) с использованием весовой функции, которая на краях принимает значение 1 (точка целиком берется из размытого F'(x,y)), а на расстоянии равном (или большем) радиусу PSF от края изображения принимает значение 0. Результат получается такой — звон на краях исчез: