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), или вектором длиной, равной количеству кадров в 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’
-
Время в сотых долях секунды (от 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–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/v8.1.0/Loading-and-Saving-Images.html