Ru-Board.club
← Вернуться в раздел «Программы»

» Scan Tailor

Автор: monday2000
Дата сообщения: 28.11.2008 09:08
Adaptive Thresholding using the Integral Image

http://jgt.akpeters.com/papers/BradleyRoth07/

Добавлено:
MATLAB and Octave Functions
for Computer Vision and Image Processing

http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/

Добавлено:
Кое-что по бинаризации есть даже тут:

http://www.codeproject.com/KB/graphics/cximage.aspx

Добавлено:
ImageJ plugins::Thresholding

http://www.pvv.org/~perchrh/imagej/thresholding.html

Добавлено:
А вот весьма любопытные линки не о бинаризации:

http://www.pvv.org/~perchrh/imagej/smooth.html

http://www.pvv.org/~perchrh/imagej/orientation.html
Автор: monday2000
Дата сообщения: 28.11.2008 11:19
Но такого интересного алгоритма бинаризации, как в Book Restorer 4.1, пока нет.
Автор: Tulon
Дата сообщения: 29.11.2008 02:21

Цитата:
Но такого интересного алгоритма бинаризации, как в Book Restorer 4.1, пока нет.

Мой гибридный алгоритм выравнивания освещения с последующей бинаризацией по Otsu дает результаты, очень похожие на BR.
Автор: monday2000
Дата сообщения: 29.11.2008 21:14
Tulon
Вы сами делали Otsu и Sauvola или откуда-то взяли? Кто бы мог подумать - я пока не могу найти работающую реализацию Otsu - в AForge.NET она не работает, в ImageJ - тоже. Вот только в Ocropus нашёл пока работающую Otsu - но блин, там лицензия Apache - а мне нужно GPL.

Sauvola вообще пока обнаружилась только в Ocropus.
Автор: monday2000
Дата сообщения: 30.11.2008 14:34
Я сделал новую заметку:

23. Бинаризация Otsu Thresholding

http://www.djvu-soft.narod.ru/bookscanlib/023.htm
Автор: monday2000
Дата сообщения: 30.11.2008 20:18
Небольшой OFFTOP:

Если кого интересует идея разработки самодельного автоматического книжного сканера - заходите сюда: http://natahaus.info/forums/showthread.php?t=5951

Или проще начать с моей новой статьи:

http://www.djvu-soft.narod.ru/scan/roboscanner.htm
Автор: Tulon
Дата сообщения: 01.12.2008 00:27

Цитата:
Вы сами делали Otsu и Sauvola или откуда-то взяли? Кто бы мог подумать - я пока не могу найти работающую реализацию Otsu - в AForge.NET она не работает, в ImageJ - тоже. Вот только в Ocropus нашёл пока работающую Otsu - но блин, там лицензия Apache - а мне нужно GPL.

Если устраивает GPL3 - то можете взять из СТ. Если нет, то Otsu под GPL2 есть в Gimp'е: Colors -> Threshold -> Auto - это он и есть. Моя реализация сделана под впечатлением Gimp'овской. Sauvola я бы сказал даже проще Otsu. Формула там такая:

Код: threshold = mean * (1 + k * (stddev / R - 1)
Автор: monday2000
Дата сообщения: 01.12.2008 10:31
Tulon

Цитата:
Вот например: http://pubs.iupr.org/DATA/2007-IUPR-11Sep_1129.pdf
У меня он как раз таким способом и реализован.

Это же Sauvola из окропуса. Исходники там есть (в окропусе). Они же под Apache License - можно ли их как GPL делать? Хотя руки просто чешутся передрать оттуда.

Добавлено:

Цитата:
Otsu под GPL2 есть в Gimp'е: Colors -> Threshold -> Auto - это он и есть

Ага, увидел - gimphistogram.c. Что-то он такой здоровенный и сложный на вид - неужели там что-то принципиальное иное, чем окропусовский (обычный) Otsu?
Автор: Tulon
Дата сообщения: 01.12.2008 11:32

Цитата:
Они же под Apache License - можно ли их как GPL делать? Хотя руки просто чешутся передрать оттуда.

Apache License 2.0 совместима с GPL3 но не с GPL2. Кстати моя реализация гораздо чище - посмотрите как у меня строятся интегральные изображения, и как в Ocropus.


Цитата:
неужели там что-то принципиальное иное, чем окропусовский (обычный) Otsu?

По результатам - Otsu есть Otsu, разве что одна реализация может быть быстрее другой.
Автор: monday2000
Дата сообщения: 01.12.2008 12:57
Tulon

Цитата:
По результатам - Otsu есть Otsu

Ну то есть номер порога должен получаться одинаковым на одной и той же картинке - правильно? У той реализации Otsu, что я сделал, номер порога получается во всех случаях такой же, как и у Ocropus Otsu. Интересно, совпадёт ли с Вашей.

Добавлено:
Ура, нашёл под GPL:

http://gamera.sourceforge.net/doc/html/binarization.html
Автор: Arcand
Дата сообщения: 01.12.2008 13:42
monday2000
Вашу увлеченность бинаризацией нахожу э... тратой времени. ИМХО удаление фона, потом автокоррекция и пороговая бинаризация - лучше всего этого. Хотя интересных ссылок Вы накопали, пригодится
Если на то пошло, то бинаризация из lu-binarization.pdf (ссылка в топике приводилась) мне кажется наиболее интересной. Кстати, вопрос к Tulon, Вы реализовали этот алгоритм? Если да, то каковы результаты по Вашему мнению.
Автор: Tulon
Дата сообщения: 01.12.2008 15:11

Цитата:
Если на то пошло, то бинаризация из lu-binarization.pdf (ссылка в топике приводилась) мне кажется наиболее интересной. Кстати, вопрос к Tulon, Вы реализовали этот алгоритм? Если да, то каковы результаты по Вашему мнению.

Да, реализовал. Не в чистом виде, а даже лучше. В методе lu-binarization.pdf я вижу проблему - если на скане имеются картинки, в особенности темные, они потянут на себя полиномиальную поверхность, в результате чего она станет темнее, и может местами слиться с полезным контентом. В моем варианте сначала делается морфологическое выделение фона, потом определение явного не-фона, и уже потом построение полиномиальной поверхности с игнорированием явного не-фона. В общем то же, что и в lu-binarization.pdf, только там дважды строится полиномиальная поверхность, а у меня в первом случае - морфологическое выделение фона.
Результаты этого алгоритма очень напоминают нормализацию освещения в BR.

Кстати я до сих пор жду скана с тенью на цветной картинке - сделайте кому не влом. Скан этот мне нужен для тестирования цветной версии этого алгоритма.
Автор: Arcand
Дата сообщения: 01.12.2008 15:46
Tulon

Цитата:
Кстати я до сих пор жду скана с тенью на цветной картинке
Старался сделать как можно хуже
http://abab.front.ru/0003.jpg

Цитата:
Да, реализовал. Не в чистом виде, а даже лучше. В методе lu-binarization.pdf я вижу проблему - если на скане имеются картинки, в особенности темные, они потянут на себя полиномиальную поверхность, в результате чего она станет темнее, и может местами слиться с полезным контентом.
Хорошо, а как в случае, клгда область сканировании больше странице, т.е. в случае черной окантовки (или очень глубокой тени от корешка)? Она ведь потянет за собой поверхность.
Автор: Tulon
Дата сообщения: 01.12.2008 16:03

Цитата:
Старался сделать как можно хуже
http://abab.front.ru/0003.jpg

В принципе подойдет, хотя не отказался бы от чего-нибудь поцветастие.


Цитата:
Хорошо, а как в случае, клгда область сканировании больше странице, т.е. в случае черной окантовки (или очень глубокой тени от корешка)? Она ведь потянет за собой поверхность.

В общем случае это была бы проблема, но в случае СТ она легко решается - полиномиальная поверхность строится только в зоне прямоугольника контента. Поля в таком случае вполне можно заливать белым - проверял, границы не видно.
Автор: Arcand
Дата сообщения: 01.12.2008 16:29
Tulon

Цитата:
хотя не отказался бы от чего-нибудь поцветастие
Завтра или послезавтра поищу среди детских книг, у меня с цветными напряженка
Автор: monday2000
Дата сообщения: 01.12.2008 17:08
Arcand

Цитата:
Вашу увлеченность бинаризацией нахожу э... тратой времени.

Да ладно, всё в хозяйстве пригодится.

Цитата:
бинаризация из lu-binarization.pdf (ссылка в топике приводилась) мне кажется наиболее интересной

Вот эта ссылка: http://www.comp.nus.edu.sg/~tancl/Papers/ICDAR07/lu-binarization.pdf
Я пока не собираюсь самостоятельно создавать алгоритмы по их словесным описаниям. Ведь ещё много есть чего чужого готового и интересного - что можно передрать себе. За то время, пока я буду выдумывать из бумажки свой алгоритм - я успею передрать чужих 2-3. Вот когда чужие интересные алгоритмы закончатся - тогда начну писать свои (по PDF-описаниям).

Кстати - а Вы сами не хотите этим же заняться? По-моему, это более продуктивно, чем делать кореловские плагины.
Автор: Arcand
Дата сообщения: 01.12.2008 17:25
monday2000
Цитата:
Кстати - а Вы сами не хотите этим же заняться? По-моему, это более продуктивно, чем делать кореловские плагины.
Мне неловко клянчить кое-какой код у Tulon - это раз. То, что я хочу сделать, нет в готовом виде. Это выделение картинок, сглаживание букв и выделение цветного текста (не постеризация, вроде так называется, - это не то). Сейчас я переезжаю с Билдера на Вижуал (уже перехал) и надо довести до ума удаление фона.
Автор: Tulon
Дата сообщения: 01.12.2008 19:39
Автоматическое выделение картинок у меня есть и работает, правда еще нет в SVN, потому как в том файле постоянный work-in-progress. Сейчас например пытаюсь совместить автовыделение картинок с выравниванием освещения, потому что без него слишком хорошо заметны неровные края маски, которую генерирует алгоритм автовыделения картинок от U238. Для серых картинок уже совместил, для цветных - work-in-progress.

Добавлено:
Кстати код для генерации полиномиальных поверхностей могу хоть сейчас залить в SVN. Код там уже вычищен.
Автор: monday2000
Дата сообщения: 01.12.2008 21:38
Arcand

Цитата:
То, что я хочу сделать, нет в готовом виде.

Я Вам совершенно серьёзно предлагаю попробовать свои силы в деле реализации недостающих алгоритмов. Ну хотя бы попытайтесь - "для очистки совести".
На всякого рода выделение (картинок и текста) есть уйма готовых алгоритмов. Я то и дело на них натыкаюсь в своих поисках. Начать можно хотя бы с Лептоники - там это есть. Вот тут это есть: http://gamera.sourceforge.net/ . Очень оригинальная вещь в этом отношении - GOCR (там реально разобраться). У меня вообще возникло общее ощущение, что по Pattern Recognition гораздо больше всего, чем по Color Enhance (именно поэтому я и занимаюсь сейчас не Pattern Recognition, а Color Enhance - в первую очередь нужно развивать самое слабое звено).

Цитата:
Сейчас я переезжаю с Билдера на Вижуал (уже перехал) и надо довести до ума удаление фона

Надеюсь, Вы будете использовать лицензию "GPL 2 и выше"? Чтобы мы могли друг с другом свободно кодами обмениваться. А какую графическую библиотеку Вы избрали?
Вот ещё бы U235 соблазнить перейти с "бессмысленного" матлаба на что-то более толковое (т.е. низкоуровневое) - вот было бы здорово - нас стало бы уже четверо.

Цитата:
Да, у меня будет просьба: для тестов нужен скан, где тень от корешка наезжает на цветную картинку. Скан должен быть цветной, и желательно чтобы цвет бумаги был погрязнее.

Чем богаты:
http://w18.easy-share.com/1702641736.html (32 МБ)
Автор: monday2000
Дата сообщения: 02.12.2008 10:55
Робофорум -> Компьютерное зрение -> Алгоритмы

http://www.roboforum.ru/viewforum.php?f=37
Автор: monday2000
Дата сообщения: 03.12.2008 08:20
Вот с Натахауса идея:

Есть в Фотошопе некий фильтр:

Цитата:
Для удаления растра самый лучший, быстрый и эффективный метод - плагин Sattva Descreen

А вот образец его работы: http://www.sattva.ru/soft/descreen/descreen.htm

Добавлено:
Illustrated Book Study: Digital Conversion Requirements Printed Illustrations в 2 частях:
http://www.loc.gov/preserv/rt/illbk/ibs.htm
http://www.loc.gov/preserv/rt/illbk/ibs2.html
А вот и их чахлая буржуйская инициатива:
http://www.picturel.com/booktools/
Автор: Arcand
Дата сообщения: 03.12.2008 15:15
Tulon

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

monday2000

Цитата:
Я Вам совершенно серьёзно предлагаю попробовать свои силы в деле реализации недостающих алгоритмов. Ну хотя бы попытайтесь - "для очистки совести".
А я что делаю?

Цитата:
Надеюсь, Вы будете использовать лицензию "GPL 2 и выше"?
Если честно, то я не читал никаких лицензий подобного рода. Исходники буду выкладывать без каких-либо условий. Если что сдеру и это что-то нарушает, то выкладывать буду анонимно. Пока думаю так.

Цитата:
А какую графическую библиотеку Вы избрали?
Никакую . Я намереваюсь делать только плагины для Корела. Это позволяет не морочится с открытием и закрытием изображений. Только воткнуть фильтр и все готово. Болванка есть, осталось разобраться с передачей параметров плагину при запуске через скрипт (и их записью в скрипт).


Tulon
Вот еще скан http://abab.front.ru/0004.jpg
Автор: denver 22
Дата сообщения: 03.12.2008 15:17
Всем привет. Вот впервые решил на реальном проекте потестить программу. Версия 0.9.0 под Виндой.
Пишу в процессе обработки. Т.к. руководства по работе я не нашел, делаю интуитивно.
- сначала без ручного просмотра всех страниц прогоняю обработку "по-умолчанию" (первичные настройки меня устраивали).
- начал проверять результаты, находясь на вкладке Output. Вопрос:
1. Обнаружено неправильное определение области текста, причем эта страница стала определяющей для формирования общих размеров для всех сканов. Я поправил область, в Output сразу страница поправилась. Надо ли при этом прогонять весь проект заново, чтобы переопределить размеры страниц?
2. А где собственно вывод результата? А файлы? Или он все ещё не реализован?

Прошу указать на ошибки в самом процессе обработке, последовательности действий

Добавлено:
Да, и в этой программе таблицы на всю страницу, перевернутые под 90 градусов определяются с точностью 15-20%. Т.е почти все - неправильно. Это исправимо?

Добавлено:
Похоже начинаю догонять...
Это что, на каждом этапе (которые слева наверху) надо Процесс запускать?
Или все таки можно все сразу настроить (ну, что можно), и на предпоследней вкладке процесс запустить. А уж по результату поправки делать на каждую страницу?
Похоже выходные файлы получаются при запуске процесса на последнем этапе?

...прошу предыдущие вопросы не игнорировать

Глюк: файлы были именованы по схеме 1 2 3...123...256. Закрыл проект, открыл. А он мне расположил файл 1 10 100 101...и дальше по какой-то своей логике. Выходные файлы - так же. Короче проект был порушен.
Автор: Tulon
Дата сообщения: 03.12.2008 18:36
Arcand
Вот, недеюсь разберетесь:
PolynomialSurface.h
PolynomialSurface.cpp


Цитата:
Только уточнете, SVN это где?

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

Добавлено:
Arcand

Цитата:
Интересно, что если порядок полинома 9 и больше, то на краю контент все равно чистится, даже если это типа штрих кода. При меньших значениях тень от корешка почти не удаляется. Придется делать опцию для включения полиномиального сглаживания на краях скана.

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


Добавлено:
denver 22

Я рекомендую такую последовательность действий:
1. Если нужно, вручную поправить ориентацию страниц на стадии Fix Orientation.
2. Сразу переходим на Select Content и там запускаем Batch Processing. Эта стадия на данный момент самая проблемная - на ней большинство ошибок и возникает. Batch processing завершился - правим ошибки. Если ошибок много, лучше всего просмотреть все страницы вручную. Если немного - пользуемся функцией Widest Page / Tallest Page. Сорри, этих функций на этапе Select Content нет (пунктик насчет этого есть в TODO). Они есть на Page Layout, но тогда вам придется скакать туда сюда между Page Layout и Select Content.
3. На Page Layout пакетную обработку запускать нет смысла - поскольку на этой стадии ничего умного СТ сделать не может - только проставить поля по умолчанию. Так что правим там параметры вручную и применяем ко всем страницам. Потом можно будет отдельным страницам задать другие параметры.
4. Идем на Output, выставляем параметры, опять же применяем ко всем страницам, и делаем Batch Processing.


Цитата:
- начал проверять результаты, находясь на вкладке Output. Вопрос:
1. Обнаружено неправильное определение области текста, причем эта страница стала определяющей для формирования общих размеров для всех сканов. Я поправил область, в Output сразу страница поправилась. Надо ли при этом прогонять весь проект заново, чтобы переопределить размеры страниц?

Если вы уже успели прогнать Batch Processing на Output'е, то да - надо.


Цитата:
2. А где собственно вывод результата? А файлы? Или он все ещё не реализован?

После прогона Batch Processing на этапе Output. Отдельный файлик можно и без Batch Processing произвести.


Цитата:
Да, и в этой программе таблицы на всю страницу, перевернутые под 90 градусов определяются с точностью 15-20%. Т.е почти все - неправильно. Это исправимо?

Над стадией Select Content еще работать и работать.


Цитата:
Похоже выходные файлы получаются при запуске процесса на последнем этапе?

А также если просто перейти на данный этап и походить по файлам, которые хотите переделать.
Цитата:
Глюк: файлы были именованы по схеме 1 2 3...123...256. Закрыл проект, открыл. А он мне расположил файл 1 10 100 101...и дальше по какой-то своей логике. Выходные файлы - так же. Короче проект был порушен.

Похоже на баг - проверю.
Автор: monday2000
Дата сообщения: 03.12.2008 22:25
Вот бы нам ещё Melirius'а привлечь к алгоритмированию... Он же что-то такое уже начал делать. Пусть хотя бы перешёл в этот топик из топика по сканированию - с т.е. с обсуждением своих алгоритмов.
Автор: denver 22
Дата сообщения: 04.12.2008 08:45
Tulon, спасибо за ответ. Даже при самостоятельном изучении с программой можно очень быстро разобраться. Это радует. Помню как голову ломал с СК (но программа хорошая, кучу книг ею сделал. Не без помощи monday2000).
В описании алгоритма работы в п.3 исправь пожалуйста опечатку "На Page Output пакетную обработку..." на "На Page Layout пакетную обработку...", чтобы другие не путались.

Теперь могу высказать первое впечатление рядового пользователя (сканы были средней сложности):
- обработка до конечного результата показалась несколько проще и как будто значительно быстрее, чем в СК
- "первичная очистка" по качеству мне понравилась. Остались только явные большие "кляксы". Очень приятно.
- проблемы в определении границ страницы выявились не только на таблицах (см. выше), но и на графиках, которые занимают бОльшую часть страницы, с сеткой систем координат. ИМХО таких таблиц и графиков не много бывает, не страшно и руками поправлять. Но если алгоритм улучшится, будет просто чудесно
- Тоже столкнулся с проблемой формата PNG. И Document Express Editor, и DjVu Small, которыми я пользуюсь для кодирования в DJVU, не работают с ним.
Отсюда вопрос: Посоветуйте, как правильней поступить: конвертировать в tiff (не будет ли потери качества) и работать с ним как обычно, или может есть программа, которая из PNG кодирует DJVU?

По поводу глюка: я был не совсем точен. После закрытия проекта я удалил из исходников последний скан. А когда открыл проект снова - получил этот кавардак с последовательностью сканов. Но, думаю, все равно надо это учесть...
Автор: Tulon
Дата сообщения: 04.12.2008 11:57

Цитата:
В описании алгоритма работы в п.3 исправь пожалуйста опечатку "На Page Output пакетную обработку..." на "На Page Layout пакетную обработку..."

Поправил.


Цитата:
Отсюда вопрос: Посоветуйте, как правильней поступить: конвертировать в tiff (не будет ли потери качества) и работать с ним как обычно, или может есть программа, которая из PNG кодирует DJVU?

Есть у меня пункт в TODO чтобы выводить TIFF вместо PNG, а пока придется конвертировать вручную. Потерь качества не будет, если конечно не использовать сжатие jpeg в TIFF. Сжатие deflate тоже использовать нельзя - его не поддерживают LizardTech'овские программы. В общем нужна программа пакетного конвертирования, которая позволяла бы выбрать тип сжатия в TIFF. Тут я ничего посоветовать не могу. Сам пользуюсь command-line утилитой "convert" из под Linux.
Автор: denver 22
Дата сообщения: 04.12.2008 13:06
Ну под Виндой я традиционно конвертирую в ACDSee. Ч/б, несжатый TIFF. И уже так и сделал. Скоро первая книга, прошедшая обработку в ST будет готова и выложена на сайте .

В Linux я ещё новичок, но активно изучаю. Поэтому напиши пожалуйста параметры для пакетной конвертации png в tiff утилитой "convert".
Если у меня будут проблемы с компиляцией программы под Linux (у меня Mandriva 2009.0), могу к тебе обратиться?

Добавлено:
P.S. мои претензии (где-то в начале этого топика) об интерфейсе программы я снимаю. Учитывая удобство программы в целом, расположение окон в программе и приглашение для создания/открытия проекта оказались вполне приемлемыми. главное, надо было начать пользоваться прогой на реальном проекте
Автор: Tulon
Дата сообщения: 04.12.2008 14:03

Цитата:
В Linux я ещё новичок, но активно изучаю. Поэтому напиши пожалуйста параметры для пакетной конвертации png в tiff утилитой "convert".


Код: find . -name "*.png" -exec convert -compress LZW '{}' '{}.tiff' ';'
Автор: monday2000
Дата сообщения: 04.12.2008 23:09
Я сделал новую заметку:

24. Бинаризация Sauvola Thresholding из OCRopus

http://www.djvu-soft.narod.ru/bookscanlib/024.htm

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: Невозможно установить Acronis True Image Home v10.0.4940


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.