Tulon
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрался наконец до интернета, сейчас буду всем отвечать. iroln Цитата: В вашем маленьком начальном окне нет смысла. Это лишний элемент интерфейса. По сути дела это примитивный менеджер проектов. Если вы хотите использовать менеджер проектов, то не лучше ли будет его интегрировать в основное окно приложения? | Это можно, только существующая архитектура слишком не гибкая, чтобы позволить такое. В конце концов я доведу ее до ума, но это не самая высокоприоритетная задача. Цитата: Хорошо было бы помнить директорию для проектов по-умолчанию. | Для открытия проектов это уже сделано (открывает директорию последнего сохраненного). Для сохранения - не уверен. Будет время - доберусь и до этого. Цитата: В окне необходимо добавить поле для задания имени проекта. | Вот тут я не совсем уверен. Будет ли это также именем файла? Если да, то что делать с диалогом Save As? Забивать имя файла по умолчанию? А изменять его разрешать? А если не разрешать, то как? А если человек перейдет в другую директорию, не изчезнет ли это дефолтное имя? Цитата: Это вы про окно создания нового проекта или про главное окно? Насчет окна создания проекта - я даже не знаю, где там дополнительные шаги могут быть. Ну разве что опциональный диалог 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. Может кто его за меня напишет, а я на сайте размещу; не все же мне одному делать | Всего записей: 718 | Зарегистр. 07-05-2008 | Отправлено: 16:49 06-11-2008 | Исправлено: Tulon, 16:52 06-11-2008 |
|