В его нативной форме изображение формата графических файлов не хранится как матрица MATLAB®, или даже обязательно как матрица. Большинство графических файлов начинается с заголовка, содержащего специфичные для формата информационные теги, и продолжает растровые данные, которые могут быть считаны как непрерывный поток. Поэтому вы не можете использовать стандартные команды ввода-вывода MATLAB load и save считать и записать изображение формата графических файлов.
Вызовите специальные функции MATLAB, чтобы считать и записать данные изображения из форматов графических файлов:
Чтобы считать изображение формата графических файлов используют imread.
Чтобы записать изображение формата графических файлов, используйте imwrite.
Чтобы получить информацию о природе изображения формата графических файлов, используйте imfinfo.
Эта таблица дает более ясное изображение, которого команды MATLAB должны использоваться с который типы изображения.
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 (истинный цвет), интенсивность (шкала полутонов), или индексированный