Автор Тема: Программа DjVu Imager  (Прочитано 124815 раз)

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #60 : 17 јРав 2010, 15:32:20 »
Судя по книгам, в которых хорошая бинаризация и использование зон убивается кодированием в профилях scanned, bitonal или (реже) photo - функциональность нужна.
Скорее такая наука будет вычислять не количество функционала, заложенного в программу, а количество шагов (и их понятность), необходимых для получения доступа к данному функционалу.
Что имеем сейчас, пытаясь применить технологию: 4-5 программ, в которых в большинстве случаев нужно нетривиальным образом сделать некоторую групповую обработку набора обработанных в том же СТ сканов: разделить сепаратором, закодировать в требуемом профиле в Small, вернуть в родное разрешение (из 600 в 300), пройти Гауссом и увеличить контраст - все это либо последовательно вьюером и простыми шагами в Corel, либо одним сложным шагом в Corel (предварительно поэкспериментировав). И наконец, вставить Imager'ом.
Если пользователь - не гик, ему эти шаги делать совсем не хочется.
Он хочет дать в Small набор обработанных сканов, выбрать профиль Imager и получить на выходе оптимальный DjVu. А уже задача программиста - узнать шаг растра и подобрать оптимальный радиус Гаусса, узнать границы яркости и задать соответствующую коррекцию контраста...

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #61 : 17 јРав 2010, 15:54:02 »
57an
Цитировать
Если пользователь - не гик, ему эти шаги делать совсем не хочется.
Да ну начинайте оптимизацию не с меня - а с СТ.  ;) :D

Гаусс я могу встроить в DjVu Imager - и даже именно Гимповский гаусс. Но пока не определился - надо ли.

А в DjVu Imager я вообще планирую встроить проверку равенства размеров "обклеиваемой" страницы и вклеиваемой картинки - и если равенства нет, то Esc. Чтобы покончить окончательно со всякой ерундой типа несовпадения пропорций размеров входного контента. Пусть это будет проблемой СТ - а не проблемой DjVu Imager - так будет справедливо.
Цитировать
Он хочет дать в Small набор обработанных сканов, выбрать профиль Imager и получить на выходе оптимальный DjVu.
Полностью согласен с этой мыслью. Но только не за счёт слияния 2-х программ (DjVu Small и DjVu Imager) в единую программу. Может, как-то упростить экспорт-импорт между ними - надо подумать.
« Последнее редактирование: 17 јРав 2010, 16:02:21 от monday2000 »

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #62 : 17 јРав 2010, 17:01:58 »
Цитировать
А в DjVu Imager я вообще планирую встроить проверку равенства размеров "обклеиваемой" страницы и вклеиваемой картинки

Кстати, давно хотел спросить как алгоритмически работает параметр ДЗФ - конкретно, как фильтрует (и фильтрует ли) при масштабировании?
Я обычно делю (если делаю не через STA, а по U235) в FS Image Viewer с фильтром по умолчанию (там это Lanczos3). Если в Imager'e то же самое, то ДЗФ-ом вполне можно пользоваться.. Если нет - лучше оставить возможность подачи иллюстраций с кратным пиксельным размером. Ну, а если уж некратно - то тогда уже Esc с соответствующим сообщением (то, что сейчас просто молча не вставляет - это, конечно, не дело).

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

