19 апреля 2017 мы выпустили обновление PhotoScan, нашего мобильного приложения для iOS и Android, позволяющего оцифровывать бумажные фотографии одним только смартфоном. Одна из ключевых особенностей PhotoScan – возможность удалять блики с фотографий (их часто печатают на глянцевой, хорошо отражающей свет бумаге), а также со страниц пластиковых альбомов или фотографий под стеклом. Для этого мы разработали уникальное сочетание компьютерного зрения и технологии обработки изображений, которые могут точно совместить и скомбинировать несколько немного отличающихся снимков фотографии и отделить блик от самого изображения на фото.

image

По одному снимку очень сложно автоматически определить, какие участки изображения – это оригинальное фото, а какие – блик. Более того, блик может засветить участки фото, из-за чего будет невозможно восстановить ту его часть, что скрыта под бликом. Но если сделать несколько снимков фотографии, передвигая камеру, расположение блика меняется – он перемещается по разным участкам фото. В большинстве случаев каждый отдельный пиксель окажется не под бликом хотя бы на одном из снимков. И хотя ни один из снимков не будет лишён блика, мы можем скомбинировать несколько снимков распечатанного фото, сделанных под разными углами, и таким образом удалить блик. Сложность в том, что изображения необходимо очень точно совместить, чтобы они правильно комбинировались, и эта обработка должна выполняться на смартфоне достаточно быстро, чтобы получить эффект почти мгновенного результата.

Скрытый текст


Наша технология вдохновлялась нашей предыдущей работой, опубликованной на SIGGRAPH 2015, которую мы назвали «фотографированием без помех» [obstruction-free photography]. Она использует схожие принципы для удаления различных помех из поля зрения. Но первоначальный алгоритм был основан на порождающей модели, в которой оценивались движение и внешний вид основной сцены и помехи. Возможности этой модели велики, и она способна удалять самые разные помехи – но она слишком затратна с вычислительной точки зрения, чтобы её можно было использовать на смартфонах. Поэтому мы разработали упрощённую модель, относящуюся к блику как к некоей аномалии, и пытающуюся распознать лежащее под ним изображение. И хотя модель упрощена, это всё ещё очень сложная задача – распознавание должно быть точным и надёжным.

Как это работает


Мы начинаем с набора снимков фотографии, сделанных пользователем, передвигавшим камеру. Первый снимок – «опорный кадр» – определяет желаемый конечный вид снимка. Затем пользователю рекомендуют сделать четыре дополнительных снимка. В каждом кадре мы определяем ключевые точки (подсчитываем свойства ORB на углах, определённых при помощи алгоритма Харриса) и используем их для определения гомографий, сопоставляющих каждый последующий кадр с опорным.

Скрытый текст


Технология кажется прямолинейной, но у неё есть подвох – гомографии способны сопоставлять только плоские изображения. Но бумажные фотографии часто не плоские (как в примере вверху). Мы используем оптический поток – фундаментальное представление движения в компьютерном зрении, устанавливающее попиксельное соответствие между двумя изображениями, корректирующее отклонения от плоскости. Мы начинаем с кадров, выровненных при помощи гомографии, и подсчитываем «поля потоков» для выпрямления изображений и дальнейшей корректировки. Обратите внимание, как в примере ниже углы левой фотографии немного «двигаются» после определения кадров при помощи одной лишь гомографии. Справа видно, как фото лучше выровнялось после применения оптического потока.

Скрытый текст


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



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





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

Скрытый текст


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



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

Скрытый текст







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



В общем, много чего происходит под капотом, и всё это почти мгновенно работает на вашем телефоне! Попробовать PhotoScan можно, скачав версию приложения для Android или iOS.
Поделиться с друзьями
-->

