Цитата: Я до сих пор не смотрел в деталях: что он считает бэкграундом, а что foreground'ом.
Так это же как раз одна из замечательных фищек СТ. Чистые цвета 0 и 255 идут в черно-белую маску (foreground). Пиксели в диапазоне яркости 1-244 идут в слой цветного фона (бэкграунд).
Обработка зон после их выделения выстроена так, чтобы чистого черного и белого в них не было (там якобы имеется какая-то корректировка). Тулон хотел, чтобы сепараторы были внешними, и даже была утилита ST Separator. Ей было плевать на зоны, она обрабатывала непосредственно конечное изображение.
Но намного удобнее, когда это в саму программу встроено, что и сделал monday2000.
Впрочем, сначала был патч от anagnost для версии 0.9.7.
Тулон ему тогда так подсказывал:
Цитата:В файле filters/output/OutputGenerator.cpp, в функции processImpl(), есть такой код:
Код:
if (maybe_normalized.format() == QImage::Format_Indexed8) {
combineMixed<uint8_t>(
maybe_normalized, bw_content, bw_mask
);
} else {
assert(maybe_normalized.format() == QImage::Format_RGB32
|| maybe_normalized.format() == QImage::Format_ARGB32);
combineMixed<uint32_t>(
maybe_normalized, bw_content, bw_mask
);
}
Так вот, если перед combineMixed поставить в первом случае:
maybe_normalized.fill(0xff);
а во втором:
maybe_normalized.fill(0xffffffff);
то получите только текст, а если вместо этого в обоих случаях сделать:
bw_content.fill(WHITE);
то получите только картинки. Впрочем и картинки и текст будут на белом фоне, а хотелось бы наверное что-то из них - на прозрачном. Это тоже решаемо, но не двумя строками.
Ябы на вашем месте собрал две версии СТ - одна будет выдавать только текст, другая - только графику. Кстати текст в режиме Cмешанный не идентичен тексту в режиме "Черно-белый" при наличии картинок. Дело в том, что присутствие полутоновых картинок ухудшает качество бинаризации. В режиме "Смешанный" картинки игнорируются при бинаризации
Потом U235 предложил идею чистых цветов:
Цитата:Tulon, прошу рассмотреть такой вариант:
На выходе СТ (в смешанном режиме) выводить только один файл, без маски: черные буквы (0), белый фон (255), и серые картинки (значения яркости в диапазоне 1-255). Т.е. практически тоже самое, что и сейчас (только сейчас диапазон яркости картинок может быть 0-255).
Изменения программы ST, ИМХО, будут минимальны: нужно будет пройтись по пикселям маски перед выводом и заменить все значения яркости с 0, на 1, на глаз это совершенно не заметно.
В результате:
Те кто захочет использовать СТ для прямого кодирования в djvu и pdf не будут иметь проблем с дополнительными страницами в TIFF и те кто хочет использовать СТ для раздельного кодирования - тоже (т.к. скриптами (я использовал GraphicsMagik, скрипт выложил на сайте) или самописными отдельными программами можно с легкостью выделить как фон, так и текст в отдельные файлы для дальнейшей обработки и кодирования).
Т.е. по сути используется отдельная битовая плоскость в сером TIFF для хранения текстового слоя, все остальное - маска (фон).
И тулон 12 февраля 2010 добавил эту поддержку. (Может, по дате можно и коммит найти.)
Затем появились утилиты "Сепаратор" от 57an и LayerTailor от U235. На этой основе monady2000 сделал утилиту ST Split,
http://www.djvu-scan.ru/forum/index.php?topic=47.0А затем (я думаю, на основе этого своего кода) он в 2013 году и ST дополнил.
То, что с ST сделал, вот тут подробно задокументировал:
http://www.djvu-scan.ru/forum/index.php?topic=1137.msg5409#msg5409PSГы-гы. 2008 год, моё письмо тулону:
Цитата:Или, если я понял что неправильно выставил поля и хочу для всех страниц выставить в "page layout" опцию: правое поле = 10 мм. Но при этом все остальные настройки (верх, низ, левое поле) оставить те, что уже есть (разные). Так, если применять на все страницы, то установятся все 4 поля на все страницы. Мне же надо только правое.
Ответ:
Цитата:Да, нехватает гибкости тут. Надо думать, как выразить частичный Apply в крафическом интерфейсе