exponenta event banner

Импорт изображений

Для импорта данных в рабочую область MATLAB ® из графического файла используйте imread функция. С помощью этой функции можно импортировать данные из файлов во многих стандартных форматах файлов, включая форматы TIFF, GIF, JPEG и PNG. Полный список поддерживаемых форматов см. в разделе imread справочная страница.

В этом примере данные изображения, сохраненные в файле в формате JPEG, считываются в рабочую область MATLAB в качестве массива. I:

I = imread('ngc6543a.jpg');

imread представляет изображение в рабочей области как многомерный массив класса uint8. Размеры массива зависят от формата данных. Например, imread использует три измерения для представления цветных изображений RGB:

whos I
  Name      Size                           Bytes  Class

  I       650x600x3                      1170000  uint8 array

Grand total is 1170000 elements using 1170000 bytes

Для получения дополнительной информации о чтении файлов TIFF используйте Tiff object - дополнительные сведения см. в разделе Чтение данных изображения и метаданных из файлов TIFF.

Получение информации о файлах изображений

При наличии файла в стандартном графическом формате используйте imfinfo для получения информации о его содержимом. imfinfo функция возвращает структуру, содержащую информацию о файле. Поля в структуре различаются в зависимости от формата файла, но imfinfo всегда возвращает некоторые основные сведения, включая имя файла, дату последнего изменения, размер и формат файла.

В этом примере возвращается информация о файле в формате JPEG:

info = imfinfo('ngc6543a.jpg')
info = 

           Filename: 'matlabroot\toolbox\matlab\demos\ngc6543a.jpg'
        FileModDate: '01-Oct-1996 16:19:44'
           FileSize: 27387
             Format: 'jpg'
      FormatVersion: ''
              Width: 600
             Height: 650
           BitDepth: 24
          ColorType: 'truecolor'
    FormatSignature: ''
    NumberOfSamples: 3
       CodingMethod: 'Huffman'
      CodingProcess: 'Sequential'
            Comment: {'CREATOR: XV Version 3.00b  Rev: 6/15/94  Quality =...'}

Чтение данных изображения и метаданных из файлов TIFF

Пока можно использовать imread для импорта данных изображения и метаданных из файлов TIFF функция имеет некоторые ограничения. Например, файл TIFF может содержать несколько изображений, а каждое изображение может иметь несколько подчиненных изображений. В то время как вы можете прочитать все изображения из нескольких изображений TIFF файл с imread, доступ к вложенным изображениям невозможен. Использование Tiff можно считывать данные изображения, метаданные и субизображения из файла TIFF. При построении Tiff объект представляет ваше соединение с файлом TIFF и предоставляет доступ ко многим подпрограммам в библиотеке LibTIFF.

Пошаговый пример использования Tiff методы и свойства объекта для чтения субизображений из файла TIFF. Чтобы получить максимум от Tiff объект, ознакомиться со спецификацией TIFF и техническими примечаниями. Посмотрите LibTIFF - TIFF Library and Utilities.

Чтение вложенных изображений из файла TIFF

Файл TIFF может содержать один или несколько каталогов файлов изображений (IFD). Каждый IFD содержит данные изображения и метаданные (теги), связанные с изображением. Каждый IFD может содержать один или несколько субIFD, которые также могут содержать данные изображения и метаданные. Эти субизображения обычно представляют собой версии с уменьшенным разрешением (миниатюры) данных изображения в IFD, содержащем subIFD.

Чтобы прочитать подчиненные изображения в IFD, необходимо получить расположение вложенного изображения из SubIFD тег. SubIFD тег содержит массив байтовых смещений, указывающих на подчиненные изображения. Затем можно передать адрес subIFD в setSubDirectory способ сделать subIFD текущим IFD. Большинство Tiff объектные методы работают на текущем ИФД.

  1. Откройте файл TIFF, содержащий изображения и подчиненные изображения, с помощью Tiff конструктор объекта. В этом примере используется файл TIFF, созданный в разделе Создание подкаталогов файлов TIFF, который содержит один каталог IFD с двумя подкаталогами. Tiff конструктор открывает файл TIFF и делает первый subIFD в файле текущим IFD:

    t = Tiff('my_subimage_file.tif','r');
  2. Извлеките местоположения субИFD, связанных с текущим ИИFD. Используйте getTag для получения значения SubIFD тег. Этот метод возвращает массив байтовых смещений, указывающих местоположение субIFD:

    offsets = getTag(t,'SubIFD')
  3. Перейдите к первому вложенному изображению. Сначала установите currentIFD в каталог, содержащий первое подчиненное изображение:

    dirNum = 1; 
    setDirectory(t,dirNum);
  4. Затем перейдите к первому subIFD с помощью setSubDirectory способ. Укажите смещение байта для параметра subIFD в качестве аргумента. Этот вызов делает subIFD текущим IFD:

    setSubDirectory(t,offsets(1));
    
  5. Считывайте данные изображения из текущего IFD (первого subIFD) так же, как вы считываете любой другой IFD в файле:

    subimage_one = read(t);
    
  6. Просмотр первого вложенного изображения:

    imagesc(subimage_one)
    
  7. Перейдите ко второму вложенному изображению. Сначала сбросьте currentIFD в каталог, содержащий второе подчиненное изображение:

    setDirectory(t,dirNum);
  8. Затем перейдите ко второму subIFD с помощью setSubDirectory способ. Укажите смещение байта второго subIFD:

    setSubDirectory(t,offsets(2));
    
  9. Считывайте данные изображения из текущего IFD (второго subIFD) так же, как и с любым другим IFD в файле:

    subimage_two = read(t);
    
  10. Просмотр второго субизображения:

    imagesc(subimage_two)
    
  11. Закрыть окно Tiff объект:

    close(t);
    

См. также

Внешние веб-сайты