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 будет читать только первую страницу.
В зависимости от формата файла, чтение изображений можно настроить с помощью пар параметр, значение. Поддерживаются следующие параметры:
-
"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)
- IMAGE_PATH (new_val, "local")
-
Запрос или установка внутренней переменной, которая определяет список директорий, разделённых двоеточием, в которых следует искать файлы изображений.
При вызове изнутри функции с параметром
"local", переменная изменяется локально для функции и любых вызываемых ею подпрограмм. Исходное значение переменной восстанавливается при выходе из функции.См. также: EXEC_PATH, OCTAVE_HOME, OCTAVE_EXEC_HOME.
Возможна получение информации о файле изображения на диске без его фактического чтения в Octave. Это делается с помощью функции imfinfo, которая предоставляет доступ для чтения к многим параметрам, хранящимся в заголовке файла изображения.
- info = imfinfo (имя_файла)
- info = imfinfo (url)
- info = imfinfo (…, расширение)
-
Чтение информации об изображении из файла.
imfinfoвозвращает структуру, содержащую информацию об изображении, хранящемся в файле имя_файла. Если файла имя_файла нет, и расширение было указано, будет поиск файла с именем имя_файла и расширением расширение, т.е. файла с именем имя_файла.расширение.Выходная структура info содержит следующие поля:
- ‘ИмяФайла’
-
Полное имя файла изображения.
- ‘ДатаИзменения’
-
Дата последнего изменения файла.
- ‘РазмерФайла’
-
Количество байтов изображения на диске.
- ‘Формат’
-
Формат изображения (например,
"jpeg"). - ‘Высота’
-
Высота изображения в пикселях.
- ‘Ширина’
-
Ширина изображения в пикселях.
- ‘ГлубинаБита’
-
Количество бит на канал на пиксель.
- ‘ТипЦвета’
-
Тип изображения. Значение равно
"grayscale","indexed","truecolor","CMYK", или"undefined". - ‘XРазрешение’
-
X-разрешение изображения.
- ‘YРазрешение’
-
Y-разрешение изображения.
- ‘ЕдиницыРазрешения’
-
Единицы разрешения изображения. Значение равно
"Inch","Centimeter", или"undefined". - ‘ВремяЗадержки’
-
Время в сотых долях секунды (от 0 до 65535), которое должно истечь перед отображением следующего изображения в анимационной последовательности.
- ‘КоличествоЦиклов’
-
Количество итераций для цикла анимации.
- ‘ПорядокБайтов’
-
Вариант порядка байтов для форматов, которые его поддерживают. Значение равно
"little-endian","big-endian", или"undefined". - ‘Гамма’
-
Уровень гаммы изображения. Одно и то же цветное изображение, отображаемое на двух разных рабочих станциях, может выглядеть по-разному из-за различий в мониторах отображения.
- ‘Качество’
-
Уровень сжатия JPEG/MIFF/PNG. Значение — целое число в диапазоне [0 100].
- ‘МетодУдаления’
-
Действительно только для GIF-изображений, управляет тем, как последующие кадры отрисовываются (как обрабатывается предыдущий кадр) при создании анимации GIF. Значения могут быть
"doNotSpecify","leaveInPlace","restoreBG", или"restorePrevious". Для файлов, не являющихся GIF, значение — пустая строка. - ‘ЦветовыеХарактеристики’
-
Значение — матрица 1x8 со значениями цветовых характеристик x, y для белых, красных, зелёных и синих точек в указанном порядке.
- ‘Комментарий’
-
Комментарий к изображению.
- ‘Сжатие’
-
Тип сжатия. Значение может быть
"none","bzip","fax3","fax4","jpeg","lzw","rle","deflate","lzma","jpeg2000","jbig2","jbig2", или"undefined". - ‘ЦветоваяТаблица’
-
Цветовая таблица для каждого изображения.
- ‘Ориентация’
-
Ориентация изображения относительно строк и столбцов. Значение — целое число от 1 до 8, как определено в спецификациях TIFF 6, и для совместимости с MATLAB.
- ‘ПрограммноеОбеспечение’
-
Имя и версия программного обеспечения или встроенного ПО камеры или устройства ввода изображений, используемого для генерации изображения.
- ‘Производитель’
-
Производитель записывающего оборудования. Это производитель цифрового фотоаппарата, сканера, видеодигитайзера или другого оборудования, которое генерировало изображение.
- ‘Модель’
-
Наименование модели или номер модели записывающего оборудования, как указано в поле
"Make". - ‘ДатаВремя’
-
Дата и время создания изображения, как определено стандартом Exif, т.е. это дата и время изменения файла.
- ‘ОписаниеИзображения’
-
Название изображения, как определено стандартом Exif.
- ‘Художник’
-
Имя владельца камеры, фотографа или создателя изображения.
- ‘АвторскиеПрава’
-
Уведомление об авторских правах лица или организации, заявляющих права на изображение.
- ‘ЦифроваяКамера’
-
Структура с информацией, полученной из тега Exif.
- ‘GPSИнформация’
Структура с информацией о геотегировании, полученной из тега Exif.
По умолчанию, функции ввода-вывода изображений Octave (imread, imwrite, и imfinfo ) используют библиотеку GraphicsMagick для своих операций. Это означает, что поддерживается большое количество форматов изображений, но учитывая большое количество форматов изображений в науке и его часто закрытый характер, невозможно создать библиотеку, способную читать все из них. Из-за этого функция imformats сохраняет настраиваемый список доступных форматов, их расширений и какие функции должны использовать функции ввода-вывода изображений. Это позволяет расширить возможности ввода-вывода изображений Octave, создав функции, направленные на работу со специфическими форматами файлов.
Хотя можно было бы вызывать дополнительные функции напрямую, правильная настройка Octave с помощью imformats позволяет сохранить согласованный код, абстрагированный от форматов файлов.
Важно отметить, что формат файла фактически не определяется его расширением, и GraphicsMagick может читать и записывать больше форматов файлов, чем те, которые перечислены в imformats. Это означает, что даже с неправильным или отсутствующим расширением изображение может быть прочитано правильно, а даже неперечисленные форматы не обязательно не поддерживаются.
- imformats ()
- formats = imformats (расширение)
- formats = imformats (формат)
- formats = imformats ("add", формат)
- formats = imformats ("remove", расширение)
- formats = imformats ("update", расширение, формат)
- formats = imformats ("factory")
-
Управление поддерживаемыми форматами изображений.
formats — это структура с информацией о каждом поддерживаемом формате файлов или от конкретного формата расширение, значение, отображаемое в поле расширение. Она содержит следующие поля:
- расширение
-
Название формата файла. Это может соответствовать расширению файла, но Octave автоматически определит формат файла.
- описание
-
Подробное описание формата файла.
- isa
-
Дескриптор функции для подтверждения, является ли файл указанного формата.
- write
-
Дескриптор функции для записи, если файл имеет указанный формат.
- read
-
Дескриптор функции для открытия файлов указанного формата.
- info
-
Дескриптор функции для получения информации об изображении указанного формата.
- alpha
-
Логическое значение, если формат поддерживает альфа-канал (прозрачность или полупрозрачность).
- multipage
Логическое значение, если формат поддерживает многостраничность (несколько изображений в одном файле).
Можно изменить способ управления форматами файлов Octave с помощью опций
"add","remove", и"update", и предоставления структуры формат с необходимыми полями. Опция"factory"сбрасывает настройки до значений по умолчанию.Это может быть использовано пакетами Octave для расширения возможностей чтения изображений Octave с помощью команд PKG_ADD и PKG_DEL.
© 1996–2022 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/v5.2.0/Loading-and-Saving-Images.html