как понять что написано на фотографии если размыто
Как сделать размытое фото более чётким?
Расфокусированные фотографии становятся всё более популярными по некоторым причинам, но не учитывая так всеми любимые фильтры как в Instagram, они обычно только раздражают. Допустим, вы постарались снять уникальное в своем роде семейное видео только лишь для того, чтобы обнаружить, что изображение размыто и дрожит.
Оказывается, существуют программы, которые могут улучшить резкость фотографий без возни в Photoshop. Хотя в большинстве случаев из размытого фото или видео никогда не сделать резкую и красивую копию, эти инструменты можно использовать для восстановления важных деталей и вернуть резкость, чтобы сделать материал чуть более качественным.
SmartDeblur
SmartDeblur — полностью бесплатное приложение, которым можно пользоваться сколько угодно раз, и во многих отношениях оно дружелюбнее, чем Focus Magic. С другой стороны, его работа не отличается стабильностью (программа зависала несколько, пока я ее тестировал, особенно при загрузке слишком тяжелых изображений), а результаты, которые выдает программа, могут быть разными.
Есть несколько полезных возможностей в SmartDeblur — наличие zoom-опции, а также опции Fit To Window (Подстроить под размер окна). Также можно сравнивать результаты с оригиналом, нажав на «Show Original». Предобзор доступен для всего изображения. Программа содержит образец на котором можно научиться увеличивать резкость, чтобы прочесть размытый текст.
Испытав инструмент на своих собственных фотографиях, я обнаружил, что он не работает так же хорошо как Focus Magic. Но мне удалось получить хорошие результаты с картинкой, содержащей текст.
Пытаясь восстановить потерянные детали, вы почувствуете, будто работаете с CSI, но не ожидайте ничего выдающегося.
Focus Magic
Focus Magic — это нечто большее, чем просто программа увеличения резкости. Согласно заявлениям с их сайта, используются «продвинутые криминалистические деконволюционные технологии, которые буквально, как рукой, снимают размытие». В теории, приложение справляется с расфокусированными изображениями и размытыми видео, восстанавливая потерянные детали. Но действительно ли это работает?
Программа Focus Magic далеко не автоматический инструмент. И это огромный минус, поскольку бесплатная пробная версия позволяет выполнить только 10 операций. После этого нужно будет приобрести полную лицензию, которая стоит 45 долларов. После загрузки изображения вам сперва необходимо решить, будете ли фокусировать, убирать размытие при движении, дефокусировать или очищать изображение от мусора. Потом начинается долгий процесс подстройки параметров.
Поскольку возможно увидеть привью лишь для небольшой области изображения, уходит множество попыток, чтобы достичь хорошего эффекта для всей фотографии.
С помощью приложения можно вернуть резкость изображениям, если у вас есть терпение и деньги.
Blurity
Приложение Blurity в отличие от своих конкурентов обладает несколькими особенностями: очень подробным руководством и самодостаточностью. Под самодостаточностью я понимаю способность программы взять на себя тяжелую работу по настройке, если того пожелаете. Если знаете, что делаете, можете получить доступ к продвинутым настройкам, но это совсем необязательно.
После прохождения обучения, можно приступать к обработке. Для этого необходимо поместить красный квадрат на область с сильной размытостью и нажать на кнопку Process. В большинстве случаев на этом всё. Если результаты вас не удовлетворяют, можно переместить квадрат в другую область и попытаться снова. Приложение выполняет свою работу хорошо, ему удалось превратить некоторые размытые фотографии во вполне достойные.
Как видите, минусом являются водяные знаки, которые накладываются на все фотографии, которые вы обрабатываете, используя бесплатную версию приложения. Если вам действительно нравится программа и хотите избавиться от водяных знаков, лицензия будет стоить вам 39$.
Выводы
Хотите – верьте, хотите – нет, но я потратил полдня, исследуя данную тему. Попытавшись повысить резкость у множества размытых фото и видео, я осознал одну вещь — лучше сразу снимать хороший материал. Но если по какой-то причине «план А» не сработал, то вышеперечисленные приложения способны выжать кое-что из вашего материала, но это на самом деле зависит от того, чего вы стремитесь достичь.
Как распознать текст на изображении. Самый простой способ
Бывают случаи, когда вам нужно распознать текст на изображении, чтобы в итоге у вас была не картинка, а то, что можно распечатать или отредактировать. Можно, конечно, перепечатать текст самостоятельно, но зачем это делать, если в век цифровых технологий есть куда более доступные, а главное — быстрые способы. И о них мы сейчас вам и расскажем.
Распознать текст можно в два счета. Главное — иметь доступ к сети
Немного теории. Как программа распознает изображение
Извлечение текста из изображения осуществляется с помощью программного обеспечения, которое называется OCR (сокращенно от optical character recognition). Программа считывает файл изображения (формат тут не важен, будь то jpg, png, pdf и так далее). Выявляет там то, что потенциально может быть текстом и затем «сравнивает» с базой шрифтов. В итоге на выходе мы получаем текстовый файл. При этом чем лучше качество исходного файла и чем более распространенный там используется шрифт — тем лучше произойдет распознавание текста.
В то время, как нет недостатка в OCR-приложениях для смартфонов на Android и даже расширений браузера Сhrome не наблюдается, они не всегда могут оказаться у вас под рукой. О самых лучших программах в самых разных категориях мы регулярно, так что подписывайтесь на нас в Телеграм, чтобы ничего не пропустить. Однако если под рукой нет нужны программ, можно использовать более простой, а главное — всегда доступный метод.
Как распознать текст на картинке
Распознаем текст онлайн без СМС и регистрации
Для начала рассмотрим ситуацию, когда вы работаете на ПК. Откройте веб-версию Google Keep по этой ссылке и загрузите свое изображение в виде заметки в этот сервис, нажмите на три вертикальные точки под вашим изображением и выберите опцию «Распознать текст изображения». Сервис в максимально короткий срок сделает все необходимое, после чего вы сможете работать с получившимся текстом.
Да, популярное приложение для создания заметок Google Кeep обладает, как вы догадались, возможностью по распознаванию текста. Конечно, вы можете держать его на своем смартфоне для подобных ситуаций и мы рекомендуем вам скачать его из магазина Google Play. Но мы рассматриваем простой способ без лишних загрузок, верно? В этом случае вам опять же поможет веб-интерфейс Google Кeep, который отлично работает и при загрузке со смартфона.
Однако стоит заметить, что если у вас установлено приложение Google Кeep, то вы получите некоторые дополнительные опции. Например, вы можете создать новую заметку в приложении и после этого нажать на кнопку камеры в углу интерфейса программы. Теперь у вас есть два варианта: вы можете либо сделать снимок документа или какой-то надписи, либо же выбрать изображение из памяти устройства.
Google Keep способен на многое
При любом исходе приложение загрузит фото в память и после нажатия на меню опции вы увидите заветную надпись «Распознать текст изображения». После этого вы можете сохранить результат в эту же заметку, либо же сформировать из него отдельный текстовый документ. Ах да, если у вас включена синхронизация с аккаунтом Google, то вы можете тут же «расшарить» заметку на Google Диск и иметь к ней доступ с любого устройства, подключенного к сети.
Восстановление расфокусированных и смазанных изображений. Практика
Не так давно я опубликовал на хабре первую часть статьи по восстановлению расфокусированных и смазанных изображений, где описывалась теоретическая часть. Эта тема, судя по комментариям, вызвала немало интереса и я решил продолжить это направление и показать вам какие же проблемы появляются при практической реализации казалось бы простых формул.
В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.
Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.
И вот результат обработки:
Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.
Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Вспомним теорию
Подробное описание теории было в первой части, но все же напомню вкратце основные моменты. В процессе искажения из каждого пикселя исходного изображения получается некоторое пятно в случае расфокусировки и отрезок для случая обычного смаза. Все это друг на друга накладывается и в результате мы получаем искаженное изображение — это называется сверткой изображения или конволюцией. То, по какому закону размазывается один пиксель и называется функцией искажения. Другие синонимы – 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
Итак, возьмем за отправную точки описанный фильтр Винера — вообще говоря, существует множество других подходов, но все они дают примерно одинаковые результаты. Так что все описанное ниже будет справедливо и для остальных методов деконволюции.
Основная задача — получить оценку функции распределения точки (PSF). Это можно сделать несколькими способами:
1. Моделирование. Очень непросто и трудоемко, т.к. современные объективы состоят из десятка, другого различных линз и оптических элементов, часть из которых имеет асферическую форму, каждый сорт стекла имеет свои уникальные характеристики преломления лучей с той или иной длиной волны. В итоге задача корректного расчета распространение света в такой сложнейшей оптической системе с учетом влияния диафрагмы, переотражений и т.п. становится практически невозможной. И решение ее, пожалуй, доступно только разработчикам современных объективов.
2. Непосредственное наблюдение. Вспомним, что PSF — это то, во что превращается каждая точка изображения. Т.е. если мы сформируем черный фон и одну белую точку на нем, а затем сфотографируем это с нужным значением расфокусировки, то мы получим непосредственно вид PSF. Кажется просто, но есть много нюансов и тонкостей.
3. Вычисление или косвенное наблюдение. Присмотримся к формуле (1) процесса искажение и подумаем, как можно получить H(u,v)? Решение приходит сразу — нужно иметь исходное F(u,v) и искаженное G(u,v) изображения. Тогда поделив фурье-образ искаженного изображения на фурье-образ исходного изображения мы получим искомую PSF.
Про боке
Перед тем как перейдем к деталям, расскажу немного теории расфокусировки применительно к оптике. Идеальный объектив имеет PSF в виде круга, соответственно каждая точка превращается в круг некоторого диаметра. Кстати, это для многих неожиданность, т.к. с первого взгляда кажется, что дефокус просто растушевывает все изображение. Это же объясняет и то, почему фотошоповское размытие Гаусса совсем не похоже на тот рисунок фона (его еще называют боке), который мы видим у объективов. На самом деле это два разных типа размытия — по Гауссу каждая точка превращается в нечеткое пятно (колокол Гаусса), а дефокус каждую точку превращает в круг. Соответственно и разные результаты.
Но идеальных объективов у нас нет и в реальности мы получаем то или иное отклонение от идеального круга. Именно это и формирует неповторимый рисунок боке каждого объектива, заставляя фотографов тратить кучу денег на объективы с красивым боке 🙂 Боке можно условно разделить на три типа:
— Нейтральное. Это максимальное приближение к кругу
— Мягкое. Когда края имеют меньшую яркость, чем центр
— Жесткое. Когда края имеют большую яркость, чем центр.
Рисунок ниже иллюстрирует это:
Более того, тип боке — мягкое или жесткое зависит еще и от того, передний это фокус или задний. Т.е. фотоаппарат сфокусирован перед объектом или же за ним. К примеру, если объектив имеет мягкий рисунок боке в переднем фокусе (когда, скажем, фокус на лице, а задний план размыт), то в заднем фокусе боке того же объектива будет жестким. И наоборот. Только нейтральное боке не меняется от вида фокуса.
Но и это еще не все — поскольку каждому объективу присущи те или иные геометрические искажения, то вид PSF зависит еще и от положения. В центре — близко к кругу, по краям — эллипсы и другие сплюснутые фигуры. Это хорошо видно на следующем фото — обратите внимание на правый нижний угол:
А теперь рассмотрим подробнее два последних метода получения PSF.
PSF — Непосредственное наблюдение
Как уже говорилось выше, необходимо сформировать черный фон и белую точку. Но просто напечатать на принтере одну точку недостаточно. Необходим намного большее отличие в яркости черного фона и белой точки, т.к. одна точка будет размываться по большому кругу — соответственно должна иметь большую яркость, чтобы быть видной после размытия.
Для этого я распечатал черный квадрат Малевича (да, тонера много ушло, но чего не сделаешь ради науки!), наложил с другой стороны фольгу, т.к. лист бумаги все же неплохо просвечивает и иголкой проколол маленькую дырочку. Затем соорудил нехитрую конструкцию из 200-ваттной лампы и сэндвича из черного листа и фольги. Выглядело это вот так:
Далее включил лампу, закрыл ее листом, выключил общий свет и сделал несколько фоток используя два объектива — китовый Canon EF 18-55 и портретник Canon EF 85mm/1.8. Из получившихся фоток я вырезал PSF и затем построил графики профилей.
Вот что получилось для китового объектива:
И для портретника Canon EF 85mm/1.8:
Хорошо видно как меняется характер боке с жествкого на мягкий для одного и того же объектива в случае переднего и заднего фокуса. Также видно, какую непростую форму имеет PSF — она весьма далека от идеального круга. Для портретника также видны большие хроматические аберрации из-за большой светосилы объектива и малой диафрагмы 1.8.
И вот еще пара снимков при диафрагме 14 — на нем видно, как поменялась форма с круга на правильный шестиугольник:
PSF — Вычисление или косвенное наблюдение
Следующий подход — косвенное наблюдение. Для этого, как писалось выше, нам нужно иметь исходное F(u,v) и искаженное G(u,v) изображения. Как их получить? Очень просто — необходимо поставить фотоаппарат на штатив и сделать один резкий и один размытый снимок одного и того изображения. Далее с помощью деления фурье-образа искаженного изображения на фурье-образ исходного изображения мы получим фурье-образ нашей искомой PSF. После чего применив обратное преобразование Фурье получим PSF в прямом виде.
Я сделал два снимка:
И в результате получил вот такую PSF:
На горизонтальную линию не обращайте внимания, это артефакт после преобразования Фурье в матлабе. Результат, скажем так, средненький — очень много шумов и детали PSF видны не так хорошо. Тем не менее, метод имеет право на существование.
Описанные методы можно и нужно использовать для построения PSF при восстановлении размытых изображений. Т.к. от того, насколько эта функция приближена к реальной напрямую зависит качество восстановления исходного изображения. При несовпадении предполагаемой и реальной PSF будут наблюдаться многочисленные артефакты в виде «звона», ореолов и снижения четкости. В большинстве случаев предполагается форма PSF в виде круга, тем не менее для достижения максимальной степени восстановления рекомендуется поиграться с формой этой функции, попробовав несколько вариантов от распространенных объективов — как мы видели, форма PSF может варьироваться в значительной степени в зависимости от диафрагмы, объектива и прочих условий.
Краевые эффекты
Следующая проблема заключается в том, что если напрямую применить фильтр Винера, то на краях изображения будет своеобразный «звон». Его причина, если объяснять на пальцах, заключается в следующем — когда делается деконволюция для тех точек, которые расположены на краях, то при сборке не хватает пикселей, которые находятся за краями изображения и они принимаются либо равным нулю, либо берутся с противоположной стороны (зависит от реализации фильтра Винера и преобразования Фурье). Выглядит это так:
Одно из решений, чтобы избежать этого состоит предобработке краев изображения. Они размываются с помощью той же самой PSF. На практике это реализуется следующем образом — берется входное изображение F(x,y), размывается с помощью PSF и получается F'(x,y), затем итоговое входное изображение F»(x,y) формируется суммированием F(x,y) и F'(x,y) с использованием весовой функции, которая на краях принимает значение 1 (точка целиком берется из размытого F'(x,y)), а на расстоянии равном (или большем) радиусу PSF от края изображения принимает значение 0. Результат получается такой — звон на краях исчез:
Практическая реализация
Я сделал программу, демонстрирующую восстановление смазанных и расфокусированных изображений. Написана она на 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 работает не совсем точно. При некоторых значениях углов линия перескакивала на доли пикселя, что давало артефакты в виде сильной ряби. Для обхода этой проблемы добавил строчки:
Сравнение
Осталось сравнить качество обработки с коммерческими аналогами.
Я выбрал 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 пикселей. Это наводит на мысль о том, что изображение смазано искусственно. В пользу этого факта говорит и то, что качество восстановления очень хорошее.