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

» Scan Tailor

Автор: bolega
Дата сообщения: 17.09.2008 10:17
U235

Цитата:
Нет это не определитель зон, это лучше

Смотря для чего лучше. Зависит от того, что дальше делать с фоном. На мой взгляд автосегментация все-таки лучше, т.к. оставляет только иллюстрации, а остальное заменяет на белое (!). В Вашем же варианте остается весь фон (неизбежен при сканировании), который абсолютно не нужен, увеличивает размер djvu и ухудшает его качество. Т.е. выполняет работу, которую хорошо делает и djvu-кодек. Или я не прав?
Т.е. перечисленные Вами недостатки являются на самом деле его преимуществами, главное из которых - избавление от ненужног содержимого.
Если нужен именно весь фон, т.е. все, что не текст, то можно просто посмотреть как это реализовано в djvulibre. Определить фон - это вообще не проблема (напр., corr.illum в sk как раз и делает эту операцию - определяет фон), другое дело - вычленить из этого фона действительно полезные рисунки, а не просто паразитные тени, разводы и цветные аберрации, вызванные дефектами сканирования.
Автор: Tulon
Дата сообщения: 17.09.2008 11:11

Цитата:
На мой взгляд автосегментация все-таки лучше, т.к. оставляет только иллюстрации, а остальное заменяет на белое (!).

Так в этом как раз весь смысл алгоритма от U235. Определить маску картинок, чтобы оставить их в покое, а остальное бинаризовать.
Автор: U235
Дата сообщения: 17.09.2008 11:21
bolega

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

Нет, не совсем так. Скрипт тоже, как и SK заменяет фон на белое и оставляет только иллюстрации. Т.е. разница в том что SK использует маскирование растровых рисунков с помощью векторных объектов (прямоугольник, полигон, овал), скрипт - растровых (бинарная маска).
Деление происходит не текст/фон, а растровые рисунки/все остальное. Рисунки - слегка размываются, чтобы удалить растр, а все остальное бинаризируется, затем все снова собирается в один тиф. Постараюсь в ближайшее время выложить примеры работы скрипта, для наглядности.
Причем в скрипте используется то, что растровый рисунок состоит из множества близко расположенных точек - растра.
Выравнивание освещенности перед выделением рисунков - это совсем другая задача и, насколько я знаю, автор ST над этой проблемой тоже работает.
Автор: bolega
Дата сообщения: 17.09.2008 11:49
U235
Спасибо. Теперь понял
Автор: monday2000
Дата сообщения: 19.09.2008 11:30
U235
Не могли бы Вы реализовать на Матлабе технологию, описанную в http://www.djvu-soft.narod.ru/scan/corel_scan.htm ?
Автор: U235
Дата сообщения: 19.09.2008 13:21
monday2000
Нет, во-первых дело в том, что, например, название фильтра "Интеллектуальная размытость" ничего не говорит об используемом алгоритме, анализировать "как оно там работает" - можно, но слишком накладно, есть более интересные вещи. Во-вторых, будут сложности с интерфейсно-программной частью (менюшки, низкая скорость работы).
И какой смысл в этом и кому это может быть нужно?
Автор: Tulon
Дата сообщения: 19.09.2008 15:10
Выложил TODO на сайт. С одной стороны, меньше будет одних и тех же вопросов и пожеланий, а с другой - может кто какую идею подкинет по тому или иному пункту. Была мысль включить комментарии, но на данный момент из-за ограничений SourceForge, невозможно реазиловать уведомления. Так что пока решил не делать.
Автор: Arcand
Дата сообщения: 20.09.2008 06:56
U235
У меня к Вам просьба. Разбираться во всем времени сейчас особо нет. А Вам, возможно, моя просьба будет не очень обременительной. Сможете что-то посоветовать или посодейстовать - хорошо, нет - отложу до лучших времен.
Есть мысль прикрутить автоматическое выделение растровых рисунков (Вашу разработку) к макросам Корела. Пусть выделение будет не идеальным, править будет все же легче, чем выделять вручную.
Что требуется - сохранить маску выделения некоторого скана (или для всех сканов) в отдельный файл, если найдены растровые рисунки. Например, скан 0016.tif, его маска - файл m0016.tif.
Пусть это будет некая прога, которую я буду запускаеть из Корела (как сделать лучше, надо смотреть). Она создаст маску. Потом эту маску я добавлю в сканы в качестве альфа-канала. Вот такая задумка.

