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

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

Этот пример читает данные изображения, сохраненные в файле в формате JPEG в MATLAB workspace как массив 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 — смотрите Данные изображения Чтения и Метаданные из файлов TIFF для получения дополнительной информации.

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

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

Этот пример возвращает информацию о файле в формате формата графических данных JPEG (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 может содержать один или несколько subIFDs, которые также могут содержать данные изображения и метаданные. Эти подызображения обычно являются уменьшенным разрешением (миниатюра) версии данных изображения в IFD, содержащей subIFDs.

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

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

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

    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);
    

Смотрите также

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

Была ли эта тема полезной?