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