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

» Scan Tailor

Автор: Tulon
Дата сообщения: 16.10.2008 15:27
Ну вот, хоть кто-то оценил удобство использования. Спасибо.


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

Существование выходного каталога проверяется при создании проекта. Думаю этого пока достаточно.
Автор: TeX32
Дата сообщения: 16.10.2008 17:12
Tulon, ага я же написал "небольшой".

Раз уж встал, то выскажусь целиком.

Почитал ветку, вынесите пожалуйста в ШАПКУ линк для нетерпеливых, которые не собираются пользоваться программой, а просто хотят посмотреть линк на скрины.

И дабы избежать повторов линк на принятые к рассмотрению предложения.

Ни смотря на мнение авторитетного сообщества, поддерживаю автора по идеи с мини-окном.

Дорогие мои, программа оупен-сорсная, не нравится сделайте свою ветку. Только поддерживайте ее! Может еще чего-нибудь прикрутите

Цель как правильно отмечено - создание алгоритмов, а не швейцарского ножа на все случаи жизни. Будут идеи и возможности реализовать - ответвляйте код.

Маленький (даже крошечный) хелп, пусть даже такой + ссылка на сайт, может с вики?


Цитата:
Ну так попробуйте потыкаться там, рамки всякие мышкой потягать. Так вы все гораздо лучше поймете, чем по моим объяснениям. Если коротко, то:
Fix Orientation - поворот на 90, 180 или 270 градусов.
Split Pages - разделение страниц (для разворотных сканов) / отрезание огрызка второй страницы (для одиночных).
Deskew - компенсация наклона.
Select Content - выделение зоны контента рамкой.
Page Layout - выставление полей и выравнивание по размерам с остальными страницами.


Правильно ли я понимаю, что пока обрезка полей (с заливкой белым) работает только в b\w сканах?
Автор: Tulon
Дата сообщения: 16.10.2008 21:34
Линки на скрины и на предложенные улучшения добавил в шапку.


Цитата:
Маленький (даже крошечный) хелп, пусть даже такой + ссылка на сайт, может с вики?

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


Цитата:
Правильно ли я понимаю, что пока обрезка полей (с заливкой белым) работает только в b\w сканах?

Да, пока только так, но улучшения в этой области планируются. В следующей версии появится режим вывода Mixed. Это как раз режим с автовыделением картинок. В этом режиме чистка полей будет. Ну а насчет режима Color / Grayscale - я еще не решил, как там быть с полями.
Автор: monday2000
Дата сообщения: 17.10.2008 08:08
Интересно, что это за алгоритмы такие, которые Arcand рекомендует в http://www.djvu-soft.narod.ru/scan/scan_sovety.htm и в http://www.djvu-soft.narod.ru/scan/corel_scan.htm :

Цитата:
4. Сглаживание. Эффекты->Размытость->Размывка края... В диалоге установить Процент 100, Радиус 1.
5. Контурная резкость. Эффекты->Повышение резкости->Понижение резкости по выделению... В диалоге установить Порог 0, Радиус 5, Процент 100-300. Меньшие значения процента для получения более гладких контуров букв, большие - для вытягивания их бледных перемычек.

Как они называются по-английски? Может, они ещё как-то по-другому называются? Есть ли они в Фотошопе?

А то если искать их исходники - то вообще непонятно, что, собственно, искать....

Добавлено:
Сглаживание - это antialiasing или что-то иное?

Добавлено:
Исходники antialiasing:
http://www.codeproject.com/KB/GDI/antialias.aspx
http://www.codeproject.com/KB/GDI-plus/AntiAliasingIssues.aspx
http://www.codeproject.com/KB/GDI/AntiAliasing.aspx
http://www.codeproject.com/KB/GDI/CTGraphics.aspx

Есть ещё другие в Гугле.

Добавлено:
Контурная резкость - это, похоже, Unsharp mask.

Добавлено:
Исходники Unsharp mask:
http://stdout.org/~winston/gimp/unsharp.html (GIMP)
http://redskiesatnight.com/2005/04/06/sharpening-using-image-magick/ (ImageMagick)
http://www.codeguru.com/Cpp/G-M/gdi/gdi/article.php/c3675/ (GDI+)

Добавлено:
GimPhoto - free Photoshop alternative for photo and image editor
http://www.gimphoto.com/ (Лицензия - GPL)

Добавлено:
Вот здесь много интересного: http://www.codeproject.com/KB/GDI-plus/Image_Processing_Lab.aspx

Tulon
Если мои предположения верны насчёт этих алгоритмов, то я прошу Вас рассмотреть вопрос о реализации в СТ алгоритмов AntiAliasing и Unsharp Mask (в перспективе - Smart Blur) - с целью реализации в СТ методики CorelScan.

Также хотелось бы Lighting Correction - но это на будущее.
Автор: Tulon
Дата сообщения: 17.10.2008 11:13

Цитата:
Если мои предположения верны насчёт этих алгоритмов, то я прошу Вас рассмотреть вопрос о реализации в СТ алгоритмов AntiAliasing и Unsharp Mask (в перспективе - Smart Blur) - с целью реализации в СТ методики CorelScan.

