В собственной форме изображение формата графического файла не хранится в виде матрицы MATLAB ® или даже обязательно в виде матрицы. Большинство графических файлов начинается с заголовка, содержащего специфичные для формата информационные теги, и продолжается с растровых данных, которые могут считываться как непрерывный поток. Поэтому нельзя использовать стандартные команды ввода/вывода MATLABload и 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 функция позволяет получать информацию о графических файлах в любом из перечисленных выше стандартных форматов. Полученная информация зависит от типа файла, но всегда включает, по крайней мере, следующее:
Имя файла, включая путь к папке, если файл не находится в текущей папке
Формат файла
Номер версии формата файла
Дата изменения файла
Размер файла в байтах
Ширина изображения в пикселях
Высота изображения в пикселях
Количество битов на пиксель
Тип изображения: RGB (truecolor), интенсивность (градации серого) или индексированная