ЗЫ: Как вариант, ссылки на графические библиотеки и примерный код на каком-нибудь языке по созданию файла маски. Остальное, думаю, я смог бы быстро сделать сам.
Автор: monday2000
Дата сообщения: 21.09.2008 16:01
U235

Цитата:
И какой смысл в этом и кому это может быть нужно?

Если бы перенести с Корела на Матлаб, то наверное, потом проще было бы с Матлаба на СТ перенести. Корел - это хорошо, но не может быть массово-популярным по определению.

Добавлено:
В идеале хорошо бы иметь Corel PHOTO-PAINT, Matlab и пр. в качестве некоего полигона, где обкатывать новые алгоритмы и идеи по сканобработке, затем тем или иным путём раздобывать их исходники (или аналогичные исходники) и реализовывать всё это уже в СТ.

А иначе - какой смысл что в Corel PHOTO-PAINT, что в Matlab? Только "игрушка для избранных".
Автор: Tulon
Дата сообщения: 21.09.2008 16:14
Большая часть того, что есть в Кореле, есть и в Gimp'е. Например интеллектуальное размывание - это скорее всего ни что иное, как выборочное размывание, то есть размывание везде, кроме как в зонах резких перепадов яркости. Так что если что куда переносить, то лучше всего прямо из Gimp в СТ. И то и другое open source, лицензии совместимы.
Вот только никто толком не скажет, какие именно функции из Корела он хотел бы видеть в СТ.
Автор: monday2000
Дата сообщения: 21.09.2008 16:28
U235
Arcand
Обратите внимание на графическую библиотеку FreeImage http://freeimage.sourceforge.net/ . Библиотека исключительно проста, понятна и удобна в использовании.

Вы, U235, могли бы брать некие интересные Matlab-алгоритмы и "перебивать" их под FreeImage.

Вы, Arcand, могли бы пытаться реализовать интересные Вам возможности Corel PHOTO-PAINT на FreeImage.

Эти алгоритмы могут выглядеть как консольные программы на языке СИ или Делфи, обращающиеся к FreeImage.dll.

FreeImage может послужить в роли "общего знаменателя", к которому можно привести всякие разношёрстные Интернет-алгоритмы по работе с растром. А уже имея какой-либо алгоритм на базе FreeImage, его потом нетрудно "перебить" под любую другую платформу - будь то хоть СТ, хоть СК, или что угодно.

Не пожалейте 15-20 минут и почитайте PDF-хелп к FreeImage http://downloads.sourceforge.net/freeimage/FreeImage3110.pdf - сразу увидите, насколько FreeImage проста, понятна и удобна.

Чтобы работать с FreeImage, достаточно иметь самые минимальные навыки программирования. Идею использовать FreeImage мне подал AndyZ.

Добавлено:

Цитата:
то лучше всего прямо из Gimp в СТ.

В общем, тот или иной "общий знаменатель" нужен - если FreeImage, скажем, не всем нравится, то пусть общим знаменателем будет СТ - дело вкуса. Но мне кажется, что проще чем FreeImage, трудно что-либо придумать.

Добавлено:
Tulon

Цитата:
Вот только никто толком не скажет, какие именно функции из Корела он хотел бы видеть в СТ.

