Spec-Zone.ru › Octave 6

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, imfinfo, imformats.

: 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 означает, что последовательность воспроизводится только один раз (петля выполняется 0 раз), а значение 2 или выше означает, что последовательность повторяется указанное количество раз (повтор 2 раза означает, что последовательность воспроизводится 3 раза). Этот параметр игнорируется, когда в конце записи файла есть только одно изображение.

‘Quality’

Установите качество сжатия. Значение должно быть целым числом от 0 до 100, при больших значениях — более высокое качество изображения и меньшее сжатие. По умолчанию 75.

‘WriteMode’

Некоторые форматы файлов, такие как TIFF и GIF, могут хранить несколько изображений в одном файле. Этот параметр определяет, должен ли img быть добавлен в файл (если он существует) или для него должен быть создан новый файл (возможно, перезаписав существующий). Значение должно быть строкой "Overwrite" (по умолчанию) или "Append".

Несмотря на этот параметр, наиболее эффективным способом записи многостраничного изображения является передача 4-мерного img функции imwrite, той же матрицы, которая может ожидать функции imread с параметром "Index" установленным в "all".

См. также: imread, imfinfo, imformats.

: 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.

См. также: imread, imwrite, imshow, imformats.

По умолчанию функции ввода-вывода изображений 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.

См. также: imfinfo, imread, imwrite.

© 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/v6.4.0/Loading-and-Saving-Images.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API