Как вы определяете конкретное сжатие tiff группы 3? - PullRequest
6 голосов
/ 19 февраля 2009

Компресс 3-й группы имеет 2 варианта (1-я группа 3 и 2-я группа 3). При сохранении изображения в формате Tiff в перечислении EncoderValue есть только один параметр для группы 3. Есть ли отдельный параметр, который управляет этим?

1 Ответ

2 голосов
/ 19 мая 2009

Да. Наиболее распространенное использование для сжатия группы 3 (точнее CCITT T.4) для изображения факса. В этом случае изображение по определению является двухуровневым (1-битным) изображением, и можно ожидать 1D сжатия. Поэтому, если вы не сделаете ничего, кроме установки значения сжатия (тег 259) на «2» (для двухуровневого изображения), то это будет считаться G3 1-мерным (Modified Huffman) кодированием. Единственные другие опции - это не сжатие (1) и биты пакета (32773). Все три типа кодирования должны поддерживаться базовыми считывателями , но по моему опыту многие читатели не поддерживают должным образом сжатие группы III, особенно G32D.

G31D гораздо проще реализовать, чем G32D, но не так эффективно. G31D сохраняет каждую строку сканирования отдельно, а G32D сохраняет различия между линиями сканирования. Это может иметь огромное значение в объеме данных, необходимых для определения изображения, такого как типичное факсимильное изображение, где большая часть изображения представляет собой чистый белый лист бумаги.

Если вы хотите использовать двумерное кодирование G3, вы должны быть более точными в тегах. Вы должны использовать кодировки CCITT для обозначения кодировки сжатия T4 (CCITT T.4 - это «настоящее» имя для стандарта кодирования «Group 3»). Чтобы указать это, установите тег 259 == 3. Затем установите параметры T4, чтобы указать двумерное кодирование. Тег параметров T4 (тег 292) немного сложнее по сравнению с простыми тегами, такими как тег стандартного сжатия (259). Это тип LONG, используемый как набор 32-битных флагов. Если вы оставите все биты равными нулю, то по умолчанию понимается одномерное кодирование (не отличающееся от этого тега).

Для двумерного кодирования вы должны установить нулевой бит (бит младшего разряда) в 1. (Если вы используете более одной полосы, каждая полоса, очевидно, должна начинаться с 1-мерной строки сканирования.) Бит 1 установлен на 1, только если используется несжатый режим. Бит 2 используется, чтобы указать, использовали ли вы биты заполнения для сохранения EOL на границе байта (установите в 1, если истина). Все остальные биты по умолчанию равны нулю.

Имейте в виду, что большинство читателей не понимают всех параметров, доступных в TIFF. Это чрезвычайно мощный формат, но его сложно реализовать за пределами базовой линии TIFF (которая, вероятно, обрабатывает более 90% изображений TIFF). Если вы используете Group 3 2 Dimensional Coding, вы можете ожидать, что большинство считывателей, которые специально поддерживают факсимильные изображения и медицинские изображения *, будут правильно декодировать изображение. Я бы не стал надеяться на гораздо большее.

( TIFF не является стандартным медицинским форматом изображений, но, по моему опыту, читатели, поддерживающие как изображения DICOM, так и изображения TIFF, обычно поддерживают полный стандарт TIFF )

Этот ответ длиннее, чем я предполагал. Если я до сих пор не ответил на ваш вопрос, уточните в своем исходном сообщении, и я отредактирую свой ответ.

РЕДАКТИРОВАТЬ: Вы можете найти стандарт TIFF и другие вспомогательные документы на сайте разработчика Adobe. http://partners.adobe.com/public/developer/tiff/index.html

...