Spec-Zone.ru › Octave 6

32.3 Представление изображений

В общем случае Octave поддерживает четыре разных типа изображений: изображения в оттенках серого, RGB-изображения, бинарные изображения и индексированные изображения. Изображение в оттенках серого представлено матрицей размером M×N, где каждый элемент соответствует интенсивности пикселя. RGB-изображение представлено массивом размером M×N×3, где каждый 3-вектор соответствует интенсивностям красного, зеленого и синего цветов каждого пикселя.

Фактическое значение значения пикселя в изображении в оттенках серого или RGB-изображении зависит от класса матрицы. Если матрица класса double, значения интенсивности пикселей находятся в диапазоне от 0 до 1, если она класса uint8, интенсивности находятся в диапазоне от 0 до 255, а если она класса uint16, интенсивности находятся в диапазоне от 0 до 65535.

Бинарное изображение представляет собой матрицу размером M×N класса logical. Пиксель в бинарном изображении является черным, если он false, и белым, если он true.

Индексированное изображение состоит из матрицы размером M×N целых чисел и цветовой карты размера C×3. Каждое целое число соответствует индексу в цветовой карте, а каждая строка в цветовой карте соответствует RGB-цвету. Цветовая карта должна быть класса double со значениями от 0 до 1.

Доступны следующие удобные функции для преобразования между форматами изображений.

: im2double (img)
: im2double (img, "indexed")

Преобразовать изображение в двойную точность.

Преобразование img в двойную точность зависит от типа входного изображения. Поддерживаются следующие классы входных данных:

‘uint8, uint16, and int16’

Диапазон значений из класса масштабируется до интервала [0 1].

‘logical’

Значения True и False присваиваются значениям 0 и 1 соответственно.

‘single’

Значения преобразуются в двойную точность.

‘double’

Возвращает то же изображение.

Если img — индексированное изображение, то второй аргумент должен быть строкой "indexed". В этом случае img должно быть либо плавающей точки класса, либо беззнакового целочисленного класса, и оно будет просто преобразовано в двойную точность. Если это целочисленный класс, применяется смещение +1.

См. также: double.

: img = gray2ind (I)
: img = gray2ind (I, n)
: img = gray2ind (BW)
: img = gray2ind (BW, n)
: [img, map] = gray2ind (…)

Преобразовать изображение в оттенках серого или бинарное изображение интенсивности в индексированное изображение.

Индексированное изображение будет состоять из n различных значений интенсивности. Если не указано, n по умолчанию равно 64 для изображений в оттенках серого или 2 для бинарных черно-белых изображений.

Выходной img имеет тип uint8, если n меньше или равно 256; в противном случае тип возвращаемого значения — uint16.

См. также: ind2gray, rgb2ind.

: I = ind2gray (x, map)

Преобразовать индексированное изображение в изображение интенсивности в оттенках серого.

Изображение x должно быть индексированным изображением, которое будет преобразовано с использованием цветовой карты map. Если map не содержит достаточно цветов для изображения, пиксели в x за пределами диапазона отображаются на последний цвет в карте перед преобразованием в оттенки серого.

Выходной I имеет тот же тип, что и входной x, и может быть одним из uint8, uint16, single, или double.

Примечание к реализации: Существует несколько способов преобразования цветов в интенсивности оттенков серого. Эта функция использует значение яркости, полученное из rgb2gray, которое равно I = 0.299*R + 0.587*G + 0.114*B. Другие возможности включают компонент значения из rgb2hsv или использование одного цветового канала из ind2rgb.

См. также: gray2ind, ind2rgb.

: [x, map] = rgb2ind (rgb)
: [x, map] = rgb2ind (R, G, B)

Преобразовать изображение в цветовом пространстве красного-зеленого-синего (RGB) в индексированное изображение.

Входное изображение rgb может быть задано как единая матрица размера MxNx3 или как три отдельных переменных R, G и B, три цветовых канала: красный, зеленый и синий.

