SmartDeblur изначально задумывался как Open-Source проект.
А так у буржуев уже сейчас есть платный Topaz InFocus.
Кстати, в нем, по непонятной причине, максимальный радиус обработки ограничен 6-ю пикселами, что делает невозможным восстановления средних и сильных искажений.
И самое забавное, что за самый главный комментарий вас не «отплюсовали».
Спасибо о задумках публикации вашего труда как Open-Source проект, это очень важно.
Да, можно — причем с большой вероятностью успеха. Правда нужны будут дополнительные приседания в виде вырезания нужного фрагмента и предобработки краев, не без этого :)
А также можно восстанавливать «скрытые» поля на скриншотах (такое частенько попадается в публикациях хабра), которые были смазаны или размыты
Не все так просто на самом деле. Результат очень зависит от того, в каком формате сохранен скриншот (png, jpeg), какой програмой делался смаз. В некоторых случаях восстановить легко используя просто SmartDeblur, в других случаях требуется ручной подбор ядра искажения.
Ну я, например, перед выкладыванием «смазываю» до почти однотонности, там не разберёшь :) опять же, некоторые закрывают такие данные банальными черными прямоугольниками. Так что не всё так ужасно…
По идее исходники должны еще под линуксом и макосью собираться (по крайней мере, прошлая версия собиралась), так что можно получить нативные бинарники.
Хм. Возникла идея: а нельзя ли генерировать случайные параметры (например с помощью генетических алгоритмов), восстанавливать с ними изображение, содержащее текст, и потом пытаться распознать его?
Чем качественнее будет результат распознавания, тем лучше были подобраны изначальные параметры.
Количество распознанных символов (не очень хороший критерий прямо таки).
Правильность распознанных символов в определенном случае. Например, в автомобильных номерах не могут быть любые символы, кроме цифр и букв, а в обычном тесте нет слова «плонета», зато есть «планета».
Лучше всего их каким-то образом комбинировать, для чего потребуются субъективные или эмпирические коэффициенты.
Это уже есть и называется Blind Deconvolution (слепая деконволюция)
Там точный вид ядра искажения неизвестен, и используется итеративный алгоритм в стиле:
1. Взяли первоначальное приближение обработали, померили качество.
2. Далее немного поменяли параметры ядра искажения
3. Повторяем пункт 1-2 пока не достигнем необходимого уровня качества
Понятие «качество» вычисляется на основе статистических характеристик (т.е. делается предположение, что исходное изображение описывается некоторыми статистическими параметрами, распределениями, ...) и это значение максимизируется
>>восстановить номера машин на кадрах с камер видеонаблюдения, когда весь номер занимает площадь несколько пикселей.
>>Я этим не занимаюсь! SmartDeblur этого тоже делать не умеет.
Для подобной работы можно попробовать использовать астрономический софт, которым достигается приемлемый уровень детализации облаков того же Юпитера при наблюдении с Земли на любительском оборудовании.
Для этого снимается ролик на камеру, потом с помощью Registax складывается, обрабатывается и достигается многократное повышение детализации.
Было
Стало
Обработано в регистаксе 600 кадров из 4000. Кроп, масштаб 50%. Точка сверху — Ганимед.
Фото не моё, просто советую тем, кому может быть нужно.
Да, Registax и его аналоги как раз являются реализацией алгоритма Super Resolution в чистом виде.
Основная проблема в том, что к задачам восстановления номером он напрямую тоже не подходит, т.к в астрономии мы имеем много снимков неподвижного объекта, а с камер наблюдения мы получаем несколько кадров одной и той же машины, но под разными ракурсами (разные геометрические искажения), а зачастую еще и с разных камер (с разными характеристиками).
Можно попробовать привести все номера к одному размеру и одной форме и скормить Registax'у — может что и получится.
Логичным образом напрашивается прошивка моторизованных камер, чтобы камера всегда немного шевелилась, буквально на один градус круги описывала. Тогда можно будет применять такие алгоритмы до тех пор, пока техника не позволит без подобных ухищрений разглядывать сетчатку глаза человека в ста метрах от камеры.
И даже с таким подходом мало что улучшится. Это будет работать только днем для неподвижных обьектов. Если обьекты движутся, ничего не получится. А вечером и ночью такие флуктуации будут вызывать смаз. В итоге будет обратный результат.
Но в любом случае я не делал резиновый layout и не использовал системные цвета — т.к. имитировался риббон.
Поэтому при изменении размера шрифта или цветовой гаммы что-то может поплыть
В России алгоритмы не патентуются, можно лишь получить «Свидетельство о регистрации программы для ЭВМ» — от него пользы мало
Да и что там патентовать — старый добрый Винеровский фильтр и другие классические алгоритмы? )
«Свидетельство о государственной регистрации программы для ЭВМ» имеет смысл делать студентам и аспирантам, при защите дипломных и диссертаций хорошо помогает.
Open source двигают в основном не бедные люди. Подобно тому, как в 19 веке физикой занимались исключительно богатые меценаты.
Я уверен, что у автора есть стабильный доход и он это делает для души. Когда ЗП или доход удовлетворяют, основная мотивация переходит в то, чем ты занимаешься, а не сколько тебе за это платят.
Это все на ту же тему, что и автомобильные номера с камер видеонаблюдения.
Здесь имеем изображение низкого разрешения с кучей jpeg-артефактов.
Попробуйте, как советовалось выше, использовать registax.
Среди примеров не хватает обычного смаза надписи. Условно говоря, задираем диафрагму, делаем выдержку в 1с и снимаем с рук любую вывеску.
ЗЫ А ещё есть такая мерзость, как долгая шевелёнка. Это когда не просто смаз в одном направлении, а трясущиеся по нескольким направлениям за время съёмки руки.
Со смазом ситуация такая — чем ближе траектория смаза к прямой линии, тем лучше будут результаты.
Это все касается стандартного функционала SmartDeblur, если же использовать кастомную PSF, то можно восстанавливать любой смаз — главное чтобы он был однородным по всему изображению, т.е. именно смаз от дрожания камеры, а не от того, кто то быстро движется.
Вообщем-то да, исходники открыты, код весьма простой и компактный, язык C++. Так что желающие могут весьма быстро портировать под плагины. Я сам заниматься этим не планировал — пока есть куда тратить время :)
Изначально задумка была по-быстрому набросать прототип работающей деконволюции и выложить все это в опен соурс, раз уж хорошо разобрался с темой обработки изображений. Получилось немного больше чем хотел.
Классно, будем знать, что теперь некоторые кадры вовсе не так безнадежны, как кажется, и их можно «вытянуть».
P.S. Просматривая комменты, ожидал увидеть здесь пару-тройку портянок с комиксами-пародиями на CSI. Странно, не нашел. Поголовье боянистов сокращается? ))
Цель была в том, чтобы исходники были доступны всем для изучения, но при этом не создавались бы закрытые коммерческие продукты на базе смартдеблюра. Под GPL все производные продукты также должны быть опенсоурсными.
никто не мешает продолжать делать open source для некоммерческого использования, обучения, и прочее. Просто оговорить что для коммерческого использования лицензия lgpl и стоит столько-то. Для многих проектов есть возможность gpl бесппатно, либо другие лицензии платно. Если честно, я не понимаю зачем себя ограничивать :)
все те, кто занимается оптическим распознаванием и сталкивается с необходимостью извлекать текст с переблюренных изображений, могут стать намного счастливее благодаря вам. =)
спасибо!
Восстановление расфокусированных и смазанных изображений. Повышаем качество