DjVu (фонетическое сокращение от англ. “Digital View”) — технология сжатия изображений с потерями, разработанная специально для хранения сканированных документов (книг, журналов, рукописей и пр., где обилие формул, схем, рисунков и рукописных символов делает чрезвычайно трудоёмким их полноценное распознание), разработанный фирмой AT&T.
Формат оптимизирован для передачи по сети, т.о. страницу можно просматривать ещё до завершения скачивания. DjVu-файл может содержать текстовый слой, что позволяет осуществлять полнотекстовый поиск по файлу. Кроме того, DjVu-файл может содержать встроенное интерактивное оглавление и ссылки, что позволяет реализовывать удобную навигацию в DjVu-книгах.
Параметры компонентов изображения в формате DjVu.
Имя слоя |
Пояснение |
Разрешение, dpi |
Глубина цвета, bits/pix |
маска |
монохромная маска-трафарет |
300 |
1 |
задний план |
цветной фон |
100 |
24 |
передний план |
цвета маски |
25 |
24 |
Для сжатия цветных изображений в DjVu применяется технология, разделяющая исходное изображение на три слоя: передний план, задний план и чёрно-белую (однобитовую) маску.
Основная проблема - отделить текст от фона, особенно если это цветной текст, и более того, разноцветный. Цвет текста в большинстве документов практически одинаков в рамках одного знака. Это позволяет сохранять цветовую информацию о тексте с разрешением всего 25
dpi (слой " задний план ") (см. табл.).Разделение изображения на текст и фон (формирование слоя-маски) основано на так называемой мультимасштабной кластеризации. Изображение разбивается на разноразмерные вложенные сетки, в каждой ячейке которых происходит распознавание текстовых и фоновых цветов по максимальным пикам на гистограмме. Отделив текст от фона в самой крупной сетке, алгоритм переходит к уточнению на основе данных из сеток меньшего размера. Разработчиками найдено эмпирическое соотношение: цвет, определенный как "текстовый" в наибольшей ячейке, смешивается с "текстовым" цветом в меньшей, вложенной ячейке в пропорции 20% к 80%. Результат смешения принимается за цвет текста для расчетов в еще более мелкой сетке по тому же принципу 20/80.
Очевидно, смешение одинаковых цветов даст тот же самый цвет. В этом случае вложенные ячейки игнорируются, и общий объем информации о слое-маске уменьшается на 10...30% по сравнению с разбиением одноразмерной сеткой наименьшего шага.
В DjVu для сжатия фона, маски и цветовой информации о маске применяются различные алгоритмы. Фон сжимается вейвлет-алгоритмом IW44 (4х4
wavelets), слой-маска, не содержащий цветовой информации, упаковывается методом JB2. Цветовая информация о тексте так же кодируется IW44, но предварительно загрубляется до 25 dpi.Формат IW44 очень близок к новому стандарту JPEG2000, но, менее требователен к системным ресурсам при декомпрессии изображения во время просмотра. Вейвлеты
(всплески) — это математические функции, позволяющие анализировать различные частотные компоненты данных. Алгоритмы JPEG и MPEG, в отличие от вейвлетного, сжимают по отдельности каждый блок исходного изображения размером 8 на 8 пикселей. В результате, за счёт потери данных при сжатии, на восстановленном изображении может быть заметна блочная структура. При вейвлетном сжатии такой проблемы не возникает, но могут появляться искажения другого типа, имеющие вид “призрачной” ряби вблизи резких границ. Считается, что такие артефакты в среднем меньше бросаются в глаза наблюдателю, чем "квадратики", создаваемые JPEG.Слой-маска перед упаковкой JB2 претерпевает оптимизацию с целью освобождения от "случайных" штрихов и "шума сканера" на основе так называемого Soft pattern matching algorithm.
Особенностью алгоритма JB2 является то, что он ищет на странице повторяющиеся символы и сохраняет их изображение только один раз. В многостраничных документах каждые несколько подряд идущих страниц пользуются общим “словарём” изображений.
Для сжатия большинства книг можно обойтись только двумя цветами. В этом случае используется всего один слой, что позволяет достичь рекордной степени сжатия. В типичной книге с чёрно-белыми иллюстрациями, отсканированной с разрешением 600 dpi, средний размер страницы составляет около 15 Кб, то есть приблизительно в 100 раз меньше, чем исходный файл.