Добавлено:
Провел небольшой эксперимент. Результат на первый взгляд парадоксален. Получил размер страницы после FS - 152кб, после ДЗФ - 131кб. При этом во втором случае JPEG-артефактов меньше. http://www.onlinedisk.ru/file/381472/
« Последнее редактирование: 17 јРав 2010, 18:23:58 от 57an »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #63 : 17 јРав 2010, 19:17:46 »
Цитировать
Кстати, давно хотел спросить как алгоритмически работает параметр ДЗФ - конкретно, как фильтрует (и фильтрует ли) при масштабировании?
Очень просто: ДЗФ уменьшает пиксельные размеры заднего субскана по следующей формуле: (см. http://www.djvu-soft.narod.ru/soft/fi_c44.htm )
Цитировать
dib = FreeImage_Rescale(dib_tmp, (int)((width+(flag_bsf-1))/flag_bsf),
(int)((height+(flag_bsf-1))/flag_bsf), FILTER_BICUBIC);
Эта формула - официальная, точнее, она взята из исходников csepdjvu (и переложена на FreeImage, естественно).
flag_bsf - это значение ДЗФ. width и height - исходные размеры заднего субскана (до уменьшения по ДЗФ).
FILTER_BICUBIC - ну это я выбрал - кубическая интерполяция (при даунсемплинге) - как наиболее качественная. А мог бы выбрать Lanczos3 или Box - но те хуже качеством. Сравнение качества разных алгоритмов интерполяции, встроенных в библиотеку FreeImage, можно увидеть в конце хелпа FreeImage: http://downloads.sourceforge.net/freeimage/FreeImage3131.pdf . FILTER_BICUBIC - это наилучшее качество (за счёт более медленной скорости).

Эта формула показывает, какое должно соблюдаться соотношение между размерами обоих субсканов. Такая формула обязана быть встроенной в СК и СТ - если уж они делают ДЗФ внутри себя. А, поскольку, как Вы ранее говорили, после СТ или СК (не помню) были проблемы с размерами уже в DjVu Imager - то я из этого заключаю, что такая формула не встроена в СТ (или СК).

Далее DjVu Imager просто подаёт на вход djvumake уменьшенный по этой формуле задний субскан. djvumake вычисляет (по этой же формуле) - а какой в данном случае имеет место быть ДЗФ? (сравнивая пиксельные размеры обоих субсканов) - и, исходя из ответа, как-то там сам внутри себя снижает разрешение наклеиваемого заднего фона.

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #64 : 17 јРав 2010, 19:53:52 »
Получается, что все проблемы с уменьшенными иллюстрациями связаны с тем фактом, что csepdjvu ожидает округления вверх, а СТ и FS Image Viewer округляют вниз.
Т.е. от 600dpi скана высотой 3999pix csepdjvu ожидает 300dpiшную часть высотой 2000pix, а мы ей подсовываем 1999pix. Интересно..

Продолжил эксперимент. Bicub в FS ImageViewer дал результат 144кб. Артефакты между Lancos3 и ДЗФ... Получается, что во FreeImage FILTER_BICUBIC более качественный, чем заложенный в FS? http://www.onlinedisk.ru/file/382013/
« Последнее редактирование: 18 јРав 2010, 09:25:00 от 57an »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #65 : 18 јРав 2010, 13:29:29 »
57an
Цитировать
Получается, что во FreeImage FILTER_BICUBIC более качественный, чем заложенный в FS?
Я не знаю, что за алгоритм бикубической интерполяции заложен в FS ImageViewer. Но вообще эти алгоритмы могут быть разными - по скорости и качеству. См. http://www.djvu-soft.narod.ru/bookscanlib/017.htm

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #66 : 18 јРав 2010, 14:22:52 »
Цитировать
Но только не за счёт слияния 2-х программ (DjVu Small и DjVu Imager) в единую программу

В принципе, Сепаратор-U235 мог бы стать той самой объединяющей программой, беря на входе сканы после ST, деля их на субсканы, делая соответствующую обработку субсканов иллюстраций (если просто масштабировать, размывать Гауссом и увеличивать контраст, то FreeImage достаточно) и вызывая Small и Imager (или FSD, или еще что-либо подходящее) для объединения субсканов в djvu прозрачно для пользователя.

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #67 : 18 јРав 2010, 15:18:26 »
57an
Цитировать
В принципе, Сепаратор-U235 мог бы стать той самой объединяющей программой,
Особенно, если Вы наконец-таки объясните, что такое Ваши "Сепаратор" и "Корректор". ;D

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #68 : 18 јРав 2010, 15:40:03 »
Корректор - уже не актуальная ( начиная с СТ 0.9.8 ) утилита, повышающая яркость абсолютно черных пикселов в сканах на входе СТ, чтобы на выходе СТ абсолютно черными стали только бинаризованные элементы (текст).
Сепаратор - аналог LayerTailor от U235 (и пока что ничего более).
Описано в п.4.3.2 Методики в wiki СТ.
« Последнее редактирование: 08 °ЯаХЫм 2010, 14:56:06 от 57an »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #69 : 18 јРав 2010, 18:30:36 »
57an
Вот эта идея с разбиением 1 результирующего скана в режиме Greyscale на пару субсканов (передний субскан и задний субскан), базируясь только на номере цвета каждого пикселя (все чёрные пиксели - отправляем в передний субскан, все остальные - в задний) (а-ля LayerTailor от U235) мне не нравится.

Это явно ненадёжно - чревато ошибками. Плохой это путь ИМХО.

Остаётся только СТА. Он даёт 100% гарантию правильности генерации нужных нам субсканов - в полном соответствии с тем, как они были обозначены в СТ. И не просто СТА (остаётся) - а именно связка "СТА + ST GreyText". Именно такой вариант (связка "СТА + ST GreyText") даёт нам (пользователю) возможность получить любой нужный вид субсканов. Я, конечно, как-нибудь сделаю таким способом реальную книгу, и опишу всё это дело.

Да, это конечно уродство - использовать вместо оригинального СТ его клон (СТА), да ещё и лепить к нему сбоку всякие левые приблуды (типа ST GreyText). Но пускай это остаётся на совести Tulon - который упорно не хочет сделать всё по-человечески (а ему это было бы одним пальцем шевельнуть).

Что нужно было бы сделать Tulon - яснее ясного:

1. Сделать СТА СТ (уж почему он это-то не делает - просто возмутительно, и нет этому никаких оправданий).

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

2. Добавить функциональность ST GreyText в СТА (т.е. сделать опцию - вывод передних субсканов не непременно в чёрно-белом режиме - а по желанию пользователя - в режиме серого/цветного).

Элементарщина для такого программиста, как Tulon - но всё же, это почему-то не делается... Этим он мне здорово напоминает bolega в его худшие времена. :(
« Последнее редактирование: 18 јРав 2010, 18:34:23 от monday2000 »

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #70 : 18 јРав 2010, 20:30:53 »
Что бы вы не говорили - Tulon пашет, как Папа Карло - вы же видели его последние пререлизы с усовершенствованным деспеклом? В них метод U235 уже встроен - можете проверить.

Цитировать
Вот эта идея с разбиением 1 результирующего скана в режиме Greyscale на пару субсканов (передний субскан и задний субскан), базируясь только на номере цвета каждого пикселя (все чёрные пиксели - отправляем в передний субскан, все остальные - в задний) (а-ля LayerTailor от U235) мне не нравится.
Это явно ненадёжно - чревато ошибками. Плохой это путь ИМХО.

Может быть, вы чего-то недопонимаете? Вывод идет в любом режиме, включая Смешанный, все зоны отрабатывают на 100%, только содержимое зон на этапе вывода в самом СТ обрабатываются так, что в них не остается ни абсолютно белых [255,255,255], ни аболютно черных [0,0,0] пикселей.
Таким образом ни о каких ошибках разбиения речи быть не может. Это проверено и это 100% работает.

Достоинства и недостатки обоих технологий разбиения вывода (СТА и U235) описаны в Методике. Повторяться здесь не буду.
« Последнее редактирование: 18 јРав 2010, 21:24:03 от 57an »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #71 : 19 јРав 2010, 17:44:52 »
57an
Цитировать
Tulon пашет, как Папа Карло
Ну и что, про bolega так тоже можно сказать.

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

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #72 : 22 јРав 2010, 20:08:35 »
Использующие по моему совету Imager оцифровщики периодически жалуются на ошибку (или предупреждение) 22. Что бы это могла быть за ошибка?
Пример: http://www.onlinedisk.ru/file/386429/. Насколько понимаю, дело в слишком длинных или слишком русских именах файлов...
« Последнее редактирование: 22 јРав 2010, 20:38:26 от 57an »

monday2000

  • Администратор
  • *****
  • Сообщений: 985
    • AOL клиент - -
    • Yahoo клиент - -
    • Просмотр профиля
    • Создание книг в электронном виде из бумажных книг (в формате DjVu)
    • E-mail
Re: Программа DjVu Imager
« Ответ #73 : 22 јРав 2010, 23:36:53 »
57an
Это когда на совершенно пустую страницу (точнее, где нет маски Sjbz) вклеивается задний фон. Точнее, не вклеивается - а просто копируется вклеиваемый чанк заднего фона и вставляется. Ошибка 22 - это в самописной функции "СкопироватьФайл" по какой-то причине не открывается файл-назначение копирования. А вот почему - буду разбираться. Скачаю завтра Ваш 19-метровый пример и гляну его.

57an

  • Постоялец
  • ***
  • Сообщений: 201
    • Просмотр профиля
    • Djvu Bookmarker on SF.net
Re: Программа DjVu Imager
« Ответ #74 : 23 јРав 2010, 06:49:26 »
Постоянно попадаюсь (да и не только я), на засаду с назначенным по-умолчанию dpi на полностраничных иллюстрациях. Логика быстрого определения dpi для JPG, PNG и TIFF (без загрузки изображения целиком) есть в исходниках ST. Сейчас это главный косяк Djvu Imager. Ну зачем нам нужны пляшущие размеры страниц?