JBIG2
Тип интернет-СМИ | изображение/x-jbig2 |
---|---|
Разработано | Объединенная группа экспертов по двухуровневым изображениям |
Последний выпуск | 2 |
Содержится | Портативный формат документов , ФАКС |
Стандартный | МСЭ Т.88 и ИСО / МЭК 14492 |
JBIG2 — стандарт сжатия изображений для двухуровневых изображений , разработанный Joint Bi-level Image Experts Group . Он подходит как для сжатия без потерь , так и для сжатия с потерями . Согласно пресс-релизу [1] от группы, в режиме без потерь JBIG2 обычно генерирует файлы в 3–5 раз меньше, чем Fax Group 4 , и в 2–4 раза меньше, чем JBIG , предыдущий стандарт двухуровневого сжатия, выпущенный группой. JBIG2 был опубликован в 2000 году как международный стандарт ITU T.88. [2] и в 2001 году как ISO / IEC 14492. [3]
Функциональность [ править ]
В идеале кодировщик JBIG2 сегментирует входную страницу на области текста, области полутоновых изображений и области других данных. Области, которые не являются ни текстом, ни полутонами, обычно сжимаются с использованием контекстно-зависимого арифметического алгоритма кодирования , называемого кодером MQ. Текстовые области сжимаются следующим образом: пиксели переднего плана в регионах группируются в символы. Затем создается и кодируется словарь символов, обычно также с использованием контекстно-зависимого арифметического кодирования, а регионы кодируются путем описания того, какие символы где появляются. Обычно символ соответствует символу текста, но для метода сжатия это не требуется. При сжатии с потерями можно пренебречь разницей между похожими символами (например, слегка отличающимися отпечатками одной и той же буквы); при сжатии без потерь эта разница учитывается путем сжатия одного аналогичного символа с использованием другого в качестве шаблона. Полутоновые изображения можно сжимать путем восстановления изображения в оттенках серого, используемого для создания полутонов, а затем отправки этого изображения вместе со словарем полутоновых шаблонов. [4] В целом алгоритм, используемый JBIG2 для сжатия текста, очень похож на схему сжатия JB2, используемую в формате файлов DjVu для кодирования двоичных изображений.
Файлы PDF версии 1.4 и выше могут содержать данные, сжатые с помощью JBIG2. Декодеры с открытым исходным кодом для JBIG2: jbig2dec. [5] ( AGPL ), jbig2-imageio на основе Java. [6] ( Apache-2 ), jbig2.js на основе JavaScript. [7] ( Apache-2 ) и декодер от Glyph & Cog LLC, найденный в Xpdf и Poppler. [8] (обе под лицензией GPL ). Кодировщик с открытым исходным кодом — jbig2enc. [9] ( Апач-2 ).
Технические подробности [ править ]
Обычно двухуровневое изображение состоит в основном из большого количества текстовых и полутоновых данных, в которых одни и те же фигуры появляются неоднократно. Двухуровневое изображение сегментировано на три области: текстовую, полутоновую и общую. Каждый регион кодируется по-разному, и методологии кодирования описаны в следующем отрывке.
Текстовые данные изображения [ править ]
Кодирование текста основано на природе визуальной интерпретации человека. Человек-наблюдатель не может отличить два экземпляра одних и тех же символов в двухуровневом изображении, даже если они не могут точно совпадать по пикселям. Следовательно, необходимо кодировать только растровое изображение одного экземпляра репрезентативного символа вместо кодирования растровых изображений каждого появления одного и того же символа по отдельности. Для каждого экземпляра символа закодированный экземпляр символа затем сохраняется в «словаре символов». [10] Существует два метода кодирования данных текстового изображения: сопоставление и замена шаблона (PM&S) и мягкое сопоставление шаблонов (SPM). [11]
Сопоставление и замена шаблонов (PM&S) — более классический метод кодирования. Кодер выполняет сегментацию изображения для выделения фрагментов размером с символ. Для каждого отдельного фрагмента кодировщик ищет совпадение в словаре растровых изображений. Если совпадение существует, мы кодируем индекс соответствующего репрезентативного растрового изображения в словаре и положение символа на странице. Позиция обычно определяется относительно другого ранее закодированного символа. Если совпадение не найдено, сегментированный блок пикселей кодируется напрямую и добавляется в словарь. Типичные процедуры сопоставления с образцом и алгоритм замены показаны на левой блок-схеме рисунка выше. Хотя метод PM&S позволяет добиться превосходного сжатия, во время процесса могут быть допущены ошибки замены, если разрешение изображения низкое. [11]
JBIG2 улучшает PM&S за счет дополнительного программного сопоставления с образцом (SPM). Выполняется та же самая сегментация и поиск, но для каждого найденного совпадения кодер сохраняет не только соответствующую словарную статью, но и уточняющие данные, описывающие разницу между фактическим куском и куском словаря. Это значительно снижает количество ошибок замены. [10] [а] Поскольку для сопоставления словаря требуется, чтобы фактический символ и символ словаря были очень похожи, SPM добавляет лишь небольшой объем данных. [11]
Полутона [ править ]
Полутоновые изображения можно сжимать двумя способами. Один из методов аналогичен алгоритму контекстно- арифметического кодирования , который адаптивно позиционирует пиксели шаблона для получения корреляций между соседними пикселями. Во втором методе растрирование выполняется для полутонового изображения, так что изображение снова преобразуется в оттенки серого. Преобразованные значения оттенков серого затем используются в качестве индексов крошечных растровых шаблонов фиксированного размера, содержащихся в словаре растровых изображений полутонов. Это позволяет декодеру успешно визуализировать полутоновое изображение, представляя индексированные словарные растровые шаблоны, соседствующие друг с другом. [10]
Энтропийное кодирование [ править ]
Все три типа областей, включая текстовые, полутоновые и общие области, могут использовать арифметическое кодирование или кодирование Хаффмана. JBIG2 специально использует кодер MQ , тот же энтропийный кодер, который используется в JPEG 2000 .
Патенты [ править ]
Патенты на JBIG2 принадлежат IBM и Mitsubishi. Бесплатные лицензии должны быть доступны по запросу. Патенты JBIG и JBIG2 — это не одно и то же. [13] [14] [15]
Ошибки подстановки символов в отсканированных документах [ править ]
Некоторые реализации JBIG2, использующие сжатие с потерями, потенциально могут изменять символы в документах, сканируемых в PDF. В отличие от некоторых других алгоритмов, в которых артефакты сжатия , такие как размытие. очевидны [16] или шум комаров JBIG2 , функция сопоставления с образцом находит похожие символы. Если сопоставление реализовано плохо, особенно при сканировании с низким разрешением, где символы менее четко определены, похожие символы могут быть ошибочно заменены. Но как заметил учёный-компьютерщик Дэвид Кризель, обнаруживший такую проблему, как описано ниже, «причина ошибки не в самом JBIG2» . [17]
произошли различные замены (включая замену «6» на «8») Сообщалось , что в 2013 году на многих Xerox Workcentre копировальных машинах и принтерах . Числа, напечатанные на отсканированных (но не оптических ) документах, потенциально могли быть изменены. Это было продемонстрировано на строительных чертежах и некоторых таблицах цифр; потенциальное влияние таких ошибок замены в таких документах, как медицинские рецепты . было кратко упомянуто [17] [18] [19] Немецкий ученый-компьютерщик Дэвид Кризель и компания Xerox исследовали это. [20] [21]
Впоследствии Xerox признала, что это был давний дефект программного обеспечения, и их первоначальные заявления о том, что только не заводские настройки могут привести к замене, были неверными. Не было предпринято никаких попыток отозвать или потребовать обновления затронутых устройств, что, как было признано, затронуло более десятка семейств продуктов. Однако в августе 2013 года программный патч , который при установке автоматически отключал сопоставление с образцом. был доступен [22] Ранее отсканированные документы по-прежнему потенциально содержат ошибки, что затрудняет подтверждение их правдивости. После публикации информации о возможных ошибках власти некоторых стран выступили с заявлениями о запрете использования JBIG2. [23]
В Германии Федеральное управление информационной безопасности выпустило техническое руководство, в котором говорится, что кодировка JBIG2 «НЕ ДОЛЖНА использоваться» для «замещающего сканирования». [24] В Швейцарии Координационное бюро постоянного архивирования электронных документов рекомендовало не использовать JBIG2 при создании PDF-документов. [25]
Эксплойт [ править ]
Уязвимость в реализации JBIG2 в формате Xpdf , повторно использованная в операционной системе телефона iOS от Apple , использовалась шпионским ПО Pegasus для реализации атаки с нулевым щелчком мыши на iPhone путем создания эмулируемой компьютерной архитектуры внутри потока JBIG2. Apple исправила эту уязвимость FORCEDENTRY в iOS 14.8 в сентябре 2021 года. [26]
См. также [ править ]
Ссылки [ править ]
- ^ Если данные уточнения используются без какого-либо порога различия, кодирование будет полностью без потерь . Это может быть менее эффективно, чем просто пометить всю страницу как «общую область» для прямого арифметического кодирования. [12]
- ^ Пресс-релиз Объединенной группы экспертов по двухуровневым изображениям. Архивировано 15 мая 2005 г. в Wayback Machine .
- ^ «Рекомендации МСЭ-Т T.88 – T.88: Информационные технологии. Кодированное представление изображения и аудиоинформации. Кодирование с потерями/без потерь двухуровневых изображений» . Проверено 19 февраля 2011 г.
- ^ «ISO/IEC 14492:2001 – Информационные технологии – Кодирование двухуровневых изображений с потерями/без потерь» . Проверено 19 февраля 2011 г.
- ^ JBIG2 - окончательный стандарт двухуровневого кодирования изображений , авторы Ф. Оно, В. Раклидж, Р. Арпс и К. Константинеску, в материалах Международной конференции по обработке изображений 2000 г. (Ванкувер, Британская Колумбия, Канада), том. 1, стр. 140–143.
- ^ Домашняя страница декодера jbig2dec .
- ^ Плагин декодера jbig2-imageio для Java ImageIO.
- ^ jbig2.js для PDF.js. Декодер
- ^ Декодер JBIG2Stream от Glyph & Cog LLC.
- ^ jbig2enc . Главная страница проекта кодировщика
- ^ Jump up to: Перейти обратно: а б с Ф. Оно, В. Раклидж, Р. Арпс и К. Константинеску, «JBIG2 - окончательный стандарт двухуровневого кодирования изображений», Обработка изображений, 2000. Труды. Международная конференция 2000 г., вып. 1, стр. 140–143 т. 1. С. 140–143. 1, 2000.
- ^ Jump up to: Перейти обратно: а б с П. Ховард, Ф. Коссентини, Б. Мартинс, С. Форчхаммер и В. Раклидж, «Новый стандарт JBIG2», Схемы и системы для видеотехнологий, IEEE Transactions on, vol. 8, нет. 7, стр. 838–848, ноябрь 1998 г.
- ^ Лэнгли, Адам. «jbig2enc: Документация» . Гитхаб .
Мы можем сделать это для каждого символа на странице, поэтому нам не нужно уточнять, когда мы отклоняемся всего на пару пикселей. Если мы будем уточнять всякий раз, когда мы [так в оригинале] выбираем неправильный пиксель, мы получим кодирование без потерь с использованием символов.
- ^ Какова патентная ситуация с JBIG? , заархивировано из оригинала 23 февраля 2012 г.
- ^ Что такое JBIG2? , заархивировано из оригинала 14 апреля 2012 г. , получено 7 апреля 2012 г.
- ^ Патенты JBIG2 , заархивировано из оригинала 29 сентября 2017 г. , получено 7 апреля 2012 г.
- ^ Чжоу Ван, Хамид Р. Шейх и Алан К. Бовик (2002). «Безреферентная оценка качества восприятия изображений, сжатых в формате JPEG». Материалы Международной конференции по обработке изображений 2002 г. (PDF) . Архивировано из оригинала (PDF) 2 ноября 2013 г.
- ^ Jump up to: Перейти обратно: а б «Сканеры/копировальные аппараты Xerox случайным образом меняют номера в отсканированных документах» . 02 августа 2013 г. Проверено 4 августа 2013 г.
- ^ «Растерянные ксероксы переписывают документы, выяснил эксперт» . Новости Би-би-си . 06.08.2013 . Проверено 6 августа 2013 г.
- ^ «Сканеры/копировальные машины Xerox случайным образом меняют числа» . Лента шрифтов . 5 августа 2013 г. Архивировано из оригинала 26 октября 2017 г.
- ^ «Xerox изучает результаты последних испытаний на искажение» . 11 августа 2013 г. Проверено 11 августа 2013 г.
- ^ Обновление по проблеме сканирования: грядут исправления программного обеспечения , Xerox (блог), 11 августа 2013 г., заархивировано из оригинала 04 ноября 2013 г. , получено 11 августа 2013 г.
- ^ Корпорация Xerox. Технический документ по сканированию и сжатию , 2013 г.
- ^ Кризель, Дэвид. «Видео и слайды моего выступления на Xerox в 31C3» . Д. Кризель Наука о данных, машинное обучение, барбекю, фотографии и муравьи в террариуме . Проверено 31 июля 2016 г.
Примечание. Видео дублировано на английском языке; если вы понимаете немецкий, возможно, вам будет легче следовать оригиналу: Дэвид Кризель: Не доверяйте скану, который вы не подделали сами. - ^ «Технические рекомендации BSI 03138: Запасное сканирование» (PDF) . Проверено 28 декабря 2021 г.
- ^ «Сжатие JBIG2» . Проверено 28 декабря 2021 г.
- ^ Пиво, Ян; Гросс, Самуэль (15 декабря 2021 г.). «Проект Ноль: глубокое погружение в эксплойт NSO iMessage с нулевым щелчком мыши: удаленное выполнение кода» . Google Проект Ноль . Проверено 16 декабря 2021 г.