Импорт данных в MATLAB® рабочая область из графического файла, используйте imread
функция. С помощью этой функции можно импортировать данные из файлов во многих стандартных форматах файлов, включая форматы Тегового формата графических файлов (TIFF), Graphics Interchange Format (GIF), Формата графических данных JPEG (JPEG) и Portable Network Graphics (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
функция для получения информации о ее содержимом. The 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 может содержать один или несколько subIFD, которые также могут содержать данные и метаданные. Эти подызображения обычно являются версиями данных с уменьшенным разрешением (миниатюрой) в IFD, содержащих подизображения IFD.
Чтобы считать подызображения в IFD, вы должны получить местоположение подызображения из SubIFD
тег. The SubIFD
тег содержит массив смещений байтов, которые указывают на подызображения. Затем вы можете передать адрес subIFD в setSubDirectory
метод, чтобы сделать subIFD текущим IFD. Самые Tiff
методы объекта работают на текущем IFD.
Откройте файл TIFF, который содержит изображения и подызображения, используя Tiff
конструктор объектов. Этот пример использует файл TIFF, созданный в разделе «Создание подкаталогов файлов TIFF», который содержит одну директорию IFD с двумя поддисками IFD. The Tiff
конструктор открывает файл TIFF и делает первый subIFD в файле текущим IFD:
t = Tiff('my_subimage_file.tif','r');
Извлечение местоположений подмножеств IFD, сопоставленных с текущим 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);
Затем перейдите ко второму подразделу IFD с помощью setSubDirectory
способ. Задайте смещение байта второго subIFD:
setSubDirectory(t,offsets(2));
Считайте данные изображения из текущего IFD (второго subIFD), как вы бы с любым другим IFD в файле:
subimage_two = read(t);
Просмотрите второй подызображение:
imagesc(subimage_two)
Закройте Tiff
объект:
close(t);