Софт / [Из песочницы] Качественное сканирование на бытовом сканере — идея для софта

в 17:10, , рубрики: грязь, пыль, сканер, сканирование, фотография, метки: , , , ,

Здравствуйте!

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

Казалось бы, решение очевидно — хорошенько протрите сканер, но не всё так просто, как хочется.
Во-первых, идеально стекло всё равно не очистишь, во-вторых, пыль может быть с внутренней стороны, и в-третьих, проблемы, как оказывается, не только с пылью.

Между тем, вполне реально быстро получить качественный результат на более-менее дешёвом бытовом сканере.
Я не программист, поэтому просто хочу поделиться идеей автоматической чистки с уважаемымиами. Если какая-нибудь российская компания воплотит алгоритм в жизнь, буду только рад.

Те же, кто, как и я, пока что чистят фотографии вручную, быть может, тоже найдут что-нибудь полезное под катом (и ~500-600 кб картинок).

Итак, у сканеров мне встречались 4 проблемы:
— грязь и пыль на стекле;
— цветной ареол вокруг контуров;
— неточность привода сканера;
— шумы итоговой картинки.

Если последние 3 проблемы наверняка решены в более дорогих моделях, то от пыли не спасает даже цена.
Но не секрет, что пыль на сканере превращается, в основном, в белые пятна.
Поэтому предлагаю автоматически устранять пыль и цветовые искажения при помощи 2-проходного сканирования.

Идея проста: сканируем одну и ту же картинку с поворотом на 180 градусов, и используем более тёмные участки изображения из 2 результатов.

Почти вся пыль пропала

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

Так же, но простым смешиванием 50 на 50, устраняются цветные ареолы у контуров:

Хроматический ареол пропал

Тут есть одно неудобство: скорее всего, совместить всю картинку сразу не получится.

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

Кстати, даже сами пропорции изображения получаются разными при сканировании с поворотом на 90°:

Искажение пропорций

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

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

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

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

Автор: VaKonS

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js