Antialiasing - это свойство операции, а не сама операция, так что операция сглаживания - это либо blurring либо smoothing. Сейчас у меня реализованы гауссово размывание, выборочное гауссово размывание, и mean filter (не знаю как это по русски).
Unsharp mask реализуется элементарно, если уже реализованно гауссово размывание. Smart Blur - это то же самое, что выборочное гауссово размывание, или что-то очень близкое к нему.
Понижение резкости по выделению (скорее всего имелось ввиду повышение, судя по скриншоту) - это Selective Sharpen. Поскольку порог ставиться в 0, то это уже простой Sharpen.


Цитата:
Также хотелось бы Lighting Correction - но это на будущее.

Это я тоже уже реализовал, но работает оно не идеально. Буквы, да и любые объекты, которые хотябы краем касаются тени от сгиба - теряют контрастность.
Автор: monday2000
Дата сообщения: 17.10.2008 14:52
Интересный линк:

http://www.cs.cmu.edu/~cil/v-source.html

Добавлено:
http://ddsdx.uthscsa.edu/dig/itdesc.html
Автор: Tulon
Дата сообщения: 17.10.2008 16:31

Цитата:
http://www.cs.cmu.edu/~cil/v-source.html

Нашел по этому линку очень интересный алгоритм шумоподавления. В качестве замены выборочному размыванию очень хорошо подойдет.
Вот страница с его демонстрацией:
http://cimg.sourceforge.net/greycstoration/demonstration.shtml
Результаты впечатляют.

Лицензия там правда не совместима с GPLv3, но разобравшись в алгоритме можно будет свою реализацию с нуля написать.

Добавлено:
Кстати на проверку лицензия оказалась все-таки совместимой. Это у демо-программы лицензия не совместимая, а у самой библиотеки двойная лицензия - CeCILLv2 и CeCILL-Cv1. Это французские аналоги GPLv2 и LGPLv2. Ну а LGPLv2 позволяет линковаться с чем угодно.
Автор: bolega
Дата сообщения: 18.10.2008 11:08

Цитата:
Результаты впечатляют

Естественно, ведь там используется самый "правильный" метод, на основе PDE.
А вот скорость работы фильтра очень сильно не впечатляет, к сожалению. Для вытягивания одиночных фотографий пойдет, а вот для массового применения к большому количеству сканов практически не годится. Там используются вещественные вычисления, если все это дело перевести на fixed point и потом на asm, то только тогда толк будет.
И памяти жрет немерянно, если использовать 4-байтный float, то для каждой RGB-точки (для цветного скана) уже потребуется 12 байт, и даже для 300dpi объем памяти нужен будет огромнейший
Автор: denver 22
Дата сообщения: 18.10.2008 18:08
Наконец нашел время потестить прогу. Прикольно. Желаю дальнейшего развития!
Я, конечно, во всякие детали не углубляюсь, оцениваю юзабельность, функциональность и субъективное качество на выходе.
1. Реализованы ли горячие клавиши для однотипных команд? Если нет, может сделаете подобно СК? Привык к переходу на предыдущую/следующую страницу.
2. По возможности изменения dpi, как я понял, идут работы.
3. На выходе получил png, вместо tiff, который был на входе. Причем не нашел, где вменить тип выходного формата. Если это ещё не реализовано, то будет ли?
И вообще, в 2-х словах, чем обосновано применение png на выходе? Он не дает потерь (размытость как у jpg и прочее) при создании из него djvu-книг? (я не спец по форматам, поэтому меня не пинать).
Автор: Tulon
Дата сообщения: 18.10.2008 18:38

Цитата:
1. Реализованы ли горячие клавиши для однотипных команд? Если нет, может сделаете подобно СК? Привык к переходу на предыдущую/следующую страницу.

Листание страниц - PgUp / PgDown. Других горячих клавиш пока нет.


Цитата:
2. По возможности изменения dpi, как я понял, идут работы.

DPI можно менять уже сейчас. Это вы наверное форум NataHaus почитали и не так поняли. Там речь шла о редкой ситуации, когда часть страниц перед сканированием была отксерена, да еще и с масштабом, причем неизвестно каким. Вот с такой ситуацией СТ действительно не справится.


Цитата:
3. На выходе получил png, вместо tiff, который был на входе. Причем не нашел, где вменить тип выходного формата. Если это ещё не реализовано, то будет ли?

Да, это есть в списке задач.


Цитата:
И вообще, в 2-х словах, чем обосновано применение png на выходе? Он не дает потерь (размытость как у jpg и прочее) при создании из него djvu-книг? (я не спец по форматам, поэтому меня не пинать).

Это было обосновано плохой поддержкой формата TIFF в Qt. Он их всегда сохраняет в RGB режиме, а кроме того не прописывает в них DPI. PNG потерь не дает, но оказалось что его не поддерживают LizzardTech'овские инструменты.
Автор: denver 22
Дата сообщения: 18.10.2008 22:13

Цитата:
Это было обосновано плохой поддержкой формата TIFF в Qt. Он их всегда сохраняет в RGB режиме, а кроме того не прописывает в них DPI

