Для импорта данных в рабочую область 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 =...'}
Пока можно использовать imread для импорта данных изображения и метаданных из файлов TIFF функция имеет некоторые ограничения. Например, файл TIFF может содержать несколько изображений, а каждое изображение может иметь несколько подчиненных изображений. В то время как вы можете прочитать все изображения из нескольких изображений TIFF файл с imread, доступ к вложенным изображениям невозможен. Использование Tiff можно считывать данные изображения, метаданные и субизображения из файла TIFF. При построении Tiff объект представляет ваше соединение с файлом TIFF и предоставляет доступ ко многим подпрограммам в библиотеке LibTIFF.
Пошаговый пример использования Tiff методы и свойства объекта для чтения субизображений из файла TIFF. Чтобы получить максимум от Tiff объект, ознакомиться со спецификацией TIFF и техническими примечаниями. Посмотрите LibTIFF - TIFF Library and Utilities.
Файл TIFF может содержать один или несколько каталогов файлов изображений (IFD). Каждый IFD содержит данные изображения и метаданные (теги), связанные с изображением. Каждый IFD может содержать один или несколько субIFD, которые также могут содержать данные изображения и метаданные. Эти субизображения обычно представляют собой версии с уменьшенным разрешением (миниатюры) данных изображения в IFD, содержащем subIFD.
Чтобы прочитать подчиненные изображения в IFD, необходимо получить расположение вложенного изображения из SubIFD тег. SubIFD тег содержит массив байтовых смещений, указывающих на подчиненные изображения. Затем можно передать адрес subIFD в setSubDirectory способ сделать subIFD текущим IFD. Большинство Tiff объектные методы работают на текущем ИФД.
Откройте файл TIFF, содержащий изображения и подчиненные изображения, с помощью Tiff конструктор объекта. В этом примере используется файл TIFF, созданный в разделе Создание подкаталогов файлов TIFF, который содержит один каталог IFD с двумя подкаталогами. Tiff конструктор открывает файл TIFF и делает первый subIFD в файле текущим IFD:
t = Tiff('my_subimage_file.tif','r');Извлеките местоположения субИFD, связанных с текущим ИИFD. Используйте getTag для получения значения SubIFD тег. Этот метод возвращает массив байтовых смещений, указывающих местоположение субIFD:
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);