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

» Scan Tailor: Часть 2

Автор: LonerDergunov
Дата сообщения: 26.01.2012 16:28
Можно ли выровнять вертикальные линии?
Горизонтальные линии - если они волнистые - можно исправить с помощью dewarping.
Однако при dewarpingе можно поставить точки только на горизонтальной оси.
Как быть если вертикальные линии тоже неровные?
Автор: iit512
Дата сообщения: 17.02.2012 17:11
Когда же наконец кто-нибудь сделает отключение выравнивания освещения в смешанном режиме?
Об этом речь идет уже больше года.
Вчера был вынужден просто отказаться от обработки книги, потому что даже выставление жирности в максимальную не помогало сделать буквы без разрывов линий.
Ну а фотографии без белых полей обработать вообще нельзя...
Автор: amaid
Дата сообщения: 17.02.2012 17:45
ну так ты и сделай, умник
а если руки не в том месте растут, научись вежливо просить, без понтов и пены
Автор: iit512
Дата сообщения: 18.02.2012 17:03
Прошу прощения, если это выглядело невежливо.
Просто ужасно расстроило, что такая прекрасная программа -- и не может справиться с обычной, в общем-то книгой...
Буду рад, если кто-нибудь посоветует, в какое место исходного кода смотреть.
Автор: DikBSD
Дата сообщения: 19.02.2012 08:05
Я пытался в свое время поработать над этой проблемой. Но из-за введения dewarping проблема усложнилась очень сильно! Он писал, что при отключенном выравнивании некоторые сканы обрабатываются неверно. Tulon сказал, что надо отслеживать множество факторов. В общем, я тогда "отодвинул" эту задачу "на потом"...
Если можете, напишите Tulone - ему проще всех будет ввести чекбокс отключения/включения выравнивания освещенности. Полностью он убирать не будет...
Если его мягко упросить... Эту фичу можно было бы ввести не в основную ветку, а в plus...

Добавлено:
iit512, посмотрите, пожалуйста, личные сообщения - я кое-что выслал вам.
Автор: iit512
Дата сообщения: 19.02.2012 10:10
Спасибо!
Я написал на багтрекере СТ (http://sourceforge.net/tracker/?func=detail&aid=3489319&group_id=227253&atid=1070628, там и ссылка на образец, с которым я работаю), но не очень уверен, что это к чему-то приведет.
Поскольку я не знаю ни C, ни тем более C++ и ни разу в жизни не программировал на этих языках, то моя идея была абсолютно топорной: отключить выравнивание освещения в смешанном режиме (или даже вообще отключить), сделать версию без него и обрабатывать картинки сначала нормальной версией, а потом отключенной. С первого наскока не получилось. Нашел функцию grayRasterOp(), которая вроде бы и делает нужное, но ее отключение в normalizeIlluminationGray() приводит к кошмарным последствиям (неопределенным пятнам вместо текста и картинок). Вижу теперь после прочтения Вашего сообщения, что выравнивание освещения тесно связано с распознаванием картинок (никогда бы не подумал, что так может быть), но кошмар на выводе с этим не связан, поскольку зоны картинок определены вручную.
Видимо, надо пробовать дальше. Но делать это я могу исключительно методом тыка.

Добавлено:
Вот первый результат, если его можно так назвать: http://rghost.ru/36595321
Если закомментировать в RaiseAboveBackground несколько строчек, то удается избавиться от выравнивания освещения. Однако картинки при этом автоматически не распознаются, приходится выделять их руками. Более того, на вторую указанную "особенность" (пересвечивание текста между картинками) это не влияет, тут я совсем не понимаю, куда копать.
Вот патч к OutputGenerator.cpp:

Код:
--- OutputGenerator.cpp.old 2012-02-19 00:25:05.000000000 -0600
+++ OutputGenerator.cpp 2012-02-19 03:04:36.000000000 -0600
@@ -100,12 +100,13 @@
static uint8_t transform(uint8_t src, uint8_t dst) {
// src: orig
// dst: background (dst >= src)
- if (dst - src < 1) {
- return 0xff;
- }
+// if (dst - src < 1) {
+// return 0xff;
+// }
unsigned const orig = src;
unsigned const background = dst;
- return static_cast<uint8_t>((orig * 255 + background / 2) / background);
+// return static_cast<uint8_t>((orig * 255 + background / 2) / background);
+ return static_cast<uint8_t>(orig);
}
};
Автор: DikBSD
Дата сообщения: 19.02.2012 15:17
Я ранее пытался поработать с освещением, но времени - мало, поэтому и переключился на другое.