Для очистки сканов от крупного мусора пользовал Photoshop. С переходом на Линукс попробывать GIMP. Так он после сохранения обработанного TIFF-скана изменил его размер с 800Кб на 5 Мб. Причина в том, что ты написал? Если нет, то можете что-то посоветовать в этом случае? Не хочу из-за стирался целый Фотошоп на Линукс ставить.
P.S. Классно, что Scan Tailor будет под Linux нативным. Да ещё под моим любимым окружением KDE!
Автор: Tulon
Дата сообщения: 18.10.2008 22:55
Gimp не использует Qt, так что проблема не в этом. TIFF между прочим контейнерный формат, поддерживающий несколько методов сжатия. Gimp при сохранении (по крайней мере при Save As) позволяет выбирать метод сжатия. Если не считать метода JPEG, то наилучший результат дадут:
Для черно-белых изображений: CCITT Group 4 fax
Для остальных: Deflate (в русской версии его обозвали "Уменьшить").
Ну и естественно надо проверять режим (Изображение -> Режим), чтобы не было такого, что серое изображение сохряняется в цветном режиме.
Автор: U235
Дата сообщения: 19.10.2008 01:10
bolega

Цитата:
Там используются вещественные вычисления, если все это дело перевести на fixed point

а какой смысл в fixed point? Насколько я понимаю, при регуляризации желательно не вносить дополнительных ошибок, в данном случае - ошибок квантования. SSE1/2/3... вроде бы неплохо работает и с float.
Автор: monday2000
Дата сообщения: 21.10.2008 08:29
U235

Цитата:
а какой смысл в fixed point?

Это для быстроты. Целочисленные алгоритмы всегда быстрее алгоритмов с вещественными числами.
Автор: U235
Дата сообщения: 21.10.2008 11:16
а) fixed point это не целое число.
б) например, на задачах с плохо обусловленными матрицами чем больше точность - тем лучше, иначе решение вообще можно не получить.
Автор: bolega
Дата сообщения: 21.10.2008 13:43
U235

Цитата:
fixed point это не целое число.

Оно описывает не целое число, но с точки зрения CPU - целое.


Цитата:
например, на задачах с плохо обусловленными матрицами чем больше точность - тем лучше

Никто не спорит, но повторюсь еще, речь идет об алгоритме с оптимальным соотношением скорость/точность, иначе алгоритм будет бесполезен для обработки массы сканов. Мы ведь не траекторию ракеты считаем.
Во-вторых, для данного алгоритма особая точность не нужна, сам предмет обработки - довольно шумлив и локально стохастичен, поэтому некоторое загрубление пойдет только на пользу (я проверял). Не будете же Вы настаивать считать с помощью 10-байтных float? А точность у 4-float и fixed point кажется одинаковая.
SSE согласен будет лучше, но там программировать тяжелее (для меня по крайней мере). С другой стороны, выигрыш SSE2 перед MMX не будет больше 20%.
Автор: zzzpack
Дата сообщения: 28.10.2008 17:58
ghosty

Цитата:
Цитата:Хотелось бы еще увидеть, что удалось получить с помощью CK.

Что-то вроде этого:
http://rapidshare.com/files/141800166/out.rar.html


Скажите пожалуйста, как это у Вас получилось? У меня не получается воспроизвести такой результат в Кромсаторе. Что это за настройки?

Добавление.
А! Сам нашел Вашу "сборку Кромсатора". Круто.
Жаль, что ее было так сложно найти.
Автор: monday2000
Дата сообщения: 31.10.2008 09:45

Цитата:
"сборку Кромсатора"

Может, это и хорошее дело, но пока что это некая "вещь в себе". Например, в самой этой сборке внутри рар-архива нет даже инструкции по использованию - она есть только на Руборде. И ещё хотелось бы больше пояснений о смысле и эффекте применяемых опций профилей СК.
Автор: monday2000
Дата сообщения: 03.11.2008 22:37
Tulon

Я тут сделал кое-какую старую мелочёвку:

1. Подправил реализацию алгоритма Deskew:
http://www.djvu-soft.narod.ru/bookscanlib/008.htm
Теперь он работает для любой глубины цвета и функция поворота там вставлена более приличная, чем была.

2. Выложил реализацию СканКромсаторного Normal Despeckle:
http://www.djvu-soft.narod.ru/bookscanlib/010.htm

Может, пригодится для чего-нибудь.
Автор: iroln
Дата сообщения: 04.11.2008 20:05
Попробовал собрать программу из исходников под Windows.
Ничего не получилось. На стадии компиляции выдаёт целую кучу ошибок, что где-то что-то не продекларировано.
Автор: Tulon
Дата сообщения: 04.11.2008 20:35
iroln

Цитата:
Попробовал собрать программу из исходников под Windows.
Ничего не получилось. На стадии компиляции выдаёт целую кучу ошибок, что где-то что-то не продекларировано.

Очень похвально что попытались собрать. Мы тут с еще одним товарищем разбирались с процессом сборки, и действительно обнаружились проблемы. Все проблемы теперь исправлены, Возьмите версию из SVN и читайте файл packaging/windows/readme.ru.txt

monday2000

Цитата:
1. Подправил реализацию алгоритма Deskew:
http://www.djvu-soft.narod.ru/bookscanlib/008.htm
Теперь он работает для любой глубины цвета и функция поворота там вставлена более приличная, чем была.

2. Выложил реализацию СканКромсаторного Normal Despeckle:
http://www.djvu-soft.narod.ru/bookscanlib/010.htm

Ну нынешний Deskew в СТ вроде всех устраивает, а Despekle посмотрю.

