Добрался наконец до интернета, сейчас буду всем отвечать.
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. Может кто его за меня напишет, а я на сайте размещу; не все же мне одному делать