Это надо у Arcand спросить - как у специалиста по Корелу. Лично мне хотелось бы видеть в СТ такой инструментарий, который позволял бы делать обработку Grey 300 -> BW 600 с минимальными издержками по увеличению размера результирующего DjVu. Короче, чтобы DjVu распухал на выходе не в 2 раза, как сейчас по методу ScanAndShare, а не более чем на 50 процентов (хотелось бы 30% в идеале). Arcand уже как-то исхитрился достигать этой цели в http://www.djvu-soft.narod.ru/scan/corel_scan.htm - вот если бы СТ так умел бы тоже...
Автор: U235
Дата сообщения: 22.09.2008 11:06
Arcand

Цитата:
Пусть это будет некая прога, которую я буду запускаеть из Корела

Я думаю, что все можно попробовать сделать штатными средствами Корела, без дополнительных программ. На днях погляжу.
monday2000

Цитата:
А иначе - какой смысл что в Corel PHOTO-PAINT, что в Matlab? Только "игрушка для избранных".

В Matlab/Scilab/Octave можно быстро реализовать и отладить и потестировать тот или иной алгоритм. Если результат удовлетворительный, тогда уже можно думать о реализации его на C++ или другом языке.
Автор: monday2000
Дата сообщения: 22.09.2008 11:56
U235

Цитата:
Если результат удовлетворительный, тогда уже можно думать о реализации его на C++ или другом языке.

Я именно об этом и говорю.
Автор: Arcand
Дата сообщения: 22.09.2008 12:25
Tulon
Цитата:
Вот только никто толком не скажет, какие именно функции из Корела он хотел бы видеть в СТ
Какая-то обработка сканов после Page Layout и перед или вместо Output нужна. На основании моего опыта обработки сканов, в первую очередь с Корелом, обработка могла бы выглядить так.
В СТ добавлен пункт Процессинг и в соответствующем поле чекбоксы и регулировки фильтров. Их очередность можно сделать нерегулируемой.
1. Адаптивное размытие. Уменьшает мусор, потом после фильтра резкости не вылезают неоднородности фона.
2. Коррекция освещенности. Убирает неоднородности освещения, в первую очередь у корешка. Позволит потом не морочиться с адаптивной бинаризацией.
3. Ресемплинг.
4. Автокоррекция. В Корел тоновый диапазон растягивается на всю ширину. Лучше задать тон самого черного регулируемым - чтобы было не 0 а, скажем, 20.
5. Сглаживание. Сглаживание вдоль контуров.
6. Контурная резкость (нерезкая маска). Делает контуры букв четкими а сами буквы более черными.
7. Сглаживание. Имеет смысл ее делать перед бинаризацией. Сглаживает еще раз плюс можно варьировать жирность букв при бинаризации.
8. Бинаризация. Достатосно пороговой.

Включаем по очереди чекбоксы, смотрим и корректируем результат.

monday2000
Цитата:
Обратите внимание на графическую библиотеку FreeImage
Хорошо.

U235
Цитата:
Я думаю, что все можно попробовать сделать штатными средствами Корела, без дополнительных программ.
Увы, я ничего подходящего не нашел. Было бы здорово добавить свой плагин в подключаемые модули выделения (в меню Выделение). Вроде бы фотошоповские можно подключать к Корелу. Но я не знаю, есть ли в Фотошопе подходящие.
Автор: monday2000
Дата сообщения: 22.09.2008 13:21
Arcand

Цитата:
Хорошо.

Загляните ещё сюда: http://www.djvu-soft.narod.ru/bookscanlib/001.htm . Это простейший примерчик: загрузить картинку и сохранить её в другой формат. Код прост и понятен, как пареная репа. Смысл работы с FreeImage прост:

1. Открываем файл в любом поддерживаемом графическом формате (их десятки, причём тот же TIF великолепно поддерживается - любые подвиды TIF, и даже метатеги и многостр. тифы) с диска и загружаем его в память во внутрибиблиотечный универсальный формат FIBITMAP* (расширенный аналог несжатого BMP, и на PBM тоже похож).