Теперь насчет текущего положения дел. Я сейчас в Англии, ищу работу. Вроде как все идет к тому, что найду. Сейчас времени особенно нет заниматься СТ. Впрочем кое-что я уже сделал за время моего пребывания тут. Работаю над гибридным алгоритмом выравнивания освещения. Первый этап - то, что мне предложил U235 (морфологическое выделение фона, если кому интересно - расскажу подробности). Второй этап - генерация полиномиальной поверхности на основе того, что выдал первый этап, не принимая во внимание области явного foreground'а. Идея с полиномиальными поверхностями взята отсюда:
http://www.comp.nus.edu.sg/~tancl/Papers/ICDAR07/lu-binarization.pdf
Оба этапа уже реализованы и работают, остались мелочи.
Автор: iroln
Дата сообщения: 04.11.2008 23:44
Tulon

Цитата:
Все проблемы теперь исправлены, Возьмите версию из SVN и читайте файл packaging/windows/readme.ru.txt


Спасибо, всё собралось без ошибок.

Вопрос: Патчить библиотеку libtiff обязательно?
Ведь после пропатчивания этой библиотеки нужно будет пересобрать проект заново, т.к. все библиотеки линкуются статически.

И ещё вопрос: Вы используете библиотеку Boost. Альтернативы не нашлось? Уж больно она сложна, хотя, не отрицаю, что она очень функциональна.

По поводу самой программы.
Алгоритмы обработки на первый взгляд работают очень даже неплохо!

Интерфейс очень неудобный и не продуманный. Интерфейсу нужно уделить особое внимание на самой ранней стадии проекта, продумать все детали, нарисовать эскизы и прототипы, провести тестирование среди пользователей, иначе потом переделывать всё будет каторгой, так как программа обещает быть не простой. Читал на вашем сайте о том, что предложение убрать окно с выбором действий над проектом было отстранено. На мой взгляд - это неверно. Данное окно в программе совершенно не нужно, оно лишь усложняет алгоритм работы с программой и вынуждает пользователя производить слишком много запутывающих действий. Почему бы не сделать так, как например это сделано в Photoshop? Лучше продумать архитектуру сейчас, потом это сделать будет невозможно. Создание качественного интерфейса временами занимает до 70% времени при работе над проектом. К этому нужно отнестись серьёзно, если хотите, чтобы люди пользовались программой.

Также считаю, что проекту необходим форум. Без форума никуда...

Я сам работаю математиком-программистом в одной компании и как раз занимаюсь алгоритмами обработки изображений, но несколько в другой области, хотя близко. Пользовательскими интерфейсами стал интересоваться и заниматься недавно. Qt4 я также стал изучать сравнительно недавно, нужно ещё много всего изучить, прежде чем от меня может быть какая-то польза.

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

Этот проект мне интересен, потому что я так же занимаюсь сканом и созданием электронных книг когда есть свободное время.
Автор: Tulon
Дата сообщения: 05.11.2008 00:36

Цитата:
Вопрос: Патчить библиотеку libtiff обязательно?
Ведь после пропатчивания этой библиотеки нужно будет пересобрать проект заново, т.к. все библиотеки линкуются статически.

Тут можно только повторить, что на этот счет написано в readme:
Если не собираетесь распространять свои билды и не собираетесь открывать файлы от ненадежных источников, тогда можете не патчить. В общем с непатченым libtiff, можно создать такой tiff файл, который при его открытии выполнит произвольный код на вашей системе.


Цитата:
И ещё вопрос: Вы используете библиотеку Boost. Альтернативы не нашлось? Уж больно она сложна, хотя, не отрицаю, что она очень функциональна.

Тут надо говорить об отдельных компонентах этой библиотеки, которые я использую. А это:
* multi_index - сложная, но очень мощьная вещь, реально облегчающая задачу. Аналогов нет, можно только руками заменить один такой контейнер несколькими, а потом синхронизировать их, да еще и получить падение производительности.
* lambda - умеренная сложность, позволяет сократить код. Альтернатива - много ручного кода и изменения API в худшую сторону. Если сейчас имеем что-то вроде:
void получитьСписокТакихТоВещей(Функтор f), то без лямбды либо придется для каждого вызова такой штуки создавать отдельный класс-помошник, либо изменять функцию, чтобы она возвращала этот список в каком-либо заранее предопределенном контейнере, что снижает гибкость.
* bind - используется только в одном месте. Альтернатив хватает, но они одного порядка сложности с ним, и вообще - зачем тянуть еще одну зависимость, когда такая штука есть в boost.
* По мелочам - всякие там BOOST_FOREACH и lexical_cast - просто удобно, раз уж все равно boost использую.


Цитата:
Интерфейс очень неудобный и не продуманный. Интерфейсу нужно уделить особое внимание на самой ранней стадии проекта, продумать все детали, нарисовать эскизы и прототипы, провести тестирование среди пользователей, иначе потом переделывать всё будет каторгой, так как программа обещает быть не простой.

Хм, а я как раз на интерфейс упор и делал. Что кроме окна при старте вам не нравится? Кстати как оно в Фотошопе сделано я не знаю, и даже проверить не могу - настольный комп дома остался, а тут у меня с собой старенький ноутбук Apple, которые еще PowerPC были. Соответственно на нем Linux и OSX, а Windows сюда просто не встанет. Фотошоп для OSX предлагать не надо.


