Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Изображения - пустой лист (http://forums.kuban.ru/f1024/izobrazheniya_-_pustoj_list-4657056.html)

dvserg 20.08.2013 13:58

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

wayerr 20.08.2013 23:08

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

NTFS_ 21.08.2013 00:15

1-wayerr >
Матанализ это сурово.

"Который член придется впору,
Чтобы вставить в зад Тейлору?
Оба члена хороши -
И Лагранжа, и Коши".

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

NTFS_ 21.08.2013 00:16

Рыть хорошие учебники по компьютерной графике (они есть, их не может не есть)

dvserg 21.08.2013 10:26

(2)Тоже думаю в этом направлении. Пока остановился на варианте с использованием весовых показателей: строки и колонки с краю на заданном отступе будут иметь убывающий к краю весовой коэффициент < 1, остальное поле = 1. Анализ производится построчно на соответствие некоторому порогу, ниже которого строка считается пустой.
Спасибо, буду тестировать.

economist 22.08.2013 07:58

Имхо нужно копать в сторону уже написанных велосипедов.

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

У меня была реальное задача - при массовом сканировании на очень мощном МФУ (лоток автоподачи оригиналов сканирования - 200 листов, при среднем "пакете" документов 4 листа) - обеспечить авторазделение файлов-стопок листов по пустой странице-разделителю, чтобы было удобнее заносить в систему эл. док. оборота.

Решил все просто: скрипт брал большой, сырой, от сканера PDF (параметры 200dpi, B/W) разбивал постранично (pdftk.exe), затем перебирал объемы файлов и делил по минимальным (белым, <11 кБ) листам на группы, затем склеивал их обратно (pdftk.exe) в несколько файлов.

Время полной обработки 200-страничного файла (с получением ~45 мелких) - около 2 минут. А если вставлять в лоток каждый пачку отдельно - уходило на возню - 23 минуты.

Написание и отладка скриптов заняла около дня, при том что тема раскуривалась впервые. Ошибок за 3 года эксплуатации не обнаЖурено :-))

Кстати, чтобы не было видно мусора по краям листов - стопку для сканирования накрывали стальным листом и барышня становилась на него на минутку. Заодно стала очень стройной.


Текущее время: 09:49. Часовой пояс GMT +3.