Чтение, запись и запрос файлов изображений

Работа с форматами изображения

В его нативной форме изображение формата графических файлов не хранится как матрица MATLAB®, или даже обязательно как матрица. Большинство графических файлов начинается с заголовка, содержащего специфичные для формата информационные теги, и продолжает растровые данные, которые могут быть считаны как непрерывный поток. Поэтому вы не можете использовать стандартные команды ввода-вывода MATLAB load и save считать и записать изображение формата графических файлов.

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

  • Чтобы считать изображение формата графических файлов используют imread.

  • Чтобы записать изображение формата графических файлов, используйте imwrite.

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

Эта таблица дает более ясное изображение, которого команды MATLAB должны использоваться с который типы изображения.

Процедура

Функции, чтобы использовать

Загрузите или сохраните матрицу как MAT-файл.

load

save

Загрузите или сохраните образ формата графических файлов, e.g., BMP, TIFF.

imread

imwrite

Отобразите любое изображение, загруженное в рабочее пространство MATLAB.

image

imagesc

Утилиты

imfinfo

ind2rgb

Чтение графического изображения

imread функционируйте читает изображение из любого поддерживаемого файла графического изображения в любой из поддерживаемых битовых глубин. Большинство изображений, которые вы читаете, является 8-битным. Когда они читаются в память, они хранятся как класс uint8. Основным исключением к этому правилу является поддержка MATLAB 16-битных данных для PNG и изображений TIFF; если вы читаете 16-битный PNG или изображение TIFF, это хранится как класс uint16.

Примечание

Для индексируемых изображений, imread всегда читает палитру в массив класса double, даже при том, что сама матрица изображений может иметь класс uint8 или uint16.

Следующие команды читают изображение ngc6543a.jpg в переменную RGB рабочей области и затем отображает изображение с помощью image функция:

RGB = imread('ngc6543a.jpg');
image(RGB)

Можно записать (сохраняют) данные изображения с помощью imwrite функция. Операторы

load clown % An image that is included with MATLAB
imwrite(X,map,'clown.bmp')

создайте файл BMP, содержащий изображение клоуна.

Запись графического изображения

Когда вы сохраняете использование изображений imwrite, поведение по умолчанию должно автоматически уменьшать битовую глубину до uint8. Многие изображения, используемые в MATLAB, являются 8-битными, и большинство изображений формата графических файлов не требует данных с двойной точностью. Одно исключение из правила для сохранения данных изображения как uint8 тот PNG, и изображения TIFF могут быть сохранены как uint16. Поскольку эти два формата поддерживают 16-битные данные, можно заменить поведение значения по умолчанию MATLAB путем определения uint16 как тип данных для imwrite. Следующий пример показывает запись 16-битного файла PNG с помощью imwrite.

imwrite(I,'clown.png','BitDepth',16);

Подмножество графическое изображение (обрезка)

Иногда вы хотите работать только с фрагментом файла изображения, или вы хотите разбить его в подразделы. Задайте внутренние координаты прямоугольного подраздела, с которым вы хотите работать и сохранить его в файл из командной строки. Если вы не знаете координаты угловых точек подраздела, выбираете их в интерактивном режиме, когда следующий пример показывает:

% Read RGB image from graphics file. 
im = imread('street2.jpg'); 

% Display image with true aspect ratio
image(im); axis image

% Use ginput to select corner points of a rectangular
% region by pointing and clicking the mouse twice
p = ginput(2); 

% Get the x and y corner coordinates as integers
sp(1) = min(floor(p(1)), floor(p(2))); %xmin
sp(2) = min(floor(p(3)), floor(p(4))); %ymin
sp(3) = max(ceil(p(1)), ceil(p(2)));   %xmax
sp(4) = max(ceil(p(3)), ceil(p(4)));   %ymax

% Index into the original image to create the new image
MM = im(sp(2):sp(4), sp(1): sp(3),:);

% Display the subsetted image with appropriate axis ratio
figure; image(MM); axis image

% Write image to graphics file. 
imwrite(MM,'street2_cropped.tif') 

Если вы знаете, каковы угловые координаты изображений должны быть, можно вручную задать sp в предыдущем примере вместо того, чтобы использовать ginput.

Можно также отобразить “поле круглой резинки”, когда вы взаимодействуете с изображением к подмножеству оно. Смотрите пример кода для rbbox для деталей. Для получения дополнительной информации см. документацию для ginput и image функции.

Получение информации о графических файлах

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

  • Имя файла, включая путь к папке, если файл не находится в текущей папке

  • FileFormat

  • Номер версии формата файла

  • Дата модификации файла

  • Размер файла в байтах

  • Ширина изображения в пикселях

  • Высота изображения в пикселях

  • Количество бит на пиксель

  • Тип изображения: RGB (истинный цвет), интенсивность (шкала полутонов), или индексированный