Цитата:
Я сам работаю математиком-программистом в одной компании и как раз занимаюсь алгоритмами обработки изображений, но несколько в другой области, хотя близко.

О, да вы как раз такой человек, который нужен проекту. Я в математике ноль, в обработке изображений - уже не ноль, но начинал почти с нуля. Специализируюсь на бэк-эндах: networking, multithreading - это мои сильные стороны. Ну и общие архитектурные вопросы - это тоже по моей части. Так что если будет время - милости просим.


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

Было бы неплохо конечно.


Цитата:
Qt4 я стал изучать недавно, нужно ещё много всего изучить, прежде чем от меня может быть какая-то польза.

Ну там и кроме Qt работы хватает. Например фильтр Select Content работает не очень уверенно.

Добавлено:

Цитата:
Также считаю, что проекту необходим форум. Без форума никуда...

Пока используем этот, потом посмотрим. Вроде SourceForge собирается предложить или даже уже предлагает нормальную платформу форумов, а не то, что у них называлось форумом до сих пор. Или какой другой вариант.
Автор: iroln
Дата сообщения: 05.11.2008 01:56
Tulon
Хотел сказать, что вы вообще молодец, сделали уже большую работу, это очень здорово!


Цитата:
Хм, а я как раз на интерфейс упор и делал. Что кроме окна при старте вам не нравится? Кстати как оно в Фотошопе сделано я не знаю, и даже проверить не могу - настольный комп дома остался, а тут у меня с собой старенький ноутбук Apple, которые еще PowerPC были. Соответственно на нем Linux и OSX, а Windows сюда просто не встанет. Фотошоп для OSX предлагать не надо.

Фотошоп по умолчанию запускается "пустым", а далее через меню "Файл" производятся действия по импорту-экспорту файлов и проектов. Так же вызвать диалог открытия файла можно по двойному щелчку мышкой по рабочему полю в окне программы.

В вашем маленьком начальном окне нет смысла. Это лишний элемент интерфейса. По сути дела это примитивный менеджер проектов. Если вы хотите использовать менеджер проектов, то не лучше ли будет его интегрировать в основное окно приложения? Для примера, посмотрите как сделано в CodeBlocks:
http://pic.ipicture.ru/uploads/081105/HRxGjTs4nw.png

Работу с проектом также нужно реализовать из меню программы, как это сделано в большинстве современных приложений. Дело в том, что "интуитивность" понятие обманчивое и неопределённое. Пользователь обычно хорошо ориентируется в том, что для него привычно, а не интуитивно. Поэтому в большинстве программ интерфейс имеет общие черты.

Окно импорта файлов в проект тоже нужно переработать.
Хорошо было бы помнить директорию для проектов по-умолчанию.
В окне необходимо добавить поле для задания имени проекта.
Расположение объектов в окне тоже нужно продумать, чтобы визуальный поток не прерывался. Количество действий пользователя нужно сократить до минимума, если вы делаете погружение в одном окне.
Вообще обычно такие вещи делаются в виде пошагового мастера или карты последовательности:
http://pic.ipicture.ru/uploads/081105/UsUOwuGeJg.png

В главном окне наибольшее пространство нужно отвести под область с текущей страницей. Страница должна доминировать над другими элементами интерфейса. Страница - это центральная сцена. Ведь основная задача этой страницы продемонстрировать пользователю логически связанное содержимое, которое меняется шаг за шагом от его действий по обработке.
Сейчас ощущается нехватка места для страницы. Страница словно зажата между двумя массивными панелями.
Также необходимо реализовать масштабирование страницы в курсор а не по центру, что значительно удобнее (так например сделано в CAD системах и многих вьюверах графики). Панели инструментов и ленты предпросмотра лучше поменять местами и максимально ужать, на сколько это возможно. Панель инструментов нужно проработать отдельно, тут не быстрый процесс. Нужно продумать последовательность действий пользователя. Вообще, чтобы легче было делать такие вещи можно обратиться к паттернам проектирования интерфейсов. В интернете есть много литературы на эту тему (больше на английском языке). В данном случае, мне кажется, нужно реализовать что-то вроде пошагового мастера, иначе пользователь просто запутается как в СК. В данный момент я например даже не знаю, какие основные действия должна выполнять программа и в какой последовательности, что мне нужно делать, а что нет на данном этапе. Данная программа не графический редактор, здесь пользователю не должно выделяться пространство для творчества и импровизации. Чем определённее будет последовательность действий - тем для пользователя быстрее и проще. Пользователя нужно проводить по интерфейсу шаг за шагом, начиная от создания проекта и до получения окончательного результата, позволяя делать на каждом шаге чётко заданные действия и если есть необходимость возвращаться к предыдущему шагу. Ведь главное - это скорость и автоматизация работы. В FR например именно такой алгоритм работы с программой.


Цитата:
О, да вы как раз такой человек, который нужен проекту. Я в математике ноль, в обработке изображений - уже не ноль, но начинал почти с нуля. Специализируюсь на бэк-эндах: networking, multithreading - это мои сильные стороны. Ну и общие архитектурные вопросы - это тоже по моей части. Так что если будет время - милости просим.