Выход — индексированное изображение x и цветовая карта map для интерпретации изображения точно так же, как входное. Не выполняется никакое квантование цвета или другие формы.

Также поддерживаются многомерные индексированные изображения (размером MxNx3xK), как через один вход (rgb), так и через три цветовых канала как отдельные переменные.

См. также: ind2rgb, rgb2hsv, rgb2gray.

: rgb = ind2rgb (x, map)
: [R, G, B] = ind2rgb (x, map)

Преобразовать индексированное изображение в составляющие красного, зеленого и синего цветов.

Изображение x должно быть индексированным изображением, которое будет преобразовано с использованием цветовой карты map. Если map не содержит достаточно цветов для изображения, пиксели в x за пределами диапазона отображаются на последний цвет в карте.

Выход может быть одним RGB-изображением (MxNx3 матрица, где M и N — размеры исходного изображения x, по одному для каждого из каналов красного, зеленого и синего цветов). В качестве альтернативы могут быть возвращены отдельные матрицы красного, зеленого и синего цветов размером MxN.

Также поддерживаются многомерные индексированные изображения (размером MxNx1xK).

См. также: rgb2ind, ind2gray, hsv2rgb.

Octave также предоставляет инструменты для создания и работы со структурами кадров видео. Эти структуры инкапсулируют данные изображения (поле "cdata" ) вместе с соответствующей цветовой картой (поле "colormap").

: frame = getframe ()
: frame = getframe (hax)
: frame = getframe (hfig)
: frame = getframe (…, rect)

Захватить фигуру или ось координат как структуру кадра видео.

Без аргумента захватывает текущую ось координат, исключая метки осей, заголовок и метки осей x/y/z. Возвращаемая структура frame имеет поле cdata, которое содержит фактические данные изображения в виде NxMx3 (RGB) uint8 матрицы, и поле colormap, которое предоставляется для совместимости с MATLAB, но всегда пусто.

Если первый аргумент hax — это дескриптор оси координат, то захватывается эта ось, а не текущая ось, возвращаемая gca.

Если первый аргумент hfig — это дескриптор фигуры, то захватывается вся область холста соответствующей фигуры.

Наконец, если задан второй аргумент rect, он должен быть вектором из четырёх элементов ([левый нижний ширина высота]), определяющим область внутри фигуры, которая должна быть захвачена. Независимо от свойства фигуры "units", rect должен быть определён в пикселях.

См. также: im2frame, frame2im, movie.

: movie (mov)
: movie (mov, n)
: movie (mov, n, fps)
: movie (h, …)

Воспроизвести видео, определённое массивом структур кадров.

Видео mov должно быть массивом структур кадров с полями "cdata" и "colormap", как возвращает функция getframe. По умолчанию все изображения отображаются один раз со скоростью 12 кадров/с на текущей оси координат.

Необязательный аргумент n — это скаляр или вектор целых чисел, который управляет количеством раз, которое видео отображается, и какими именно кадрами отображается:

Первый элемент:
n(1) > 0

Воспроизвести видео n(1) раз.

n(1) < 0