2. Делаем, всё что нам нужно, с матрицей пикселей, доступных через FIBITMAP* (т.е. реализуем любой нужный алгоритм).

3. Сохраняем обработанный FIBITMAP* в любой поддерживаемый FreeImage граф. формат.

Таким образом, работа программиста упрощается до предела. Кстати, по PDF-хелпу можно легко разобраться с приёмами работы с FreeImage - т.к. в хелпе есть готовые характерные куски кода, иллюстрирующие работу с библиотекой.
Автор: Arcand
Дата сообщения: 22.09.2008 16:48

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

ЗЫ: Блин, в инете, куда не сунься, везде порнушка - напомнили, чем наши люди занимаются в свободное время . Как скучно мы здесь живем
Автор: U235
Дата сообщения: 23.09.2008 07:42
Arcand
Последовательность действий в Corel Photo Paint для маскирования растровых рисунков. Скрипт для матлаба работает немного по другому, но релультат на моем тестовом изображении получился похожий.
[more]
Примечание: желательно чтобы сканы были нормализированы Ajust/Auto Ajust.
1. Открыть example3.tif
2. Edit/Copy, Edit/Paste/New from Clipboard (new-1.cpt), Edit/Paste/New from Clipboard (new-2.cpt)- создаем 2 копии исходного изображения.
3. new-1.cpt - Effects/Niose/Minimum (100%, r=1), new-2.cpt - Effects/Niose/Maximum (100%, r=1) - что соответствует b_d и w_d матлаб. переменным.
4. Image/Calculations s1=new1.cpt(Invert), s2=new2.cpt, Multiply, Destination: new3.cpt - выделение контуров букв и рисунков, соответствует g матлаба.
5. Edit/Copy(new-3.cpt), Edit/Paste/New from Clipboard (new-4.cpt) создаем дубль.
6. Работем с new-4.cpt: Effects/Niose/Median (r=20), контуры букв почти пропадают, картинка - размазывается. new-4.cpt - Effects/Niose/Minimum (100%, r=20), new-4.cpt - Effects/Niose/Maximum (100%, r=20) - фон черный, букв нет, на месте картинки - светлое пятно.
7. new-4.cpt Image/Convert to Black and White(Lineart) (порог подобрать!), Image/Convert to Black and White(Lineart), Image/Convert to Grayscale - получаем ч/б маску для картинки.
8. Image/Calculations s1=new4.cpt, s2=example3.tif, Logical OR, Destination: new5.cpt - Текст и lineart, без картинки (передний план для djvu). (усилить контраст и бинаризовать).
9. Image/Calculations s1=new4.cpt(Invert), s2=example3.tif, Logical OR, Destination: new5.cpt - картинка на белом (фон для djvu). ее лучше сгладить Гауссом или медианой.
[/more]
Образец и результаты тут: http://rapidshare.com/files/147606258/test.rar.html (в jpg ~1 Mb)
В принципе в Corel я представляю как можно делать и выравнивание неоднородности фона, но число операций будет ~ 100, без VBA точно не обойтись.
Автор: monday2000
Дата сообщения: 23.09.2008 09:40
Arcand

Цитата:
Как скучно мы здесь живем

Ничего, зато у нас есть мощнейшая идея - создание развитой и популярной книгосканировочной технологии. Ради этого можно и поскучать. И перспективы ведь неплохие (особенно если пойти "путём FreeImage" или аналогичным).
Автор: metrolog
Дата сообщения: 23.09.2008 21:49
Помогите пожалуйста поставить её в Ubuntu 8
Автор: Tulon
Дата сообщения: 23.09.2008 23:22

Цитата:
Помогите пожалуйста поставить её в Ubuntu 8