Ну я вообще занимаюсь фильтрацией и поиском зон и объектов интереса на рентгеновских полутоновых изображениях. Естественно я отлично владею всеми средствами MATLAB и знаю математические основы морфологии и обработки изображений, основные алгоритмы и методы фильтрации, сегментации, описания и т.д., но это не значит, что я могу реализовать любой алгоритм за час. Возни в этой области всегда предостаточно. Пока я ограничен во времени, толку от меня мало.


Цитата:
Ну там и кроме Qt работы хватает. Например фильтр Select Content работает не очень уверенно.

Что конкретно требуется от этого фильтра? Что на входе, что на выходе, каковы априорные данные, спецификация?
Автор: Arcand
Дата сообщения: 05.11.2008 04:34
Tulon

Цитата:
Работаю над гибридным алгоритмом выравнивания освещения. Первый этап - то, что мне предложил U235 (морфологическое выделение фона, если кому интересно - расскажу подробности). Второй этап - генерация полиномиальной поверхности на основе того, что выдал первый этап, не принимая во внимание области явного foreground'а

Интересно, можно подробней про все это?
Автор: monday2000
Дата сообщения: 05.11.2008 11:59
Tulon

Цитата:
Я сейчас в Англии, ищу работу.

По телевизору показывали, что там сейчас жуткий кризис и всех "белых воротничков" увольняют пачками - типа банковских клерков.
iroln
Спасибо, что откликнулись на мой призыв:

Цитата:
Я написал трём мне известным программистам, которые ранее проявляли интерес к этой тематике. Может быть, хоть кто-то откликнется.

iroln
Не хотите ли заняться написанием консольных алгоритмов - как я в http://www.djvu-soft.narod.ru/bookscanlib/project.htm ? Но только ради бога не на Матлабе - а на какой-то более низкоуровневой графической библиотеке типа ImageMagick или FreeImage (чтобы этот код было реально применить в своей программе). Дело нужнейшее и полезнейшее. Вот сейчас, например, нужен алгоритм Smart Blur (как в Фотошопе).

Добавлено:
Tulon

Цитата:
Antialiasing - это свойство операции, а не сама операция, так что операция сглаживания - это либо blurring либо smoothing.

Интересно, что это за алгоритм такой - smoothing? Это не Blur?
Автор: dma200899
Дата сообщения: 06.11.2008 01:53

Цитата:
Сейчас ощущается нехватка места для страницы. Страница словно зажата между двумя массивными панелями.


Реально кодил книги в СТ.
С правой полосой все нормально - она не для красоты, а с нее контролируется макет.
Если ее уменьшить, то как раз видно ничего не будет. Оставшаяся по центру страница также достаточна для работы. Если надо что детальнее разглядеть - колесиком мышки она и увеличивается.
Все нормально.

Что абсолютно ненормально -
- необходимость руками встать на каждую страницу в оутпуте, т.к. если я руками все page layout поправил, то если я встал на оутпут и нажал батч, то СТ доблестно перекорежит все поправленное. Для книги в 800 стр. - большая потеря времени.
Как варианты:
1) сделать батч для оутпута
2) сделать выбор - батч всех стадий; батч текущей стадии,


Или, если я понял что неправильно выставил поля и хочу для всех страниц выставить в "page layout" опцию: правое поле = 10 мм. Но при этом все остальные настройки (верх, низ, левое поле) оставить те, что уже есть (разные). Так, если применять на все страницы, то установятся все 4 поля на все страницы. Мне же надо только правое.

Глюк в "Fix orientation - Apply - Every other page in range".
Все равно поворачивает все, как если бы выбрать "every page in range".

Такой кнопки "применить к четным/нечетным" не хватает для page align.
Хорошо бы также "применить к выбранным" + механизм выбора страниц - четные/нечетные, диапазон номеров.




Автор: Tulon
Дата сообщения: 06.11.2008 15:49
Добрался наконец до интернета, сейчас буду всем отвечать.

iroln

Цитата:
В вашем маленьком начальном окне нет смысла. Это лишний элемент интерфейса. По сути дела это примитивный менеджер проектов. Если вы хотите использовать менеджер проектов, то не лучше ли будет его интегрировать в основное окно приложения?

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


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

Для открытия проектов это уже сделано (открывает директорию последнего сохраненного). Для сохранения - не уверен. Будет время - доберусь и до этого.


Цитата:
В окне необходимо добавить поле для задания имени проекта.

Вот тут я не совсем уверен. Будет ли это также именем файла? Если да, то что делать с диалогом Save As? Забивать имя файла по умолчанию? А изменять его разрешать? А если не разрешать, то как? А если человек перейдет в другую директорию, не изчезнет ли это дефолтное имя?


Цитата:
Вообще обычно такие вещи делаются в виде пошагового мастера или карты последовательности:
http://pic.ipicture.ru/uploads/081105/UsUOwuGeJg.png

Это вы про окно создания нового проекта или про главное окно? Насчет окна создания проекта - я даже не знаю, где там дополнительные шаги могут быть. Ну разве что опциональный диалог Fix DPI сделать вторым шагом.
Ну а главное окно и так фактически представляет из себя многоэтапный мастер. Кнопок Prev / Next там правда нет, потому как переходов на произвольный этап получается больше, чем на предыдущий / следующий. Например перешли мы сразу на Select Content, запустили пакетную обработку, и увидели, что где-то страницы не так разрезались. Возвращаемя на Split Pages (а между ними Deskew) и правим это там.


