Методы ручной сегментации
Постановка задачи
Из оригинального изображения нам нужно получить:
1) Слой текста, очищенный от цветовых шумов, с минимальным количеством цветов.
2) Слой полутоновых иллюстраций (если есть), по возможности отчищенный от текста.
Итого, задача ручной обработки сводится к следующему:
1) Очистка текста от цветовых шумов и минимизация количества цветов в тексте.
2) Отделение текста от фона и вынесение текста в отдельное изображение.
3) Отделение фона от текста и вынесение фона в отдельное изображение.
Получив очищенные слои текста и иллюстраций, мы можем сжать их в DjVu-файл.
Этот процесс описан, в частности, в документации программы "Djvu Small Mod"
(Параграфы "Ручная сегментация" и "Малоцветное кодирование")
Такова постановка задачи, далее - трюки.
Трюк: использование "Save for Web" в Фотошопе.
Задача: Очистка текста от цветовых шумов и минимизация количества цветов в тексте.
Способ достаточно простой и быстрый, годится для простых случаев.
Грузим изображение в Фотошоп, выбираем в меню фичу "Save for Web".
В настройках следует выбрать:
Формат = Gif
Dither algorithm = No dither (важно!)
Задать выходное количество цветов (подсчитать вручную)
Поиграться с опцией "Color reduction algorithm"
После сохранения файла, имеет смысл опять открыть его и очистить от артефактов.
И убедиться, что белый фон имеет чисто-белый цвет RGB={255,255,255}.
Последнее важно, если предполагается подклеивать фон с иллюстрациями, т.к. только чисто-белый цвет считается прозрачным.
Трюк: Подборка видео-уроков от SilverKtulhu для малоцветного кодирования.
Задача: Очистка текста от цветовых шумов и минимизация количества цветов в тексте.
Урок 1. Обработка страниц через CMYK.
Урок 2. Обработка малоцвета.
Урок 3. Обработка малоцветных книг через CMYK и Adobe InDesign.
Трюк: Подборка видео-уроков от SilverKtulhu для разделённых сканов.
Трюк: использование промежуточного DjVu для разделения слоёв.
Задача: Отделение текста от фона и вынесение текста в отдельное изображение.
Промежуточный DjVu-файл отличается тем, что может иметь запорченный фон и сколько угодно мусора в слое текста. В обычной ситуации это считалось бы браком, но для промежуточного DjVu это нормально.
Единственное требование к промежуточному DjVu - чтобы он содержал все нужные элементы текста. Вот пример такого промежуточного DjVu:
Промежуточный DjVu декодируется обратно в формат изображения, после чего чистится в Фотошопе. Чистить такое изображение намного легче, чем оригинальное. Отчищенное от мусора изображение очищается от цветовых шумов (как для малоцветного кодирования) и используется в качестве слоя текста.
Иногда может потребоваться не один, а несколько промежуточных DjVu-файлов. Например, если изображение содержит и чёрный и белый текст. Чёрный текст требует сжатия с параметром "Негативность" < 50, Белый текст - требует "Негативность" > 50. Решение - сделать два промежуточных DjVu и соединить их в Фотошопе.
Типовые параметры для кодирования промежуточного DjVu:
Залить фон = Белым (убить фон)
# Настройки текста: (максимальное качество)
Детализация = Без потерь
Качество цвета = 100
Прореживание = 1
# Основные настройки сегментера:
Фильтр формы = Всё в текст
Негативность = ... (в зависимости от цвета текста)
# Дополнительные настройки сегментера (если потребуется):
Подавить полутона = 0 (усиливает чувствительность к контрасту)
Размер отрисовки = 1 (усиливает чувствительность к контрасту)
Пиксельный фильтр = 25 (усиливает чувствительность к мелким деталям)
Порог = 25 (ужирняет тонкие линии)
Порог = 90 (утончает жирные линии)
Размер блока = 32 (ужирняет тонкие линии)
Размер блока = 8 (утончает жирные линии)
Трюк: Автоматическая очистка фона.
Задача: Отделение фона от текста и вынесение фона в отдельное изображение.
Вместо того, чтобы чистить фон от текста, берём в качестве фона оригинальное изображение. В настройках ручной сегментации в программе "DjVu Small Mod" ставим параметр "Метод сжатия" = "fi_sep". При этом фон под текстом будет очищен автоматически.Автомат работает несколько хуже, чем можно сделать вручную. Размер файла получается на 10-20% больше. Но качество не страдает, т.к. остатки текста в фоне скрыты под текстовым слоем.
Трюк: Решение проблемы белого шрифта
Задача: Отделение текста от фона и вынесение текста в отдельное изображение.
Сделать чисто белый шрифт достаточно сложно, т.к. при кодировании белый цвет считается прозрачным.
Самое простое решение - сделать шрифт почти белым, RGB={254,254,254}. Глаз разницу не замечает, а для программы этого достаточно, чтобы отличить белое от прозрачного.