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-го измерения также должен совпадать, а размер третьего измерения должен быть единичным. По умолчанию изображение полностью непрозрачно.
- ‘Compression’
-
Используемое сжатие изображения. Может быть одним из следующих: "none" (по умолчанию), "bzip", "fax3", "fax4", "jpeg", "lzw", "rle" или "deflate". Обратите внимание, что не все типы сжатия доступны для всех форматов изображений, по умолчанию используется ваша библиотека Magick.
- ‘DelayTime’
-
Для форматов, которые поддерживают анимацию (например, GIF), задаёт время отображения кадра до перехода к следующему. Значение должно быть скалярным (применяется ко всем кадрам в img) или вектором длиной, равной количеству кадров в img. Значение в секундах, должно быть между 0 и 655,35, по умолчанию равно 0,5.
- ‘DisposalMethod’
-
Для форматов, которые поддерживают анимацию (например, GIF), управляет тем, что происходит с кадром перед рисованием следующего. Его значение может быть одной из следующих строк: "doNotSpecify" (по умолчанию); "leaveInPlace"; "restoreBG"; и "restorePrevious", или массивом ячеек этих строк длиной, равной количеству кадров в img.
- ‘LoopCount’
-
Для форматов, которые поддерживают анимацию (например, GIF), задаёт количество повторений последовательности. Значение Inf означает бесконечную циклическую последовательность (по умолчанию), значение 0 или 1 — воспроизведение последовательности только один раз, а значение 2 или выше — повторение заданное количество раз (повтор 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 (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–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/v7.2.0/Loading-and-Saving-Images.html