Чтобы импортировать данные в рабочую область MATLAB® от графического файла, используйте imread
функция. Используя эту функцию, можно импортировать данные из файлов во многих стандартных форматах файлов, включая теговый формат графических файлов (TIFF), Формат обмена графическими данными (GIF), формат графических данных JPEG (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
объект — видит Данные изображения Чтения и Метаданные из файлов 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 =...'}
В то время как можно использовать imread
чтобы импортировать данные изображения и метаданные из файлов TIFF, функция действительно имеет некоторые ограничения. Например, файл TIFF может содержать повторные изображения, и каждый отображает, может иметь несколько подызображений. В то время как можно считать все изображения из файла TIFF мультиизображений с imread
, вы не можете получить доступ к подызображениям. Используя Tiff
объект, можно считать данные изображения, метаданные и подызображения из файла TIFF. Когда вы создаете Tiff
объект, это представляет вашу связь с файлом TIFF и обеспечивает доступ ко многим стандартным программам в библиотеке LibTIFF.
Постепенный пример использования Tiff
методы объекта и свойства считать подызображения из файла TIFF следуют. Получать все возможное от Tiff
возразите, ознакомьте себя со спецификацией TIFF и техническими примечаниями. Смотрите LibTIFF - TIFF Library and Utilities
.
Файл TIFF может содержать один или несколько директории файла изображения (IFD). Каждая IFD содержит данные изображения и метаданные (теги), сопоставленные с изображением. Каждая IFD может содержать один или несколько subIFDs, которые также могут содержать данные изображения и метаданные. Эти подызображения обычно являются уменьшаемым разрешением (миниатюра) версии данных изображения в IFD, содержащей subIFDs.
Чтобы считать подызображения в IFD, необходимо получить местоположение подызображения от SubIFD
тег. SubIFD
тег содержит массив байтовых смещений, которые указывают на подызображения. Затем можно передать адрес subIFD к setSubDirectory
метод, чтобы сделать subIFD текущей IFD. Большая часть Tiff
методы объекта работают с текущей IFD.
Откройте файл TIFF, который содержит изображения и подызображения с помощью Tiff
конструктор Object. Этот пример использует файл TIFF, созданный в Создании Подкаталогов файла TIFF, который содержит одну директорию IFD с двумя subIFDs. Tiff
конструктор открывает файл TIFF и делает первый subIFD в файле текущей IFD:
t = Tiff('my_subimage_file.tif','r');
Получите местоположения subIFDs, сопоставленного с текущей IFD. Используйте getTag
метод, чтобы получить значение SubIFD
тег. Этот метод возвращает массив байтовых смещений, которые задают местоположение subIFDs:
offsets = getTag(t,'SubIFD')
Перейдите к первому подызображению. Во-первых, установите currentIFD на директорию, содержащую первое подызображение:
dirNum = 1; setDirectory(t,dirNum);
Затем переместитесь к первому subIFD по использованию setSubDirectory
метод. Задайте байтовое смещение subIFD в качестве аргумента. Этот вызов делает subIFD текущей IFD:
setSubDirectory(t,offsets(1));
Считайте данные изображения из текущей IFD (первый subIFD) тот же способ, которым вы читаете любую другую IFD в файле:
subimage_one = read(t);
Просмотрите первое подызображение:
imagesc(subimage_one)
Перейдите к второму подызображению. Во-первых, сбросьте currentIFD к директории, содержащей второе подызображение:
setDirectory(t,dirNum);
Затем переместитесь к второму subIFD по использованию setSubDirectory
метод. Задайте байтовое смещение второго subIFD:
setSubDirectory(t,offsets(2));
Считайте данные изображения из текущей IFD (второй subIFD), как вы были бы с любой другой IFD в файле:
subimage_two = read(t);
Просмотрите второе подызображение:
imagesc(subimage_two)
Закройте Tiff
объект:
close(t);