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. Многостраничные изображения будут иметь дополнительное 4-е измерение.
Разрядность изображения определяет тип данных выходных данных:
"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: 3-е и 4-е измерения, резервируемые для цветового пространства и многостраничных изображений соответственно. Если это индексированное изображение, цветовая палитра map также должна быть указана.Если ext не задан, используется расширение файла filename для определения формата. Поддерживаемые форматы фактически зависят от параметров, установленных во время сборки Octave. Используйте
imformatsдля проверки поддержки различных форматов изображений.В зависимости от формата файла можно настроить запись изображений с помощью пар param, val. Поддерживаются следующие параметры:
- ‘Alpha’
-
Альфа-канал (прозрачность) изображения. Это должна быть матрица с тем же типом данных, и тем же количеством строк и столбцов, что и у img. В случае многостраничного изображения размер 4-го измерения также должен совпадать, а размер 3-го измерения должен быть единичным. По умолчанию изображение полностью непрозрачно.
- ‘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".Несмотря на этот параметр, наиболее эффективным методом записи многостраничного изображения является передача 4-х мерного img в
imwrite, такой же матрицы, которая ожидается при использовании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’
-
Время в 1/100 секунды (от 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’
-
Производитель записывающего оборудования. Это производитель цифрового фотоаппарата, сканера, видеодигитайзера или другого оборудования, которое создало изображение.
- ‘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–2023 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.2.0/Loading-and-Saving-Images.html