Воспроизвести видео abs (n(1) раз, чередуя вперёд и назад.

Другие элементы (если есть):

Индексы кадров в mov, которые будут отображены.

Если первый аргумент — это дескриптор фигуры или оси h, то видео воспроизводится в этой фигуре или на этой оси координат вместо текущей оси координат.

См. также: getframe, im2frame, frame2im.

: [x, map] = frame2im (frame)

Преобразовать кадр видео в индексированное изображение.

Кадр видео — это просто структура с полями "cdata" и "colormap".

Поддержка N-мерных изображений или видео предоставляется, когда frame — массив структур. В таких случаях x будет MxNx1xK или MxNx3xK для индексированных и RGB-видео соответственно, каждый кадр конкатенирован вдоль 4-го измерения.

См. также: im2frame, getframe.

END_OF_DOCUMENT_MARKER
: im2frame (rgb)
: im2frame (x, map)

Преобразовать изображение в кадр фильма.

Кадр фильма — это просто структура с полями "cdata" и "colormap".

Поддержка N-мерных изображений предоставляется, когда каждый проекционный образ, матричные размеры MxN и MxNx3 для изображений RGB, объединяются по четвёртому измерению. В таких случаях возвращаемое значение — массив структур.

См. также: frame2im.

Функция colormap используется для изменения цветовой карты текущих осей или фигуры.

: cmap = colormap ()
: cmap = colormap (map)
: cmap = colormap ("default")
: cmap = colormap (map_name)
: cmap = colormap (hax, …)
: colormap map_name

Запрос или установка текущей цветовой карты.

Без входных аргументов, colormap возвращает текущую цветовую карту.

colormap (map) устанавливает текущую цветовую карту на map. Цветовая карта должна быть матрицей с n строками и 3 столбцами. Столбцы содержат интенсивности красного, зелёного и синего цветов соответственно. Все значения должны быть в диапазоне от 0 до 1 включительно. Возвращается новая цветовая карта.

colormap ("default") восстанавливает стандартную цветовую карту (карту viridis с 64 элементами). Возвращается стандартная цветовая карта.

Карту также можно указать строкой, map_name, которая является именем функции, возвращающей цветовую карту.

Если первый аргумент hax — это дескриптор осей, то цветовая карта для этих осей запрашивается или устанавливается.

Для удобства также можно использовать эту функцию в командной форме, colormap map_name.

Список встроенных цветовых карт:

Карта Описание
viridis по умолчанию
jet цветовая карта, проходящая через синий, голубой, зелёный, жёлтый, красный.
cubehelix цветовая карта, проходящая через чёрный, синий, зелёный, красный, белый с возрастающей интенсивностью.
hsv циклическая цветовая карта, проходящая по пространству Цветовой тон, Насыщенность, Яркость.
rainbow цветовая карта, проходящая через красный, жёлтый, синий, зелёный, фиолетовый.
————- ———————————————————————————————
hot цветовая карта, проходящая через чёрный, красный, оранжевый, жёлтый, белый.
cool цветовая карта, проходящая через голубой, пурпурный, пурпурно-красный.
spring цветовая карта, проходящая от пурпурно-красного до жёлтого.
summer цветовая карта, проходящая от зелёного до жёлтого.
autumn цветовая карта, проходящая через красный, оранжевый, жёлтый.
winter цветовая карта, проходящая от синего до зелёного.
————- ———————————————————————————————
gray цветовая карта, проходящая от чёрного к белому в оттенках серого.
bone цветовая карта, проходящая от чёрного через серо-голубой к белому.
copper цветовая карта, проходящая от чёрного к светло-медному тону.
pink цветовая карта, проходящая от чёрного через серо-розовый к белому.
ocean цветовая карта, проходящая от чёрного через тёмно-синий к белому.
————- ———————————————————————————————
colorcube равномерно распределённые цвета в RGB-цветовом пространстве.
flag циклическая 4-цветная карта с красным, белым, синим, чёрным.
lines циклическая цветовая карта с цветами из свойства осей "ColorOrder".
prism циклическая 6-цветная карта с красным, оранжевым, жёлтым, зелёным, синим, фиолетовым.
————- ———————————————————————————————
white цветовая карта сплошного белого (без цветов).

См. также: viridis, jet, cubehelix, hsv, rainbow, hot, cool, spring, summer, autumn, winter, gray, bone, copper, pink, ocean, colorcube, flag, lines, prism, white.

: iscolormap (cmap)

Возвращает true, если cmap — цветовая карта.

Цветовая карта — это вещественная матрица класса single или double с 3 столбцами. Каждая строка представляет собой один цвет. 3 столбца содержат интенсивности красного, зелёного и синего цветов соответственно.

Все значения в цветовой карте должны быть в диапазоне [0 1], но это не проверяется. Каждая функция должна самостоятельно определять, что делать с значениями вне этого диапазона.

См. также: colormap, rgbplot.

Следующие функции возвращают предопределённые цветовые карты, те же, что можно запросить по имени с помощью функции colormap.

: rgbplot (cmap)
: rgbplot (cmap, style)
: h = rgbplot (…)

Строит компоненты цветовой карты.

Доступны два различных стиля style для отображения cmap:

profile (по умолчанию)

Строит профиль RGB-линии цветовой карты для каждого канала (красный, зелёный и синий) с соответствующим цветом линий. Каждая линия представляет интенсивность RGB-компонента по всей цветовой карте.

composite

Отображает цветовую карту по оси X, чтобы были видны фактические цвета индекса, а не отдельные цветовые компоненты.

Необязательное возвращаемое значение h — это дескриптор графика, созданного в результате.

Запустите demo rgbplot, чтобы увидеть пример использования rgbplot, и каждого варианта стиля.

См. также: colormap.

: map = autumn ()
: map = autumn (n)

Создаёт цветовую карту.

Эта цветовая карта меняется от красного через оранжевый до жёлтого.

Аргумент n должен быть скаляром. Если не указан, используется длина текущей цветовой карты или 64.

См. также: colormap.

: map = bone ()
: map = bone (n)

Создаёт цветовую карту. Эта цветовая карта меняется от чёрного к белому с серо-голубыми оттенками.

Аргумент n должен быть скаляром. Если не указан, используется длина текущей цветовой карты или 64.

См. также: colormap.

: map = colorcube ()
: map = colorcube (n)

Создаёт цветовую карту.

Эта цветовая карта состоит из как можно большего числа равномерно распределённых цветов (не серого) в RGB-цветовом пространстве.

Если не удаётся получить идеальное число n равномерно распределённых цветов, то оставшиеся записи в цветовой карте представляют собой градиенты чистого красного, зелёного, синего и серого.

Аргумент n должен быть скаляром. Если не указан, используется длина текущей цветовой карты или 64.

См. также: colormap.

: map = cool ()
: map = cool (n)

Создаёт цветовую карту.

Цветовая карта меняется от голубого до пурпурно-красного.

Аргумент n должен быть скаляром. Если не указан, используется длина текущей цветовой карты или 64.

См. также: colormap.

: map = copper ()
: map = copper (n)

Создаёт цветовую карту.

Эта цветовая карта меняется от чёрного до светло-медно-оранжевого тона.

Аргумент n должен быть скаляром. Если не указан, используется длина текущей цветовой карты или 64.

См. также: colormap.

: map = cubehelix ()
: map = cubehelix (n)

Создаёт цветовую карту cubehelix.

Эта цветовая карта меняется от чёрного к белому, проходя через синие, зелёные и красные тона, сохраняя при этом монотонно возрастающее восприятие интенсивности. Это достигается путём обхода цветового куба от чёрного к белому по винтовой линии, отсюда и название cubehelix, учитывая при этом воспринимаемую яркость каждого канала в соответствии со спецификациями NTSC 1953 г.

rgbplot (cubehelix (256))

Аргумент n должен быть скаляром. Если не указан, используется длина текущей цветовой карты или 64.

Ссылка: Green, D. A., 2011, A colour scheme for the display of astronomical intensity images, Bulletin of the Astronomical Society of India, 39, 289.

См. также: colormap.

END_OF_DOCUMENT_MARKER
: map = flag ()
: map = flag (n)

Создать цветовую палитру. Эта палитра циклически переходит по цветам красный, белый, синий и чёрный при каждом изменении индекса.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = gray ()
: map = gray (n)

Создать серую цветовую палитру. Эта палитра изменяется от чёрного до белого с оттенками серого.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = hot ()
: map = hot (n)

Создать цветовую палитру. Эта палитра изменяется от чёрного через тёмно-красный, красный, оранжевый, жёлтый до белого.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: hsv (n)

Создать цветовую палитру. Эта палитра начинается с красного, меняется через жёлтый, зелёный, голубой, синий и пурпурный, прежде чем вернуться к красному.

Она полезна для отображения периодических функций. Палитра получается путём линейного изменения оттенка через все возможные значения при сохранении постоянной максимальной насыщенности и яркости. Эквивалентный код hsv2rgb ([(0:N-1)'/N, ones(N,2)]).

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = jet ()
: map = jet (n)

Создать цветовую палитру. Эта палитра изменяется от тёмно-синего через синий, голубой, зелёный, жёлтый, красный до тёмно-красного.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = lines ()
: map = lines (n)

Создать цветовую палитру. Эта палитра состоит из списка цветов в текущих осях "ColorOrder" свойства. По умолчанию - синий, оранжевый, жёлтый, пурпурный, зелёный, светло-синий и тёмно-красный.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = ocean ()
: map = ocean (n)

Создать цветовую палитру. Эта палитра изменяется от чёрного до белого с оттенками синего.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = pink ()
: map = pink (n)

Создать цветовую палитру. Эта палитра изменяется от чёрного до белого с оттенками серо-розового.

Эта палитра придаёт сепийный оттенок при использовании на градационных изображениях.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = prism ()
: map = prism (n)

Создать цветовую палитру. Эта палитра циклически переходит по цветам красный, оранжевый, жёлтый, зелёный, синий и фиолетовый при каждом изменении индекса.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = rainbow ()
: map = rainbow (n)

Создать цветовую палитру. Эта палитра изменяется от красного через оранжевый, жёлтый, зелёный, синий до фиолетового.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = spring ()
: map = spring (n)

Создать цветовую палитру. Эта палитра изменяется от пурпурного до жёлтого.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = summer ()
: map = summer (n)

Создать цветовую палитру. Эта палитра изменяется от зелёного до жёлтого.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = viridis ()
: map = viridis (n)

Создать цветовую палитру. Эта палитра изменяется от тёмно-фиолетово-синего через синий, зелёный до жёлтого.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = white ()
: map = white (n)

Создать цветовую палитру. Эта палитра полностью белая.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: map = winter ()
: map = winter (n)

Создать цветовую палитру. Эта палитра изменяется от синего к зелёному.

Аргумент n должен быть скаляром. Если не указано, используется длина текущей цветовой палитры или 64.

См. также: colormap.

: cmap = contrast (x)
: cmap = contrast (x, n)

Возвращает серую цветовую палитру, которая максимизирует контраст на изображении.

Возвращаемая цветовая палитра будет содержать n строк. Если n не определено, то используется размер текущей цветовой палитры.

См. также: colormap, brighten.

Следующие три функции изменяют существующую цветовую палитру, а не заменяют её.

: map_out = brighten (beta)
: map_out = brighten (map, beta)
: map_out = brighten (h, beta)
: brighten (…)

Увеличить или уменьшить яркость цветовой палитры.

Аргумент beta должен быть скаляром от -1 до 1, где отрицательное значение затемняет, а положительное - осветляет цветовую палитру.

Если аргумент map опущен, функция применяется к текущей цветовой палитре.

Первый аргумент также может быть допустимым графическим идентификатором h, в этом случае brighten применяется к цветовой палитре, связанной с этим идентификатором.

Если выход не указан, результат записывается в текущую цветовую палитру.

См. также: colormap, contrast.

: spinmap ()
: spinmap (t)
: spinmap (t, inc)
: spinmap ("inf")

Циклически менять цветовую палитру в течение t секунд с шагом inc.

Оба параметра необязательны. Время цикла по умолчанию 5 секунд, а шаг - 2. Если указан вариант "inf", то цикл будет продолжаться до нажатия Control-C.

При вращении цвет 1 становится цветом 2, цвет 2 становится цветом 3 и т.д. Разрешается положительный или отрицательный шаг, а большее значение inc ускоряет цикл по цветовой палитре.

См. также: colormap.

: whitebg ()
: whitebg (color)
: whitebg ("none")
: whitebg (hfig)
: whitebg (hfig, color)
: whitebg (hfig, "none")

Инвертирует цвета в текущей цветовой схеме.

Корневые свойства также инвертируются, так что все последующие графики будут использовать новую цветовую схему.

Если необязательный аргумент color присутствует, то цвет фона устанавливается в color вместо инвертирования. color может быть строкой, представляющей один из восьми известных цветов, или тройкой RGB. Специальный строковый аргумент "none" восстанавливает цвета графика до значений по умолчанию.

Если первый аргумент hfig представляет собой дескриптор фигуры или список дескрипторов фигур, то операции выполняются с этими фигурами, а не с текущей фигурой, возвращаемой gcf. Корневые свойства не будут изменены, если 0 не входит в список фигур.

Примечание для программистов: whitebg работает путем изменения свойств цвета дочерних элементов указанных фигур. Изменяются только объекты с одним цветом. Например, фигура с одним "FaceColor" будет изменена, но фигура с заливкой ("interp") не будет модифицирована. Для инвертирования новый цвет просто является инверсией в RGB-пространстве: cnew = [1-R 1-G 1-B]. Когда цвет задан, оси и фигура устанавливаются в новый цвет, а цвет дочерних объектов затем корректируется для обеспечения некоторого контраста (видимости) на фоне нового цвета.

См. также: reset, get, set.

Следующие функции могут быть использованы для управления цветовыми картами.

: [Y, newmap] = cmunique (X, map)
: [Y, newmap] = cmunique (RGB)
: [Y, newmap] = cmunique (I)

Преобразует входное изображение X в выходное индексированное изображение Y, которое использует максимально возможную минимальную цветовую карту newmap.

Когда входом является индексированное изображение (X с цветовой картой map), выходом является цветовая карта newmap, из которой были удалены все повторяющиеся строки. Выходное изображение Y — это исходное входное изображение с индексами, соответствующими новой, возможно меньшей, цветовой карте.

Когда вход — это RGB-изображение (матрица MxNx3), выходная цветовая карта будет содержать одну запись для каждого уникального цвета в исходном изображении. В худшем случае новая карта может содержать столько строк, сколько пикселей в исходном изображении.

Когда входом является изображение в оттенках серого I, выходная цветовая карта будет содержать одну запись для каждого уникального значения интенсивности в исходном изображении. В худшем случае новая карта может содержать столько строк, сколько пикселей в исходном изображении.

Подробности реализации:

newmap всегда является матрицей Mx3, даже если входное изображение является изображением в оттенках серого I (все три RGB-плана получают одно и то же значение).

Выходное изображение имеет тип uint8, если размер новой цветовой карты меньше или равен 256. В противном случае выходное изображение имеет тип double.

См. также: rgb2ind, gray2ind.

: [Y, newmap] = cmpermute (X, map)
: [Y, newmap] = cmpermute (X, map, index)

Переупорядочивает цвета в цветовой карте.

Когда вызывается с двумя аргументами, cmpermute случайным образом переупорядочивает цветовую карту map и возвращает новую цветовую карту newmap. Она также возвращает индексированное изображение Y, которое эквивалентно исходному входному изображению X при отображении с использованием newmap.

При вызове с необязательным третьим аргументом порядок цветов в новой цветовой карте определяется index.

Внимание: index не должен содержать повторяющихся элементов, иначе функция завершится с ошибкой.

© 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/Representing-Images.html

Spec-Zone.ru

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