ImageMagick: Как избавиться от сообщения TIFFWarnings/768 о «Неизвестном поле» при обработке TIFF?

#python #image #tiff

Вопрос:

Я обрабатываю ETOPO1.tif в тени холмов с обрезанной областью.

Я получаю изображение в формате tiff, похожее на :введите описание изображения здесь

Когда я обрабатываю его с помощью ImageMagick, он успешно запускается. Но я получаю следующий набор предупреждающих сообщений:

 convert Yug-shadedrelief.tmp.tif -fuzz 7% -fill "#FFFFFF" -opaque "#DDDDDD"  whited.jpg     # lighter (0.9M)

 convert.im6: Unknown field with tag 33550 (0x830e) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 33922 (0x8482) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 34735 (0x87af) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 34736 (0x87b0) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 34737 (0x87b1) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 convert.im6: Unknown field with tag 42113 (0xa481) encountered. `TIFFReadDirectory' @ warning/tiff.c/TIFFWarnings/768.
 

Мой .tif поврежден ?

Что я могу сделать, чтобы удалить эти сообщения ?

Комментарии:

1. Не поврежден — похоже, что любая программа, создавшая изображение, использовала некоторые пользовательские теги TIFF, которые ImageMagick не распознает. Я бы отказался от них с convert x.tiff ... 2> /dev/null помощью или, если вы находитесь в Windows convert -quiet x.tiff ...

2. Я использовал инструмент-скрипт ГИС gdal для создания входного файла этого вопроса.

Ответ №1:

В отличие от вашего первоначального заголовка (который я изменил), это не сообщение об ошибке, а просто предупреждение:

 TIFFReadDirectory: Warning, Unknown field with tag 33550 (0x830e) encountered. [...]
TIFFReadDirectory: Warning, Unknown field with tag 33922 (0x8482) encountered. [...]
TIFFReadDirectory: Warning, Unknown field with tag 34735 (0x87af) encountered. [...]
[...]
 

Перечисленные здесь теги являются частными тегами GeoTIFF. Смотрите здесь:

Чтобы просмотреть их (вероятно, не очень значимый для вас) контент, вы можете воспользоваться утилитой tiffdump (или tiffutil -dump ). Есть шанс, что exiftool он сможет показать вам значения этих тегов:

  exiftool -a -U -u -g1 Yug-Shadedrelief.tmp.tif
 

-u И -U должен извлечь также все неизвестные ( exiftool кому ) теги. Если у вас нет «мусора» в вашем выводе, exiftool вы смогли сделать орел и решку из того, что увидели, и вам тоже следует 🙂

Может быть, это вариант для вас, чтобы освобождатьудалить эти теги? exiftool также могу сделать это для вас…

Если вы хотите только убрать раздражающие сообщения из поля зрения, а не менять свои разногласия, то 2> /dev/null для ваших команд будет достаточно перенаправления stderr:

 convert                    
  Yug-shadedrelief.tmp.tif 
 -fuzz 7%                  
 -fill "#FFFFFF"           
 -opaque "#DDDDDD"         
  whited.jpg               
  2>/dev/null
 

Обновить

  Code |  Code |                     |
(dec) | (hex) | Tag Name            | Short Description
------ ------- --------------------- --------------------------------------------------------
33550 | 830E  | ModelPixelScaleTag  | Used in interchangeable GeoTIFF files
33922 | 8482  | ModelTiepointTag    | Originally part of Intergraph's GeoTIFF, 
34735 | 87af  | GeoKeyDirectoryTag  | Used in interchangeable GeoTIFF files
34736 | 87b0  | GeoDoubleParamsTag  | Used in interchangeable GeoTIFF files
34737 | 87b1  | GeoAsciiParamsTag   | Used in interchangeable GeoTIFF files
42113 | a481  | GDAL_NODATA         | Used by GDAL lib, contains ASCII encoded nodata or ...
 

Объяснения:

  • 33550: «…дополнительно предусмотрено для определения точных аффинных преобразований между растром и пространством модели….»
  • 33922: «…также известный как «Географический тег». Этот тег хранит растровые->пары точек привязки модели…»>
  • 34735: «…также известный как «Проекционный инфотег» и «Системный инфотег»»
  • 34736: «…используется для хранения всех ДВУЗНАЧНЫХ геокей, на которые ссылается тег GeoKeyDirectoryTag…»
  • 34737: «…используется для хранения всех геокей со значением ASCII, на которые ссылается тег GeoKeyDirectoryTag»
  • 42113: «…специальное значение пикселя для обозначения геопространственных областей, для которых информация недоступна…»

Комментарии:

1. Спасибо, Курт. Я также обновил содержание вопроса «предупреждением», я изучу вашу информацию завтра утром.

2. Я наткнулся на этот вопрос, так как у меня возникли проблемы с моей libtiff версией, у которой, похоже, возникают аналогичные проблемы. Для того , чтобы понять, что происходит, я попытался найти exiftool , tiffdump и tiffutil . К сожалению, я нашел только exiftool на веб-сайте SourceForge, но он не дает информации, которую я ищу. Кто-нибудь может сказать мне, где я могу скачать tiffdump и/или tiffutil откуда?

3. @Dominique: tiffdump является частью стандарта tiff или libtiff пакета. tiffutil является частью Mac OS X, код которой основан на tiffcp tiffinfo пакете и libtiff/tiff из него.

4. Спасибо за информацию, Курт, вы не знаете, существует ли соответствующий инструмент для операционной системы Windows?

5. @Dominique: tiff/libtiff доступны для Windows (AFAIR также как часть пакета gnuwin32/tiff в SourceForge), а вместе с ним tiffinfo и tiffdump .

Ответ №2:

Мой .tif поврежден?

Нет, это просто предупреждения о дополнительных метаданных (частные теги TIFF), которые Imagemagick не знает.

Что я могу сделать, чтобы удалить эти сообщения?

Добавьте опцию командной строки -quiet для подавления всех предупреждающих сообщений (как предложил Марк Сетчелл в комментарии).

Ответ №3:

Вы можете перекомпилировать libtiff с помощью :

  • добавление в tiff.h таких строк

    #define TIFFTAG_ModelPixelScale 33550

  • добавление в TIFFFieldInfo в tif_dirinfo.c

    static const TIFFFieldInfo;
    tiffFieldInfo[] = {...,
    { TIFFTAG_ModelPixelScale,1, 1,
    TIFF_LONG, FIELD_SUBFILETYPE, 1, 0, "ModelPixelScale" },
    ...
    };