Комментарии (51)


  1. lonelymyp
    22.04.2017 20:13
    +2

    Странно, пишет что не поддерживается на телефоне.
    Камера вроде норм, 5мп, автофокус, андроид 6 версии, чего там такого особенного надо чтоб поддержка была?


    1. dslava
      23.04.2017 11:21

      Еще с этапа бета-версий люто интересуюсь тем же вопросом.

      А второй мой вопрос о необъяснимо низком разрешении снимков на тех устройствах, на которых удалось аппликацию запустить.


    1. vadimpl
      23.04.2017 22:10

      Аналогично. Asus ZenFone 2 с родной прошивкой 5.1 — не хочет.


    1. nett00n
      24.04.2017 09:40

      Скорее всего вопрос в поддержке Camera2API. Проверить поддержку Camera2API на вашем устройстве можно этим приложением.


    1. plm
      24.04.2017 11:45

      Интересно, на iPhone 4s тоже не поддерживается. Что с ним-то не так?


  1. MotttoR
    22.04.2017 20:32
    +1

    приложение для тех, кто прогуливал физику?


  1. SergGUI
    22.04.2017 20:46
    +3

    А можно просто отсканировать и не тратить кучу времени и сил.


    1. SLY_G
      22.04.2017 20:46
      +9

      Да, если вы приехали в деревню к бабушке, она достала фотоальбом, а у вас с собой сканер и компьютер.


      1. igruh
        23.04.2017 06:43
        +1

        Если вы приехали к бабушке с фотоаппаратом, то можете захватить с собой поляризатор, он справится с бликами не хуже.


        1. SovGVD
          23.04.2017 07:08

          До конца блики он не уберет, но и качество фото будет повыше. В идеале бы с фотика загрузить в прогу и обработать.


        1. Fenyx_dml
          01.05.2017 21:08

          Тогда уж просто пару настольных люминесцентных ламп. Освещение ставитсяпод 45* к плоскости снимка с противоположных сторон. Фотик, соответственно, перпендикулярно. Никаких бликов. Но вот сфоткать что-то только на пару минут попавшее в поле зрения — это да, прога полезна.


      1. Alexufo
        23.04.2017 10:24
        +1

        надо просто всегда снимать под углом небольшим


        1. frol_aleksan
          26.04.2017 11:35

          Не снимать под углом небольшим (ибо потом еще геометрию исправлять), а пыхать под углом вверх или в сторону (актуально только для внешних вспышек) или хотя бы рассеивать свет с помощью приспособлений различной степени колхозности, начиная от бумажек и пластиковых баночек для пленок и заканчивая довольно навороченными конструкциями типа такой, как на фото (кстати себе надо будет сделать, очень понравилось решение)
          image

          Вариант попроще для мыльниц
          image


          1. Alexufo
            26.04.2017 12:07

            Пробовал, если пальчиком держать, то этот пальчик окрашивает свет собой да и вспышка выходит не равномерно от съемки к съемке. Вобщем, вcе на месте решается.


      1. saege5b
        25.04.2017 21:49

        В китае ручных сканеров куча.
        600 точек, 2 акка/батарейки АА.
        Компактен. Я частенько с собой в гости беру.


    1. edogs
      22.04.2017 21:31
      +4

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


      1. Boctopr
        22.04.2017 22:00

        О чудо, сканеры могут сканировать формат А4 целиком (бытовые сканеры), зачем же каждую фотографию сканировать отдельно?


        1. edogs
          22.04.2017 22:19
          +6

          Теоретики…

          Лист А4 — да, отсканирует шикарно, плотно прижатый.

          Но фотоальбом это не лист А4.
          Во-первых, фотографии там будут скорее всего в отдельных папках или прижаты уголками, т.е. для качественного сканирования их надо будет вытащить (т.к. бытовые сканеры нормально сканируют только плотно прижатое изображение).
          Во-вторых, фотоальбом будет прошит, а значит плотного прижатия на бытовом сканере сделать не получится, т.к.на развороте страница будет сильно отходить от поверхности (а бытовые сканеры нормально сканируют только плотно прижатое изображение). Это известная проблема при скане книг.
          В-третьих, скорость. С фотоаппаратом можно работать на порядок быстрее.

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


          1. danyaShep
            23.04.2017 14:31

            «вполне достаточном уровне.» — этого уровня не хватает, даже чтобы сделать копию черно-белого документа приличного качества.
            Ни одна программа на маркете не делает документ хотя бы со 100dpi. Не говоря уже об ужасных геометрических искажениях на тексте. Фотоаппаратом телефона можно сделать читаемый скан, но отправлять его на печать потом стыдно.
            Что странно, нет программы, которая позволит сделать 100500 макроснимков частей документа, а потом качественно сошьет его в одну панораму.


            1. edogs
              23.04.2017 17:18

              этого уровня не хватает, даже чтобы сделать копию черно-белого документа приличного качества.
              Требования налоговой к сканированным документам — от 150 до 300дпи.
              9мпиксельная камера на А4 дает 300дпи, для 150дпи достаточно 3мпикселей.
              Документы давно уже «сканируем» на смарт (в канцелярию суда, например, свой компьютер со сканером не протащишь), никакой проблем с копиями нет, даже от напечатанной на принтере документ не особо отличишь, хотя небольшой пост-обработки это требует.

              Ни одна программа на маркете не делает документ хотя бы со 100dpi.
              Ну программа может быть. А просто снять на смарт и слегка обработать в фотошопе — никаких проблем.


            1. tishevich
              26.04.2017 16:17

              >>>Ни одна программа на маркете не делает документ хотя бы со 100dpi. Не говоря уже об ужасных геометрических искажениях на тексте.

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


              1. danyaShep
                26.04.2017 17:01

                У меня никогда не получалось добиться телефоном качества, близкого к планшетному сканеру.


          1. hungry_ewok
            23.04.2017 16:56

            >(т.к. бытовые сканеры нормально сканируют только плотно прижатое изображение).

            поправка: современные бытовые сканеры, чьи характеристики безжалостно порезали во имя фетиша потребления. Старенький же epson 1760, например, отлично работает в глубину, несмотря на свою бытовость…


          1. Fenyx_dml
            02.05.2017 11:11

            Это не «бытовые сканеры», а говенные дешевые сканеры с cis — матрицей. У них ГРИП никакой, да и сами они никакие — только сканы платежек делать. Распознать можно по особо тонкому корпусу (в мфушках только это гуано и ставят). Я не знаю, выпускают ли кэнон и хп что-то путное, последнее что я покупал был epson perfection. Вполне себе обычный бытовой планшетник. Если это не офисный сканер, а для дома и с мыслью о скане фотографий, то других вариантов сейчас похоже что и нет — вымерли, никому не надо сканить фотографии с приличным качеством. Кстати и программа сканирования у эпсона единственная вменяемая из всех что я вообще видел. Хоть и несколько упрощена на мой вкус.


        1. DrZlodberg
          22.04.2017 23:45
          +1

          Попробуйте отсканировать документы на стенде, под стеклянной накладкой ;)
          Изредка бывает необходимость что-нибудь быстро сохранить, а из-за стекла иногда бывает сложно подобрать угол при котором чётко видно всю картинку.

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

          Да, а если опять же стенд в темноте со вспышкой снимать — он геометрию поправить сможет? А то там приходится положение камеры вообще вслепую подбирать, чтобы не засвечивать ответкой.


        1. daggert
          23.04.2017 02:00

          У меня фотоальбомы не вмещаются в сканер Mustek A3 порой, и я просто физически не могу их сканировать без еще пары рук, дабы не порвать ту подложку. Приходится фотографировать по отдельности...


      1. Ezhyg
        23.04.2017 07:25

        Это только на словах «щёлк-щёлк-щёлк», на деле же позиционирование фотоаппарата, плюс та же автоподстройка — дольше, чем набитой рукой (к середине тома она станет такой почти независимо от криворукости) — взял папку, перевернул лицом к себе, перевернул страницу, положил на стекло, придавил рукой, нажал кнопку (долго только на словах).
        Камерой будет быстрее если есть штатив (желательно с выносной планкой), равномерное освещение, в помещении рядом с вами не ходят другие люди…
        Ещё — фотографирование нужно обычно в случае — прочитать раз-два. Не важны — наклон, «разноцветность» страниц, возможные смещения страниц и прочие мелкие нюансы, важна только возможность прочитать, пусть даже с неудобствами (и не платить за ксерокопирование). Даже уникальные, в своё время, владельцы зеркалок, обязательно, нет-нет, да просили отсканировать одну-две странички при повторном посещении. Сканирование же даёт намного более равномерные и повторяемые результаты, которые, кстати, ещё юридически подтверждаются и оформляются на месте, в отличие от «фоточек». :P


      1. ClearAirTurbulence
        23.04.2017 11:36

        Дело этим фотосканнером не отсканируейшь. Пробовал документы (плоские А4) им фотографировать — результат отвратительный, гораздо хуже CamScanner и его многочисленных аналогов. Фото он, кстати, тоже весьма посредственно «сканирует», я ожидал от него большего.

        Для фотографирования «140 прошитых страниц» существуют специальные сканеры с V-образным ложем, при наличии реальной потребности и бюджетных ограничениях изготавливаются самостоятельно из пары мыльниц и фанеры.


    1. Dee3
      22.04.2017 23:31

      Есть какие нибудь программы для оцифровки фото? Чтобы сразу с планшетного сканера например сканировались 3 фотки, делалась цветовая коррекция и нарезка в файлы.


      1. edogs
        22.04.2017 23:54

        К большинству сканеров/мфу что-нибудь простенькое идет как фирменная утилита.
        Определяет отдельные фотки, доворачивает до нормали, автокоррекцию цвета/контрастности делает.
        На современных понавороченнее, вплоть до того что можно даже комп не заводить — жмыхаешь кнопку, сканирует, обрабатывает и запихивает в облако.


        1. Dee3
          23.04.2017 00:13
          +1

          Пользуюсь МФУ Xerox, Samsung, Kyocera с достаточно качественными сканерами — подобных утилит от производителя не встречал


          1. edogs
            23.04.2017 00:56

            agfa и epson- были такие проги в комплекте. Не можем сказать что что-то выдающееся, но тупо отсканить кучу фоток без перфекционизма — удобно.
            Основной плюс нормализация ориентации и разбиение на отдельные фотки, цветокоррекция и батником в фотошопе делается неплохо.
            Что любопытно — в проф. моделях того же эпсона эту прогу уже не включали в комплект, только в домашних.
            За современные модели не вспомним сейчас, но какое-то время назад лазерный мфу подбирали — видели варианты от самсунга (вроде) с таким функционалом.


      1. Goodkat
        23.04.2017 00:23

        У сканеров Epson 10 лет назад была программка для сканирования, она как раз именно так и делала — определяла фотки, поворачивала их, и сохраняла в файлы.
        Про цветовую коррекцию не скажу, не знаю.


      1. nerudo
        23.04.2017 10:14

        Vuescan. Умеет автоматическое выделение объектов на скане. Но мне по факту удобнее руками оказалось нарезать. Ну и всякие коррекции цветов-уровней есть, конечно.


  1. elite7
    22.04.2017 23:51

    Ну а если к микроскопу этот алгоритм прикрутить?
    То есть задача: сделать большую картинку без бликов из множества меньшего размера.


    Причем в качестве микроскопа можно использовать насадку к смартфону, а не настоящий настольный микроскоп.


  1. edd_k
    23.04.2017 06:22

    Я так понимаю, что причину бликов устранить — не модное решение ))


    1. Boctopr
      23.04.2017 08:19

      Ну так, нужен же инфоповод, а то что пасмурная погода (на улице) или плотные шторы дома, а может вообще какие то трюки с бумагой и лампочкой.


    1. Roman_Yankovskiy
      23.04.2017 14:53

      Это не всегда возможно технически.


      1. edogs
        23.04.2017 17:28

        Вспышку выключить, сбоку поставить 1-2 достаточно ярких лампы прикрытых «рассеивателем» из пары салфеток и вуаля. Почти везде возможно.


        1. Roman_Yankovskiy
          23.04.2017 18:59
          +1

          Я много работал в архивах в этом году. Во многих нет сканеров большого формата (например, в архиве МГУ или в диссертационном центре в Ленинке). В итоге крупноформатные альбомы приходится фотографировать. Но свет очень поганый, точечные лампы и бьют ровно сверху. Наклонить альбомы тоже не всегда возможно. Про «поставить 1-2 ярких лампы сбоку» я вообще молчу — в государственные архивы и фотоаппарат-то бывает сложно провести.

          В результате мне пришлось фотографировать страницы сбоку, в перспективе, причем по нескольку раз, чтобы попасть резкость. Потом склеивать в фотошопе с учетом перспективных искажений.

          Пример фото


          1. edogs
            23.04.2017 19:57
            -1

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


        1. Bal
          24.04.2017 08:31

          Если покрытие не абсолютно гладкое, то бликует при освещении с любой стороны. Не раз с таким сталкивался :-/ Бывает, даже просто от равномерного света из-за окна лезут «пупырчатые» блики.


  1. Bal
    23.04.2017 11:30
    +3

    Почему-то в комментариях никто не вспомнил «Фотосканер» от Гугла :) Он занимается тем же самым. Только результат получается удручающе низкого разрешения. Геометрия ок, бликов нет, но низкое разрешение — увы...


    ...


    Update: упс. Так это оно и есть? :) Не узнал под другим названием и без упоминания Google...


  1. Foreglance
    23.04.2017 11:57

    С фотографированием обычных (плоских) бликующих предметов тоже может помочь — что-то теряется, конечно, но не всегда критично.

    Фото для сравнения
    image


  1. TigerClaw
    23.04.2017 18:24

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


    1. Bal
      24.04.2017 08:28

      У какой доли пользователей коммуникаторов есть поляризационные фильтры? :)


      1. YouHim
        24.04.2017 09:54

        Первую попавшуюся LCD матрицу разобрал — вот вам и поляризационный фильтр.


        1. vvzvlad
          24.04.2017 14:13
          +1

          Черт, как я не догадался? Это же так просто, LCD-матрицу всего лишь разобрать!


  1. tyratam
    26.04.2017 12:33

    А Гугловым фотосканером никто не пользуется?


    1. Volgarik
      28.04.2017 12:20

      это он и есть


  1. DjOnline
    27.04.2017 11:08

    Очень круто! Есть ещё пожелания:
    1. Если это снимается на телефон, то можно попробовать применить технику superresolution, тем более у нас уже есть несколько снимков одной фотографии (или это её аналог в статье уже и упоминается). Можно также заставить водить медленно телефоном над частями фотокарточки, это позволит сшить итоговое фото с повышенной чёткостью, что актуально в свете матрицы телефонов.
    2. Выпустить всё то же самое в виде desktop приложения и использовать наборы файлов, чтобы не быть привязанным к мобильным телефонам и их камерам, а использовать любые другие устройства.