Цитата:
Также необходимо реализовать масштабирование страницы в курсор а не по центру, что значительно удобнее

Идея хорошая, надо будет реализовать.


Цитата:
Панели инструментов и ленты предпросмотра лучше поменять местами и максимально ужать, на сколько это возможно.

Тут все не просто. Например кажется, что на ленте предпросмотра полно неиспользованного места слева-справа. Если у вас не развороты, то в принципе так и есть. Но даже этого программа достоверно не знает. Толи это одна страница, толи это развернутый на 90 градусов разворот, который вы захотите развернуть обратно. Если скажем у вас все таки разворот, то даже на этапах после разрезания этот разворот может отображаться в развернутом виде на ленте предпросмотра. Попробуйте например не пройдя полностью этап Split Pages прыгнуть сразу на Select Content. В общем если принимать в расчет наличие разворотов в ленте предпросмотра, то сужать ее некуда.


Цитата:
Цитата:
Ну там и кроме Qt работы хватает. Например фильтр Select Content работает не очень уверенно.

Что конкретно требуется от этого фильтра? Что на входе, что на выходе, каковы априорные данные, спецификация?

Вход: исходное изображение (может быть любой цветности), обрабатываемая зона (в виде многоугольника), угол поворота для выравнивания текста по горизонтали. Все эти аттрибуты кроме самого изображения хранятся в объекте ImageTransformation. Вывод: прямоугольник, ограничивающий облать контента, в координатах после преобразования. Сейчас реализация примерно такая: делаем афинное преобразование, потом бинаризацию. Убираем мусор с краев. Убираем совсем мелкие соединенные компоненты. У остальных анализируем форму. Если компонент не сильно извивается, значит это скорее всего мусор. Вертикальные и горизонтальные линии приходится обрабатывать отдельно. Степень извиваемости узнаем путом нахождения углублений и дыр, и потом сравниваем сколько пикселей составляют сам компонент, а сколько - углубления и дыры в нем. Еще один критерий - удаленность соединенного компонента от других компонентов.
Проблемы: мусор по краям не всегда удаляется полностью. Бывает остается загнутый уголок страницы или какой другой фрагмент. Особо тяжелы случаи, когда на входе - черно-белое неочищенное изображение. Вторая проблема, даже более серьезная - бинаризация в условиях теней от корешка книги. Я как раз сейчас над этим работаю.

Добавлено:
Arcand


Цитата:
Цитата: Работаю над гибридным алгоритмом выравнивания освещения.
Интересно, можно подробней про все это?

Ну хорошо. Идея выравнивания освещения заключается в том, чтобы выделить фон изображения, то есть убрать оттуда весь контент и залить эти места цветом бумаги, и потом пересчитать исходное изображение по этой формуле:
new_gray_level = orig * 255 / background
Имейте в виду, что цвет 0 - черный, а 255 - белый.
В общем, там, где фоновое изображение совпадает с исходным - мы получаем белый цвет. Чем больше разница между фоном и исходным изображением, тем более темный цвет мы получаем, но не в линейной зависимости, а таким образом, что темные объекты на темном фоне усиливаются больше.

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

Вот примерно так. Точное математическое определение можно найти в нете.

Добавлено:
monday2000

Цитата:
Цитата:
Я сейчас в Англии, ищу работу.

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

В Литве (я оттуда) все еще хуже. Здесь хоть нормальные вакансии есть. Там - только web development.


Добавлено:

Цитата:
Интересно, что это за алгоритм такой - smoothing? Это не Blur?

Я не знаю принципов наименования. Одни фильтры называют smoothing filter, другие - blurring.

Добавлено:
dma200899


Цитата:
Реально кодил книги в СТ.

Круто! Ссылкой на результат не поделишся?


Цитата:
Что абсолютно ненормально -
- необходимость руками встать на каждую страницу в оутпуте, т.к. если я руками все page layout поправил, то если я встал на оутпут и нажал батч, то СТ доблестно перекорежит все поправленное. Для книги в 800 стр. - большая потеря времени.
Как варианты:
1) сделать батч для оутпута
2) сделать выбор - батч всех стадий; батч текущей стадии,

Ну, в случае правильного использования СТ, корежиться ничего не должно. То есть он переделает все файлы, но переделка ведь будет с теми же параметрами - так что это не проблема. В случае с Page Layout - переделка всего и вся - это как раз нормальное явление, поскольку изменение полей одной страницы может повлиять на поля других. А вообще действительно не хорошо, что нельзя продолжить пакетную обработку с заданного места. Этот пункт уже есть в TODO.
По поводу "сделать выбор - батч всех стадий; батч текущей стадии":
Выполнение текущей стадии предполагает выполнение всех предыдущих. Например как делать Select Content, когда еще не разрезаны страницы? И да, вы можете на любой стадии делать пакетную обработку. При этом делается данная стадия и все предыдущие, но не последующие.


Цитата:
Или, если я понял что неправильно выставил поля и хочу для всех страниц выставить в "page layout" опцию: правое поле = 10 мм. Но при этом все остальные настройки (верх, низ, левое поле) оставить те, что уже есть (разные). Так, если применять на все страницы, то установятся все 4 поля на все страницы. Мне же надо только правое.