Придется собирать из исходников. Попробую дать инструкции, расчитаные на того, кто никогда ничего не собирал. Итак:
Система -> Администрирование -> Менеджер пакетов Synaptic
Настройки -> Репозитории -> Обновления -> включить "Официально неподдерживаемые обновления".
Закрыть
Обновить

То что мы делали до сих пор - это для того, чтобы получить Qt 4.4, тогда как в репозитории только 4.3.

Найти "libqt4-dev"
Правой клик по нему -> отметить для установки (или для обновления).
Применить

Теперь можно выключить "Оффициально неподдерживаемые обновления".

Таким же образом (найти, отметить для установки, применить) устанавливаем следующие пакеты:
build-essential, cmake, zlib1g-dev, libpng12-dev, libjpeg62-dev, libtiff4-dev
Некоторые из них могут и так стоять.

Теперь распаковываем архив с исходниками scantailor.
Запускаем Приложения -> Cтандартные -> Терминал
Там (с помощью комманды cd) идем в директорию, куда распаковались исходники.
Даем комманду "cmake ."
После чего "make"
И наконец "sudo make install"

Если все прошло успешно, можно прямо в терминале, либо по Alt+F2 набрать scantailor, и он запустится.

Возможно когда-нибудь у меня дойдут руки до сборки бинарного пакета, а пока придется вот так ставить.
Автор: Arcand
Дата сообщения: 24.09.2008 04:30
U235
Большое спасибо. Для меня неожиданность, что с помощью штатных средст подобное можно сделать в Корел. Наверное, так будет даже лучше, чем искать плагин или самому его делать. Идею я уловил.
На Вашем примере все идеально. На моих сканах похуже. Рисунки у сеня смешанного типа - лайнарт+растр или текст на фоне растровой заливки. Форма рисунков не всегда прямоугольная плюс достаточно редкие иногда весьма растровые точки. Выделение происходит, но не полностью. Поискал немного другие варианты - можно улучшить. В целом пойдет, скрипт значительно облегчит мне выделение рисунков, хотя без ручной правки не обойтись.

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

Еще раз спасибо за идею.

Цитата:
В принципе в Corel я представляю как можно делать и выравнивание неоднородности фона, но число операций будет ~ 100, без VBA точно не обойтись.
Было бы интересно узнать как. Если найдется время, поделитесь .
Автор: monday2000
Дата сообщения: 11.10.2008 18:44
Tulon

Цитата:
Ну раз U235 объявился, значит скоро будет сделана автосегментация картинок.

Как Ваши успехи с этой автосегментацией?

Добавлено:
Полезные линки:

http://mydebianblog.blogspot.com/2008/04/nip2.html

http://mydebianblog.blogspot.com/2006/11/nip2.html

http://linuxgraphics.ru/readarticle.php?article_id=16
Автор: Tulon
Дата сообщения: 11.10.2008 19:10

Цитата:
Как Ваши успехи с этой автосегментацией?

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

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

Да и времени у меня теперь поубавится. Работу потерял, а в нашем захолустье другой не найти. Придется перебираться либо в Вильнюс, либо вообще за границу.
Автор: monday2000
Дата сообщения: 11.10.2008 22:26
Tulon

Цитата:
Работу потерял

Сочувствую.

Добавлено:
Вот ещё любопытный линк:

http://www.codeproject.com/KB/GDI-plus/Image_Processing_Lab.aspx

http://www.codeproject.com/KB/GDI-plus/GausianBlur.aspx

Исходники алгоритма Smart Blur:

1.
Цитата:
This filter makes it possible to blur out noise and still retain a fair amount of detail.

http://neuron2.net/hiq/smoothhiq.html
http://www.mikecrash.com/modules.php?name=Content&pa=showpage&pid=6

2.
Цитата:
I found out that Photoshop 5 has a very similar filter which they call "Smart blur".

http://thom.best.vwh.net/gimp/

3.
Цитата:
"Average Blur" and "Smart Blur" effects, under the Blurs effect menu.