Добавлено:
Освещение "работает" и в режиме без выпрямления строк, и в режиме выпрямления. Учтите, пожалуйста это. Иначе эффект от выключения освещения будет РАЗНЫЙ. А обработка картинок в этих двух режимах - разная. Отсюда и сложности...
Насчет патча - если у вас хватит терпения "добить" до конца освещение - то тогда сделайте, пожалуйста, патч ВСЕГО изменения кода - я внесу в репозиторий, в ветку plus. Иначе - вдруг локальные изменения кода "испортят" что-нибудь "глобальное" в ST. Хорошо?
Автор: iit512
Дата сообщения: 19.02.2012 21:30
Спасибо за информацию.
Моя цель, однако, гораздо скромнее: сделать Scan Tailor Minus, в котором просто не будет выравнивания освещенности. Но, похоже, и это недостижимо, потому что автоопределение картинок и выравнивание слишком тесно завязано, а разделить эти два процесса для меня -- это примерно также, как мне попросить Вас найти морфологические синапоморфии двух клад, выделенных по митохондриальному геному (хотя, может быть, Вы биолог?).
Я теперь хочу только одну вещь найти -- где выравнивается освещение для текстовой части смешанной картинки? Не знаете случайно?
Автор: iit512
Дата сообщения: 20.02.2012 06:01
Кажется, я понял в чем дело. Вот здесь -- binarize(maybe_smoothed, normalize_illumination_crop_area) область, используемая для вычисления порога бинаризации, берется слишком большой, включающией картинки, и поэтому порог получается очень высоким, отчего и буквы оказываются пересвеченными.
К сожалению, это только мое предположение, поскольку я не знаю, как бы подставить туда какой-нибудь другой полигон. Буду благодарен за подсказку.
Автор: DikBSD
Дата сообщения: 20.02.2012 17:28
К сожалению, я пытался разобраться с освещением очень давно... Уже и не помню многое. Если найду время, попробую понять механизм алгоритма и, если получится, сделать выравнивание освещения опционально отключаемым. Но обещать не буду...

