Spec-Zone.ru › Octave 5

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, и 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 для точного интерпретирования изображения, как и входное изображение. Не выполняется дithering или другие формы квантования цвета. Выходной класс индексированного изображения x может быть uint8, uint16 или double, что необходимо для указания количества уникальных цветов в изображении (равного количеству строк в 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-фильмов соответственно, причём каждый кадр конкатенируется вдоль четвёртого измерения.

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

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 циклическая цветовая карта, переходящая через пространство Цветовой модели 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 (…)

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

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

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

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

composite

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

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

Запустите demo rgbplot для просмотра примера rgbplot и каждого варианта стиля.

См. также: colormap.

map = autumn ()
map = autumn (n)

Создание цветовой карты autumn. Эта цветовая карта варьируется от красного через оранжевый до желтого.

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

См. также: colormap.

map = bone ()
map = bone (n)

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

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

См. также: colormap.

map = colorcube ()
map = colorcube (n)

Создание цветовой карты colorcube. Эта цветовая карта состоит из максимально возможного числа равноотстоящих цветов (не серых) в цветовом пространстве RGB.

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

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

См. также: colormap.

map = cool ()
map = cool (n)

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

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

См. также: colormap.

map = copper ()
map = copper (n)

Создание цветовой карты copper. Эта цветовая карта изменяется от черного до светло-медно-коричневого тона.

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

См. также: colormap.

map = cubehelix ()
map = cubehelix (n)

Создание цветовой карты cubehelix.

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

rgbplot (cubehelix (256))

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

Ссылка: Green, D. A., 2011, "Схема цветов для отображения астрономических изображений с интенсивностью", Bulletin of the Astronomical Society of India, 39, 289.

См. также: colormap.

map = flag ()
map = flag (n)

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

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

См. также: colormap.

map = gray ()
map = gray (n)

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

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

См. также: colormap.

map = hot ()
map = hot (n)

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

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

См. также: colormap.

hsv (n)

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

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

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

См. также: colormap.

END_OF_DOCUMENT_MARKER
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/v5.2.0/Representing-Images.html

Spec-Zone.ru

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