Да, нехватает гибкости тут. Надо думать, как выразить частичный Apply в крафическом интерфейсе.
Цитата:
Глюк в "Fix orientation - Apply - Every other page in range".
Все равно поворачивает все, как если бы выбрать "every page in range".



Цитата:
Глюк в "Fix orientation - Apply - Every other page in range".
Все равно поворачивает все, как если бы выбрать "every page in range".

Опа - а у меня все нормально работает.


Цитата:
Такой кнопки "применить к четным/нечетным" не хватает для page align.
Хорошо бы также "применить к выбранным" + механизм выбора страниц - четные/нечетные, диапазон номеров.

В идеале я представляю это себе как наличие произвольных групп страниц, и чтобы в диалогах Apply был вариант "применить к группе", и естественно выбор группы. А уж создание группы - тут вам предложат и четное-нечетное, и от и до, хоть по отдельным страницам кликай для включения / исключения из группы.
Тут надо продумывать интерфейс для создания групп, да и вообще - задача не маленькая. Впрочем это явно пункт для TODO. Может кто его за меня напишет, а я на сайте размещу; не все же мне одному делать
Автор: dma200899
Дата сообщения: 06.11.2008 22:02

Цитата:
в случае правильного использования СТ, корежиться ничего не должно. То есть он переделает все файлы, но переделка ведь будет с теми же параметрами - так что это не проблема.


Еще раз объясняю как происходит.

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

Так вот, реальная работа получается не так.
Если правки в случае сложной весртки на этапе page layout много (часть стр налево, часть направо, часть вверх, часть с полями, часть без полей, так как рисунки вылезают на край страницы и т.д.), то мне после того как все поправлено на оутпуте нужно батчем
все страницы и переделать по тем параметрам которые РУКАМИ поставлены на пейж лейоут.
Но если на оутпуте нажать батч, то СТ снова начнет всё-всё считать в режиме авто и я получаю тот самый вариант, от которого и уходил.
Т.е. при батче нужны не все предшествующие этапы, а только один данный текущий этап, а предшественники считать как уже сделанные. Как минмум это нужно для output.
Мне удобнее 5 раз батч нажать (для каждого шага), чем 800 страниц руками клавишей page down два часа перещелкивать, чтобы макет сохранить.

Я за это время сериал Ликвидация успел посмотреть.

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


Цитата:
Например как делать Select Content, когда еще не разрезаны страницы?


Если я не разрезал, то селект контент определит неправильно. Я это увижу и пойду назад на селект контент.


Кроме того - файлы с черной зоной вокруг текста select контент определяет слишком криво: в 70% была ошибка. Если их прогнать через кромсатор - 99% верно. Может сделать отдельный шаг на crop (как в БукРесторере) - обрезка черноты прежде чем контент искать ?

Добавлено:

Цитата:
в случае правильного использования СТ, корежиться ничего не должно. То есть он переделает все файлы, но переделка ведь будет с теми же параметрами - так что это не проблема.


Еще раз объясняю как происходит.

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

Так вот, реальная работа получается не так.
Если правки в случае сложной весртки на этапе page layout много (часть стр налево, часть направо, часть вверх, часть с полями, часть без полей, так как рисунки вылезают на край страницы и т.д.), то мне после того как все поправлено на оутпуте нужно батчем
все страницы и переделать по тем параметрам которые РУКАМИ поставлены на пейж лейоут.
Но если на оутпуте нажать батч, то СТ снова начнет всё-всё считать в режиме авто и я получаю тот самый вариант, от которого и уходил.
Т.е. при батче нужны не все предшествующие этапы, а только один данный текущий этап, а предшественники считать как уже сделанные. Как минмум это нужно для output.
Мне удобнее 5 раз батч нажать (для каждого шага), чем 800 страниц руками клавишей page down два часа перещелкивать, чтобы макет сохранить.

Я за это время сериал Ликвидация успел посмотреть.

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


Цитата:
Например как делать Select Content, когда еще не разрезаны страницы?


Если я не разрезал, то селект контент определит неправильно. Я это увижу и пойду назад на селект контент.


Кроме того - файлы с черной зоной вокруг текста select контент определяет слишком криво: в 70% была ошибка. Если их прогнать через кромсатор - 99% верно. Может сделать отдельный шаг на crop (как в БукРесторере) - обрезка черноты прежде чем контент искать ?

Добавлено:

Цитата:
Ну, в случае правильного использования СТ, корежиться ничего не должно. То есть он переделает все файлы, но переделка ведь будет с теми же параметрами - так что это не проблема.


нет это проблема.
Я сделал оутпут, получил файлы,
перешел на пейж лейоут и поправил макет на всех (!) страницах.
В итоге я должен в оутпуте руками встать на каждую страницу, так как, если я нажму батч, то я получу то с чего начинал и что правил.

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



Цитата:
Например как делать Select Content, когда еще не разрезаны страницы?


с ошибкой. Увидел ее - вернулся на разрезку страниц и разрещал.

Кстати, если селект контент делать при черных краях вокруг скана, то 70% ошибок. Пропустить сканы через СК - 99% верно. Может на автомате делать кроп как в Букресторере (аналог draft kromsate) ?
Автор: monday2000
Дата сообщения: 06.11.2008 22:20
Я сделал новую заметку:

11. Конволюционные фильтры

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

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


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