Добавлено:
P.S. iit512, для биолога вы неплохо разбираетесь в программировании. Пишу это - с уважением, без иронии.
Автор: iit512
Дата сообщения: 20.02.2012 20:49
Спасибо. Надо еще учесть, что у СТ очень хороший код.
Я думаю, Вы заметили, что здесь, скорее всего, две проблемы:
1) Отсутствие отключения выравнивания освещения в смешанном режиме
2) Неправильное вычисление порога бинаризации в смешанном режиме
И если первую можно решить введением чекбокса, то вторая -- настоящий баг, который надо как-то исправить.
На багтрекере Арцимович написал мне в том смысле, что все так, но он ничего делать не будет
Автор: DikBSD
Дата сообщения: 21.02.2012 18:36
Будем потихоньку разбираться.
Автор: iit512
Дата сообщения: 22.02.2012 02:55
Спасибо!
Как Вы видите, у нас с Арцимовичем идет все же некоторая дискуссия на багтрекере.
Обратите внимание, пожалуйста, на третий пример, который я выложил (http://rghost.ru/36628401). Он ясно, на мой взгляд, демонстрирует эффект влияния темных картинок на текст, вне зависимости от того, помещены они в пользовательские зоны или нет.
Автор: DikBSD
Дата сообщения: 22.02.2012 17:56
Хорошо

Добавлено:
Я не смог скачать этот пример - файл удален.
Автор: iit512
Дата сообщения: 22.02.2012 18:33
http://www.onlinedisk.ru/file/830369/
Автор: iit512
Дата сообщения: 23.02.2012 01:07
Арцимович нашел баг и попатчил СТ!!! Теперь текст между темными картинками не осветляется!!!
===
Я обычно работаю в Plus, потому что там есть прямоугольные зоны, поэтому попатчил вручную, благо надо вставить только "&& !mask" на 1482 строке OutputGenerator.cpp
DikBSD: можно Вас попросить поправить это в Plus?
===
Теперь осталось только сделать чекбокс на отключение выравнивания освещенности в смешанном режиме. Возражение о том, что тогда темные картинки получаются очень странно, меня не сильно волнует, потому что я все равно разделяю слои и могу картиночный слой обрабатывать любым способом, который позволяет ImageMagick.
Покуда я сделаю так: применю грубый хак (см. патч выше) и отключу выравнивание освещения вообще, получится Scan Tailor Minus который я буду запускать только тогда, когда увижу эти самые белые пятна. Единственное, что надо помнить при этом -- автоматическое выделение картинок в ST Minus работать тоже не будет.
===
Теперь у меня все есть! Ну, не все Хочется еще сделать так, чтобы было несколько групп выравнивания страниц. А то часто бывает, что есть иллюстрации со своими размерами блока, и текст -- со своими размерами. Выравнивать все единообразно -- текст будет смотреться плохо, не выравнивать -- будет менее читаемый результат...
Еще я уже писал здесь, что СТ зачем-то каждый раз начинает обрабатывать файл, даже если я держу нажатым Ctrl или Shift и просто выделяю некоторую группу. Это -- бесцельная трата ресурсов компьютера, как говорится, not a green way.
А еще -- сильно раздражает, когда при удалении файла из проекта тебя каждый раз перемещают к началу (если забываешь отжать кнопку синхронизации).
Автор: DikBSD
Дата сообщения: 23.02.2012 20:00

Цитата:
Арцимович нашел баг и попатчил СТ!!! Теперь текст между темными картинками не осветляется!!

Вот это - радостная новость! Сейчас просмотрю код и перенесу его в ветку plus. На днях сделаю новую сборку под Win32.
P.S. К лету накоплю на Mac mini - буду выкладывать и сборки plus под Mac OS X

Добавлено:

Цитата:
DikBSD: можно Вас попросить поправить это в Plus?

Конечно. Сегодня уже не успею - выложу завтра.

Добавлено:

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

В любом случае - из-за "пересвеченности" картинок Смешанных режим редко используется. А поэкспериментировать с включением/отключения режима можно всегда .
Сначала выложу новую сборку, а потом можно будет заняться и чекбоксом (со всеми вытекающими отсюда настройками...)

Добавлено:

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

Если забуду - напомните позднее, ладно?
Автор: LazyKent
Дата сообщения: 23.02.2012 20:31
DikBSD, вы, пожалуйста, сильно не заморачивайтесь с этой темой. Поберегите здоровье.

Если кто забыл, то напомню, что не нужно напрягать коллегу DikBSD.
Цитата:
Я вынужден прекратить участие в развитии ветки ScanTailor Plus: Из-за бурной деятельности (работа, книгоделание, сопровождение нескольких проектов, включая и ScanTailor Plus и т.д.) получил сильнейшее нервное истощение и попал в больницу... Теперь - постоянные проблемы со здоровьем.

Автор: DikBSD
Дата сообщения: 23.02.2012 21:09
Выложил новую сборку ветки Plus: https://sourceforge.net/projects/scantailor/files/scantailor-devel/plus/0.9.11-2012-02-23/
Помимо исправления одного бага в режиме Смешанный (см. выше) исправлен еще один баг: Fix cyan ghosting in areas inside the content box but outside the page

Добавлено:

Цитата:
DikBSD, вы, пожалуйста, сильно не заморачивайтесь с этой темой. Поберегите здоровье.

Спасибо за понимание... Я потихоньку
Автор: iit512
Дата сообщения: 24.02.2012 01:59
Спасибо большое!

Цитата:
DikBSD, вы, пожалуйста, сильно не заморачивайтесь с этой темой. Поберегите здоровье.

Полностью согласен!
Автор: DikBSD
Дата сообщения: 24.02.2012 07:59
Перезагрузил портабельную сборку ScanTailorPlus-0.9.11[32bit]20120223-windows-bin.7z - по тому же адресу.
Вчера на сонную голову оставил в ней Qt-dll старой версии 4.7.3. а сбоку делал на 4.8.0
Теперь все запускается.

Добавлено:
Просьба: Пришлите, пожалуйста, скан, на котором пересвечивается картинка в Смешанном режиме. Не на чем экспериментировать.

Добавлено:
iit512, хак ф-ции RaiseAboveBackground - не совсем хорошее решение. Дело в том, что выравнивание освещения включено и в Смешаном режиме, и в Черно/Белом. Изменив ф-ю RaiseAboveBackground вы тем самым повлияли и на вывод сканов в Черно/Белом Режиме.
Мы нашли другой путь - не знаю, насколько он верен. Теперь в Смешанном режиме можно задавать/отключать И Выравнивание освещения, и Белые Поля. Бинаризация области текста работает.
Tulon отключил возможность задания Белых полей - видимо это было вызвано чем-то важным. Я к сожалению не знаю, чем. Поэтому работа с Белыми полями в Смешанном режиме будет на "свой страх и риск". в смысле - качество вывода картинки.
Я экспериментировал на вашей картинке (вытащил ее из выложенного вами примера djvu с папоротником). Вроде все заработало.
Осталось сделать только Прменение к...
Вечером, если успею доделать, залью код в репозиторий и соберу сборку под win32. Нужно будет ее погонять, потестировать. Уверен, что не все учел. но на тех сканах, что нашел, отключение освещенности прекрано работало.

Автор: anagnost96
Дата сообщения: 24.02.2012 13:25
DikBSD

Не совсем понял, для чего нужна возможность отключения белых полей в смешанном режиме. Ведь поля -- это по определению то, что находится за пределами полезной области. То есть получится, что полезная область полностью или частично бинаризована, а по краям видны ошметки оригинального скана? Есть ли в этом какой-то практический смысл?
Автор: DikBSD
Дата сообщения: 24.02.2012 14:25
На одном скане, который я прогонял. Белые поля "стирали" часть картинки, которая располагалась от края до края скана. Отключение белых полей позволяло вывести всю эту картинку - до самых краев скана.
Но в других сканах эта опция - Отключение Белых полей действительно давала "ошметки". Надо будет посмотреть - может быть действительно оставлю в Смешанном режиме Белые поля включенными, как было ранее, а опционально работать только с Выравниванием освещения.

И еще - пришлите кто-нибудь цветную/Серую картинку, которая "пересвечивается" в Смешанном режиме. Та, на которой я отрабатывал подозреваю, не совсем отжатает результат, т.к. она была уже ранее выведена в Смешанном режиме. и я ее вытащил из djvu. Текст так был уже бинаризован. А для чистоты эсперимента надо бы отсканированную цветную или серую.
Автор: anagnost96
Дата сообщения: 24.02.2012 14:38

Цитата:
Отключение белых полей позволяло вывести всю эту картинку - до самых краев скана.


Хм. А разве нельзя в этом случае выставить полезную область от края до края?

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


Цитата:
оставлю в Смешанном режиме Белые поля включенными, как было ранее, а опционально работать только с Выравниванием освещения.


Да я бы и выравнивание предпочел видеть включенным по умолчанию: меня это "пересвечивание" обычно не напрягает, хотя и бывают случаи, когда лучше бы без него.
Автор: DikBSD
Дата сообщения: 24.02.2012 14:45

Цитата:
Хм. А разве нельзя в этом случае выставить полезную область от края до края?

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

Цитата:
Да я бы и выравнивание предпочел видеть включенным по умолчанию...

Так и сделаем.
Автор: iit512
Дата сообщения: 26.02.2012 01:12

Цитата:
хак ф-ции RaiseAboveBackground - не совсем хорошее решение. Дело в том, что выравнивание освещения включено и в Смешаном режиме, и в Черно/Белом. Изменив ф-ю RaiseAboveBackground вы тем самым повлияли и на вывод сканов в Черно/Белом Режиме.


Согласен. Но скоро это будет не нужно -- ведь Вы уже решили проблему! Спасибо!


Цитата:
И еще - пришлите кто-нибудь цветную/Серую картинку, которая "пересвечивается" в Смешанном режиме. Та, на которой я отрабатывал подозреваю, не совсем отжатает результат, т.к. она была уже ранее выведена в Смешанном режиме. и я ее вытащил из djvu. Текст так был уже бинаризован. А для чистоты эсперимента надо бы отсканированную цветную или серую.


http://rghost.ru/36712345
Автор: DikBSD
Дата сообщения: 26.02.2012 09:47
Спасибо за скан. Скачал.
Автор: DikBSD
Дата сообщения: 27.02.2012 18:28
Scan Tailor Plus с опцией включения/отключения Выравнивания Освещения в Смешанном режиме Вывода. https://sourceforge.net/projects/scantailor/files/scantailor-devel/plus/0.9.11-2012-02-27/
Пока по-умолчанию Выравнивание для Смешанного режима отключено (чекбокс не включен). Позднее включу по-умолчанию выравнивание.
Тестирован на скане, присланном iit512 http://rghost.ru/36712345

Помимо всего, в сборку вошли последние изменения и фиксы багов, сделанные Tulon - подробности см. здесь http://scantailor.git.sourceforge.net/git/gitweb.cgi?p=scantailor/scantailor;a=shortlog

Код залил в ветку plus репозитория на sourceforge, так что можно склонировать или сделать git pull и собирать на своей системе.
Автор: iit512
Дата сообщения: 28.02.2012 08:03
УРА!!! Работает! Спасибо громадное!
===
Прошу меня простить, но я напишу сюда еще один feature request. Предположим, в книге часть текста напечатана зеленым на красном фоне. Или черным на сером. Или просто часть заголовков выделены красным. DjVu-сегментеры очень плохо работают с результатом обработки таких фрагментов, очень часто текст размывается. Но выход есть -- это постеризация. Если ее провести, то даже documenttodjvu практически не ошибается, а можно такую страницу обработать и cpaldjvu, и получится вообще великолепно.
Было бы великолепно, если бы зона рисунков позволяла постеризацию. А пока я смотрю на сканы цветного текста с ужасом...
Автор: DikBSD
Дата сообщения: 28.02.2012 10:35
Если только в будущем...
Вся проблема в том, что ранее я программировал базы данных, поисковые системы и утилиты по fb2 формату. С графикой знакомство началось со ST Приходится по ходу дела "учить матчасть" по Графике... Так что многого от меня ожидать не стоит . Если соображу, как, то, возможно, в будущем что-то и появится. Да и время нужно ... На жизнь остается 1 час в день

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061

Предыдущая тема: CmCkA v4


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