32.1 Загрузка и сохранение изображений
Первый шаг в большинстве задач обработки изображений — загрузить изображение в Octave с помощью функции imread. Функция imwrite предназначена для записи изображений на диск.
В общих чертах код обработки изображений обычно имеет следующую структуру:
I = imread ("my_input_image.img");
J = process_my_image (I);
imwrite (J, "my_output_image.img"); -
:
[img, map, alpha] =imread(filename) -
:
[…] =imread(url) -
:
[…] =imread(…, ext) -
:
[…] =imread(…, idx) -
:
[…] =imread(…, param1, value1, …) -
Читает изображения в различных файловых форматах.
Считывает изображение в виде матрицы из файла filename или из сетевого ресурса url. Если не указано ни то ни другое, но задано ext, выполняется поиск файла с расширением ext.
Размер и класс результата зависят от формата изображения. Цветное изображение возвращается в виде матрицы MxNx3. Изображения в градациях серого и черно-белые изображения имеют размер MxN. Для многостраничных изображений добавляется четвертое измерение.
Класс результата определяется разрядностью изображения:
"uint8","uint16"или"single"для изображений в градациях серого и цветных изображений и"logical"для черно-белых изображений. Обратите внимание: для индексированных изображений всегда возвращаются индексы цветовой карты независимо от того, запрошен ли выходной аргумент map. Чтобы получить фактическое RGB-изображение, используйтеind2rgb. При чтении нескольких индексированных изображений аргумент map берется из первого изображения. В некоторых редких случаях это может быть неверно; для получения цветовой карты каждого изображения можно использоватьimfinfo.Дополнительные сведения о представлении изображений см. в руководстве Octave. (см. Представление изображений)
Некоторые форматы файлов, например TIFF и GIF, позволяют хранить несколько изображений в одном файле. idx может быть скаляром или вектором, задающим индексы считываемых изображений. По умолчанию Octave считывает только первую страницу.
В зависимости от формата файла чтение изображений можно настроить с помощью пар parameter, value. Поддерживаются следующие параметры:
-
"Frames"или"Index" -
Это альтернативный способ задания idx. При таком способе его значением также может быть строка
"all". "Info"-
Этот параметр предусмотрен для совместимости с MATLAB, но не оказывает никакого эффекта. Для максимальной производительности при чтении нескольких изображений из одного файла используйте параметр
"Index". "PixelRegion"-
Задает область изображения, которую нужно считать. Значением должен быть массив ячеек с двумя массивами по 3 элемента
{[rows], [cols]}. Элементы массивов задают начальный пиксель, шаг и конечный пиксель для считывания. Если значение шага не указано, оно по умолчанию равно 1. Например, следующие варианты эквивалентны:imread (filename, "PixelRegion", {[200 600], [300 700]}); imread (filename, "PixelRegion", {[200 1 600], [300 1 700]}); imread (filename)(200:600, 300:700);
-
-
: imwrite
(img, filename) -
: imwrite
(img, filename, ext) -
: imwrite
(img, map, filename) -
: imwrite
(…, param1, val1, …) -
Записывает изображения в различных файловых форматах.
Изображение img может быть бинарным, в градациях серого, RGB или многомерным. Размер и класс img должны соответствовать ожидаемым при чтении изображения с помощью
imread: третье измерение отводится под цветовое пространство, а четвертое — под страницы. Если изображение индексированное, необходимо также указать цветовую карту map.Если ext не задано, формат определяется по расширению файла filename. Фактически поддерживаемые форматы зависят от параметров, заданных при сборке Octave. Чтобы проверить поддержку различных форматов изображений, используйте
imformats.В зависимости от формата файла запись изображений можно настроить с помощью пар param, val. Поддерживаются следующие параметры:
- ‘Alpha’
-
Канал альфа (прозрачности) изображения. Это должна быть матрица того же класса и с тем же количеством строк и столбцов, что и img. Для многостраничного изображения размер четвертого измерения также должен совпадать, а третье измерение должно быть единичным. По умолчанию изображение полностью непрозрачно.
- ‘Compression’
-
Тип сжатия изображения. Может принимать одно из следующих значений: "none" (по умолчанию), "bzip", "fax3", "fax4", "jpeg", "lzw", "rle" или "deflate". Обратите внимание, что не все типы сжатия доступны для всех форматов изображений; в таком случае используется значение по умолчанию из библиотеки Magick.
- ‘DelayTime’
-
Для форматов, поддерживающих анимацию (например, GIF), задает время отображения кадра до перехода к следующему. Значением должен быть скаляр (применяемый ко всем кадрам в img) или вектор, длина которого равна числу кадров в im. Значение задается в секундах, должно находиться в диапазоне от 0 до 655.35; значение по умолчанию — 0.5.
- ‘DisposalMethod’
-
Для форматов, поддерживающих анимацию (например, GIF), задает, что происходит с кадром перед отрисовкой следующего. Значением может быть одна из следующих строк: "doNotSpecify" (по умолчанию), "leaveInPlace", "restoreBG" или "restorePrevious", либо массив ячеек с этими строками, длина которого равна числу кадров в img.
- ‘LoopCount’
-
Для форматов, поддерживающих анимацию (например, GIF), задает количество повторов последовательности. Значение Inf означает бесконечный цикл (по умолчанию); значение 0 или 1 означает, что последовательность будет воспроизведена только один раз (ноль повторов), а значение 2 или больше — соответствующее число повторов (при двух повторах полная последовательность воспроизводится 3 раза). Этот параметр игнорируется, если после записи файла в нем остается только одно изображение.
- ‘Quality’
-
Задает качество сжатия. Значение должно быть целым числом от 0 до 100: чем оно больше, тем выше визуальное качество и ниже степень сжатия. Значение по умолчанию — 75.
- ‘WriteMode’
-
Некоторые форматы файлов, например TIFF и GIF, позволяют хранить несколько изображений в одном файле. Этот параметр задает, следует ли добавлять img в файл (если он существует) или создать для него новый файл (возможно, перезаписав существующий). Значением должна быть строка
"Overwrite"(по умолчанию) или"Append".Независимо от этого параметра наиболее эффективный способ записи многостраничного изображения — передать в
imwriteчетырехмерный массив img, то есть ту же матрицу, которая ожидается при использованииimreadс параметром"Index", установленным в"all".
-
:
val =IMAGE_PATH() -
:
old_val =IMAGE_PATH(new_val) -
:
old_val =IMAGE_PATH(new_val, "local") -
Запрашивает или задает внутреннюю переменную, содержащую список каталогов, разделенных двоеточиями, в которых выполняется поиск файлов изображений.
При вызове из функции с параметром
"local"значение переменной изменяется локально для функции и всех вызываемых ею подпрограмм. При выходе из функции восстанавливается исходное значение переменной.См. также: EXEC_PATH, OCTAVE_HOME, OCTAVE_EXEC_HOME.
Можно получить сведения о файле изображения на диске, не считывая его в Octave. Для этого используется функция imfinfo, предоставляющая доступ для чтения ко многим параметрам, хранящимся в заголовке файла изображения.
-
:
info =imfinfo(filename) -
:
info =imfinfo(url) -
:
info =imfinfo(…, ext) -
Считывает сведения об изображении из файла.
imfinfoвозвращает структуру со сведениями об изображении, хранящемся в файле filename. Если файла filename нет, а параметр ext задан, выполняется поиск файла с именем filename и расширением ext, то есть файла filename.ext.Выходная структура info содержит следующие поля:
- ‘Filename’
-
Полное имя файла изображения.
- ‘FileModDate’
-
Дата последнего изменения файла.
- ‘FileSize’
-
Размер файла изображения на диске в байтах.
- ‘Format’
-
Формат изображения (например,
"jpeg"). - ‘Height’
-
Высота изображения в пикселях.
- ‘Width’
-
Ширина изображения в пикселях.
- ‘BitDepth’
-
Количество бит на канал на пиксель.
- ‘ColorType’
-
Тип изображения. Значением является
"grayscale","indexed","truecolor","CMYK"или"undefined". - ‘XResolution’
-
Разрешение изображения по оси X.
- ‘YResolution’
-
Разрешение изображения по оси Y.
- ‘ResolutionUnit’
-
Единицы измерения разрешения изображения. Значением является
"Inch","Centimeter"или"undefined". - ‘DelayTime’
-
Время в сотых долях секунды (от 0 до 65535), которое должно пройти до отображения следующего изображения в анимированной последовательности.
- ‘LoopCount’
-
Количество повторов анимации.
- ‘ByteOrder’
-
Порядок байтов для форматов, которые его поддерживают. Значением является
"little-endian","big-endian"или"undefined". - ‘Gamma’
-
Уровень гаммы изображения. Одно и то же цветное изображение может выглядеть по-разному на двух рабочих станциях из-за различий в мониторах.
- ‘Quality’
-
Уровень сжатия JPEG/MIFF/PNG. Значение — целое число в диапазоне [0 100].
- ‘DisposalMethod’
-
Применяется только к изображениям GIF; задает способ отображения последовательных кадров (то есть способ удаления предыдущего кадра) при создании анимации GIF. Значением может быть
"doNotSpecify","leaveInPlace","restoreBG"или"restorePrevious". Для файлов не в формате GIF значением является пустая строка. - ‘Chromaticities’
-
Значением является матрица 1x8 со значениями цветности x,y для белой, красной, зеленой и синей точек в указанном порядке.
- ‘Comment’
-
Комментарий к изображению.
- ‘Compression’
-
Тип сжатия. Значением может быть
"none","bzip","fax3","fax4","jpeg","lzw","rle","deflate","lzma","jpeg2000","jbig2","jbig2"или"undefined". - ‘Colormap’
-
Цветовая карта каждого изображения.
- ‘Orientation’
-
Ориентация изображения относительно строк и столбцов. Значение — целое число от 1 до 8, определенное в спецификации TIFF 6; поле предусмотрено для совместимости с MATLAB.
- ‘Software’
-
Название и версия программного обеспечения или прошивки камеры либо устройства ввода изображения, использованного для создания изображения.
- ‘Make’
-
Производитель записывающего оборудования. Это производитель цифровой камеры DSC, сканера, видеодигитайзера или другого оборудования, создавшего изображение.
- ‘Model’
-
Название модели или номер модели записывающего оборудования, указанные в поле
"Make". - ‘DateTime’
-
Дата и время создания изображения согласно стандарту Exif, то есть дата и время изменения файла.
- ‘ImageDescription’
-
Заголовок изображения согласно стандарту Exif.
- ‘Artist’
-
Имя владельца камеры, фотографа или создателя изображения.
- ‘Copyright’
-
Уведомление об авторских правах лица или организации, заявляющих права на изображение.
- ‘DigitalCamera’
-
Структура со сведениями, полученными из тега Exif.
- ‘GPSInfo’
Структура с геотегами, полученными из тега Exif.
По умолчанию функции Octave для ввода-вывода изображений (imread, imwrite и imfinfo) используют библиотеку GraphicsMagick. Благодаря этому поддерживается огромное количество форматов изображений, однако из-за их разнообразия в науке и часто закрытого характера невозможно создать библиотеку, способную считывать их все. Поэтому функция imformats хранит настраиваемый список доступных форматов, их расширений и функций, которые должны использовать функции ввода-вывода изображений. Это позволяет расширять возможности Octave по работе с изображениями, создавая функции для обработки определенных форматов файлов.
Хотя дополнительные функции можно вызывать напрямую, правильная настройка Octave с помощью imformats позволяет сохранять единообразный код, независимый от форматов файлов.
Важно отметить, что формат файла на самом деле не определяется его расширением и что GraphicsMagick способна считывать и записывать больше форматов файлов, чем перечислено в imformats. Это означает, что изображение может быть считано правильно даже при неверном или отсутствующем расширении, а отсутствие формата в списке не обязательно означает, что он не поддерживается.
-
: imformats
() -
:
formats =imformats(ext) -
:
formats =imformats(format) -
:
formats =imformats("add", format) -
:
formats =imformats("remove", ext) -
:
formats =imformats("update", ext, format) -
:
formats =imformats("factory") -
Управляет поддерживаемыми форматами изображений.
formats — структура со сведениями о каждом поддерживаемом формате файлов; для конкретного формата ext возвращается значение поля ext. Структура содержит следующие поля:
- ext
-
Название формата файла. Оно может совпадать с расширением файла, однако Octave автоматически определяет формат файла.
- description
-
Полное описание формата файла.
- isa
-
Дескриптор функции для проверки того, соответствует ли файл указанному формату.
- write
-
Дескриптор функции для записи файла в указанном формате.
- read
-
Дескриптор функции для открытия файлов указанного формата.
- info
-
Дескриптор функции для получения сведений об изображении в указанном формате.
- alpha
-
Логическое значение, указывающее, поддерживает ли формат альфа-канал (прозрачность или маску).
- multipage
Логическое значение, указывающее, поддерживает ли формат многостраничные файлы (несколько изображений в одном файле).
Способ управления форматами файлов в Octave можно изменить с помощью параметров
"add","remove"и"update", передав структуру format с необходимыми полями. Параметр"factory"сбрасывает конфигурацию до значений по умолчанию.Пакеты Octave могут использовать эту возможность для расширения возможностей Octave по чтению изображений с помощью команд PKG_ADD и PKG_DEL.
© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Loading-and-Saving-Images.html