http://users.telenet.be/krisvandermotten/Downloads/PaintDotNetEffects.html

4.
Цитата:
This version contains following effects ... Smart Blur

http://www.codeplex.com/xnapp

5.
Цитата:
Smart Blur: finds the edges of color in your image and blurs them without muddying the rest of the image

http://api.kde.org/extragear-api/graphics-apidocs/digikam/html/blurfxtool_8cpp-source.html

6.
Цитата:
Anyone up for a Selective Gaussian optimization?

http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.language.basm/2005-07/msg00291.html

7.
Цитата:
AMAZING EFFECTS!!! (GraphicalDLL) - more than 60 photoshop-like effects - never seen it before !!! ... smart blur

http://www.pscode.com/vb/scripts/ShowCode.asp?txtCodeId=55328&lngWId=-1
Автор: Tulon
Дата сообщения: 11.10.2008 22:48

Цитата:
http://neuron2.net/hiq/smoothhiq.html

Этот blur попринципу действия очень напоминает Selective Blur в Gimp'е. Gimp'овский Selective Blur я уже перенес в ST, правда пока не решил, куда его воткнуть.
Автор: monday2000
Дата сообщения: 11.10.2008 22:49
Это я ещё и для bolega пытаюсь собирать информацию по Smart Blur.

Добавлено:

Цитата:
пока не решил, куда его воткнуть.

Это всё для реализации на низком уровне методики http://www.djvu-soft.narod.ru/scan/corel_scan.htm .
Автор: Arcand
Дата сообщения: 12.10.2008 06:34
monday2000
Кстати, автовыделение картинок сделано в новой версии макросов (см. здесь). Тоже есть проблемы, но их можно поправить вручную на втором проходе.

За ссылки спасибо, интересно. Если Вам попадалась или попадется инфа по контурной резкости (unsharp mask), медиане, минимуме, максимуме, сглаживанию контуров, выделению цветов, дайте знать . Я намереваюсь делать плагины для обработки сканов для Корела.
Автор: monday2000
Дата сообщения: 13.10.2008 11:53
Arcand

Цитата:
Если Вам попадалась или попадется инфа

Просто ищется в Гугле по ключевым словам и всё .
Для начала загляните сюда: http://www.codeproject.com/KB/graphics/cximage.aspx - оттуда можно выдрать готовые алгоритмы.
медиана - у меня есть тут: http://www.djvu-soft.narod.ru/bookscanlib/008.htm
deskew - тут: http://www.djvu-soft.narod.ru/bookscanlib/007.htm (только там надо найденный угол умножать на глубину цвета в битах).
unsharp mask - вряд ли это проблема.
выделению цветов - http://leptonica.com/binary-morphology.html

Вообще впечатление такое, что материала много.
Автор: monday2000
Дата сообщения: 15.10.2008 14:54
Arcand

Цитата:
у меня то опыта в обработке image никакого (в смысле алгоритмов).

Есть книжка: http://club.shelek.ru/download.php?id=175
Там есть Section II: More Graphics. И в ней с нуля очень подробно рассказывается о программной работе с битмапами и с BMP-файлами. Именно с этой информации ИМХО лучше всего начинать.

Затем удобно продолжить уже с FreeImage. FreeImage скрывает от юзера всякую низкоуровневую гадость - избавляя его от труда её программировать самому. Реально очень удобная вещь.

Освоив FreeImage, можно уже браться за любую иную графическую библиотеку (какая Вам нравится).
Автор: TeX32
Дата сообщения: 16.10.2008 12:12
Восторженный возглас!

УРА! и спасибо авторам. Первый раз, когда запустил СкринКромсатор появилось чувство собственной неполноценности. После чтения нескольких полудописаных манов и форумов, хоть что-то стало получаться.

А тут раз и все понял

Добавлено:
--
небольшой баг. Перед выполнением "конвеерного (батч) процесса" ИМХО не хватает проверки на существование выходного каталога.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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