Здравствуйте!
Каждый, кто достаточно часто сканирует фотографии, знает, сколько времени порой уходит на чистку скана от пыли и прочего аналогового мусора.
Казалось бы, решение очевидно — хорошенько протрите сканер, но не всё так просто, как хочется.
Во-первых, идеально стекло всё равно не очистишь, во-вторых, пыль может быть с внутренней стороны, и в-третьих, проблемы, как оказывается, не только с пылью.
Между тем, вполне реально быстро получить качественный результат на более-менее дешёвом бытовом сканере.
Я не программист, поэтому просто хочу поделиться идеей автоматической чистки с уважаемыми хабровчанами. Если какая-нибудь российская компания воплотит алгоритм в жизнь, буду только рад.
Те же, кто, как и я, пока что чистят фотографии вручную, быть может, тоже найдут что-нибудь полезное под катом (и ~500-600 кб картинок).
Итак, у сканеров мне встречались 4 проблемы:
— грязь и пыль на стекле;
— цветной ореол вокруг контуров;
— неточность привода сканера;
— шумы итоговой картинки.
Если последние 3 проблемы наверняка решены в более дорогих моделях, то от пыли не спасает даже цена.
Но не секрет, что пыль на сканере превращается, в основном, в белые пятна.
Поэтому предлагаю автоматически устранять пыль и цветовые искажения при помощи 2-проходного сканирования.
Идея проста: сканируем одну и ту же картинку с поворотом на 180 градусов, и используем более тёмные участки изображения из 2 результатов.
От нескольких десятков пылинок осталась лишь одна, которая и была на самом отпечатке.
Заметьте, результат получен без потери деталей изображения и без единого мазка ретуширующей кисти, что сильно экономит время.
Так же, но простым смешиванием 50 на 50, устраняются цветные ореолы у контуров:
Тут есть одно неудобство: скорее всего, совместить всю картинку сразу не получится.
Видимо, датчик сканера движется неравномерно, картинка деформируется местами сильнее, и простое растягивание-сжатие всего изображения не помогает.
Поэтому вручную приходится обрабатывать по кускам.
Но, думаю, если подобный алгоритм сканирования будет реализован в программе, то автоматически найти контуры изображений и совместить их будет не так сложно.
Кстати, даже сами пропорции изображения получаются разными при сканировании с поворотом на 90°:
При этом, по одной оси, перпендикулярной движению сканера, размер должен быть правильный.
И, добавив ещё один проход с поворотом на 90°, можно исключить неравномерность привода сканера и получить точные размеры по обеим осям.
Итого, 3 раза сканируем картинку и на выходе (полностью автоматически в случае с программой) получаем близкое к идеалу — для данного сканера — изображение.
Программ же, позволяющих чистить остаточные шумы картинки, и так уже существует достаточно много.
Конечно, возможно, что такой способ уже кем-то был реализован, и только мне такие программы не известны.
Что скажете, хабра-люди?
Каждый, кто достаточно часто сканирует фотографии, знает, сколько времени порой уходит на чистку скана от пыли и прочего аналогового мусора.
Казалось бы, решение очевидно — хорошенько протрите сканер, но не всё так просто, как хочется.
Во-первых, идеально стекло всё равно не очистишь, во-вторых, пыль может быть с внутренней стороны, и в-третьих, проблемы, как оказывается, не только с пылью.
Между тем, вполне реально быстро получить качественный результат на более-менее дешёвом бытовом сканере.
Я не программист, поэтому просто хочу поделиться идеей автоматической чистки с уважаемыми хабровчанами. Если какая-нибудь российская компания воплотит алгоритм в жизнь, буду только рад.
Те же, кто, как и я, пока что чистят фотографии вручную, быть может, тоже найдут что-нибудь полезное под катом (и ~500-600 кб картинок).
Итак, у сканеров мне встречались 4 проблемы:
— грязь и пыль на стекле;
— цветной ореол вокруг контуров;
— неточность привода сканера;
— шумы итоговой картинки.
Если последние 3 проблемы наверняка решены в более дорогих моделях, то от пыли не спасает даже цена.
Но не секрет, что пыль на сканере превращается, в основном, в белые пятна.
Поэтому предлагаю автоматически устранять пыль и цветовые искажения при помощи 2-проходного сканирования.
Идея проста: сканируем одну и ту же картинку с поворотом на 180 градусов, и используем более тёмные участки изображения из 2 результатов.
От нескольких десятков пылинок осталась лишь одна, которая и была на самом отпечатке.
Заметьте, результат получен без потери деталей изображения и без единого мазка ретуширующей кисти, что сильно экономит время.
Так же, но простым смешиванием 50 на 50, устраняются цветные ореолы у контуров:
Тут есть одно неудобство: скорее всего, совместить всю картинку сразу не получится.
Видимо, датчик сканера движется неравномерно, картинка деформируется местами сильнее, и простое растягивание-сжатие всего изображения не помогает.
Поэтому вручную приходится обрабатывать по кускам.
Но, думаю, если подобный алгоритм сканирования будет реализован в программе, то автоматически найти контуры изображений и совместить их будет не так сложно.
Кстати, даже сами пропорции изображения получаются разными при сканировании с поворотом на 90°:
При этом, по одной оси, перпендикулярной движению сканера, размер должен быть правильный.
И, добавив ещё один проход с поворотом на 90°, можно исключить неравномерность привода сканера и получить точные размеры по обеим осям.
Итого, 3 раза сканируем картинку и на выходе (полностью автоматически в случае с программой) получаем близкое к идеалу — для данного сканера — изображение.
Программ же, позволяющих чистить остаточные шумы картинки, и так уже существует достаточно много.
Конечно, возможно, что такой способ уже кем-то был реализован, и только мне такие программы не известны.
Что скажете, хабра-люди?