通常,Octave支持四种不同类型的图像,灰度图像、RGB图像、二进制图像和索引图像。灰度图像用M乘N矩阵表示,其中每个元素对应于像素的强度。RGB图像用M×N×3数组表示,其中每个3向量对应于每个像素的红色、绿色和蓝色强度。
灰度或RGBimage中像素值的实际含义取决于矩阵的类别。如果矩阵属于类别double像素强度介于0和1之间(如果属于类)uint8强度在0到255之间,如果属于类uint16强度在0和65535之间。
二值图像是类的M乘N矩阵logical。二进制图像中的像素是黑色的,如果它是false如果是白色的true.
索引图像从M乘N的整数矩阵和C乘3的彩色图组成。每个整数对应于颜色map中的一个索引,颜色map中每一行对应于RGB颜色。颜色图必须是一流的double值介于0和1之间。
以下方便函数可用于图像格式之间的转换。
True值和false值分别赋值了一个值1和0。
值被强制转换为两倍。
返回相同的图像。
如果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。
I = ind2gray (x, map) ¶将彩色索引图像转换为灰度强度图像。
图像x必须是索引图像,将使用颜色map进行转换map如果map不包含图像所需的足够颜色,中的像素x在转换为灰度之前,将范围外的颜色map到map中的最后一种颜色。
输出I与输入属于同一类x可能是其中之一uint8, uint16, single或double.
实现说明:有几种方法可以将颜色转换为灰度强度。此函数使用从中获得的亮度值rgb2gray哪个是I = 0.299*R + 0.587*G + 0.114*B。其他可能性包括来自rgb2hsv或使用单一颜色通道ind2rgb.
[x, map] = rgb2ind (rgb) ¶[x, map] = rgb2ind (R, G, B) ¶将红-绿-蓝(RGB)颜色空间中的图像转换为索引图像。
输入图像rgb可以指定为大小为MxNx3的单个矩阵或者指定为三个单独的变量,R, G和B,它的三种颜色通道,红色、绿色和蓝色。
它输出索引图像x和一张彩色地图map以解释与输入完全相同的图像。不执行抖动或其他形式的色彩量化。索引图像的输出类x可以是uint8、uint16或双色,以指定图像中唯一颜色的数量所需的为准(该数量将等于map整齐
还支持多维索引图像(大小为MxNx3xK),均通过单个输入(rgb)或者它的三个颜色通道是单独的变量。
rgb = ind2rgb (x, map) ¶[R, G, B] = ind2rgb (x, map) ¶将索引图像转换为红色、绿色和蓝色分量。
图像x必须是索引图像,将使用颜色map进行转换map如果map不包含图像所需的足够颜色,中的像素x范围之外的颜色被map到map中的最后一种颜色。
输出可以是单个RGB图像(MxNx3矩阵,其中M和Nare是原始图像x尺寸,红色、绿色和蓝色通道中的每一个对应一个)。或者,可以返回大小为MxN的单独的红色、绿色和蓝色矩阵。
还支持多维索引图像(大小为MxNx1xK)。
Octave还提供了制作和使用电影框架结构体的工具。这些结构体包了图像数据("cdata"字段)以及相应的颜色图("colormap"field
frame = getframe () ¶frame = getframe (hax) ¶frame = getframe (hfig) ¶frame = getframe (…, rect) ¶将图形或轴捕获为电影帧结构体。
在没有参数的情况下,捕获当前轴,不包括ticklabels、title和x/y/zlabels。返回的结构体frame有一个字段cdata,
包含NxMx3(RGB)uint8矩阵形式的,在物理显示器中的像素的实际图像数据,以及字段colormap提供给MATLAB兼容性,但总是空的。
如果第一个参数hax是一个轴句柄,然后捕获该轴,而不是从返回的当前轴gca.
如果第一个参数hfig是一个图形句柄,则捕获相应的整个图形画布。
最后,如果第二个参数rect假设它必须是定义要捕获的图形内部区域的四个元素向量([左下宽度高度])。不管数字如何"units"属性rect必须在中定义像素.
(mov) ¶(mov, n) ¶(mov, n, fps) ¶(h, …) ¶播放从帧结构体数组定义的电影。
电影mov必须是包含字段的帧的结构体数组"cdata"和"colormap",从返回getframe作用默认情况下,所有图像在当前轴上以每秒12帧的速度显示一次。
可选参数n是一个标量或整数向量,用于控制电影的显示次数和显示的粒子帧:
播放电影n(1) 时间。
播放电影abs (n(1)时间交替地按向前和向后的顺序。
中帧的索引mov将显示。
如果第一个参数是图形或轴的句柄h,在该图或轴中显示的电影,而不是当前轴。
[x, map] = frame2im (frame) ¶将电影帧转换为索引图像。
电影帧只是一个带有字段的结构体"cdata"和"colormap".
当frame是astruct数组。在这种情况下,x将分别是索引电影和RGB电影的MxNx1xK或MxNx3xK,每个帧连接在第4维度上。
frame = im2frame (rgb) ¶frame = im2frame (x, map) ¶将图像转换为电影帧。
电影帧只是一个带有字段的结构体"cdata"和"colormap".
当每个图像投影(RGB图像的矩阵大小MxN和MxNx3)连接到第四维度时,提供了对N维度图像的支持。在这种情况下,返回的值是structarray。
详见: frame2im.
这个colormap函数用于更改当前轴或图形的颜色图。
cmap = colormap () ¶cmap = colormap (map) ¶cmap = colormap ("default") ¶cmap = colormap (map_name) ¶cmap = colormap (hax, …) ¶map_name ¶查询或设置当前颜色map。
在没有输入自变量的情况下,colormap返回当前的颜色map。
colormap (map)将当前颜色贴图设置为map。颜色图应该是n按行3列矩阵。列分别包含红色、绿色和蓝色强度。所有条目必须介于0和1之间(包括0和1)。将返回新的颜色map。
彩色地图(恢复默认的颜色map("default")viridis具有64个条目的map)。将返回默认的颜色map。
map也可以从字符串指定,map_name,是返回颜色map的函数的名称。
如果第一个参数hax是一个轴句柄,则查询或设置这些轴的颜色map。
为了方便起见,也可以将此函数与命令形式一起使用,colormap map_name.
内置颜色map的列表为:
| 地图 | 描述 |
|---|---|
| viridis | default |
| turbo | colormap traversing blue, cyan, green, yellow, red; modern replacement for jet. |
| jet | colormap traversing blue, cyan, green, yellow, red. |
| cubehelix | colormap traversing black, blue, green, red, white with increasing intensity. |
| hsv | cyclic colormap traversing Hue, Saturation, Value space. |
| rainbow | colormap traversing red, yellow, blue, green, violet. |
| ————- | ——————————————————————————————— |
| hot | colormap traversing black, red, orange, yellow, white. |
| cool | colormap traversing cyan, purple, magenta. |
| spring | colormap traversing magenta to yellow. |
| summer | colormap traversing green to yellow. |
| autumn | colormap traversing red, orange, yellow. |
| winter | colormap traversing blue to green. |
| ————- | ——————————————————————————————— |
| gray | colormap traversing black to white in shades of gray. |
| bone | colormap traversing black, gray-blue, white. |
| copper | colormap traversing black to light copper. |
| pink | colormap traversing black, gray-pink, white. |
| ocean | colormap traversing black, dark-blue, white. |
| ————- | ——————————————————————————————— |
| colorcube | equally spaced colors in RGB color space. |
| flag | cyclic 4-color map of red, white, blue, black. |
| lines | 具有来自轴的颜色的循环颜色图"ColorOrder"属性 |
| prism | cyclic 6-color map of red, orange, yellow, green, blue, violet. |
| ————- | ——————————————————————————————— |
| white | all white colormap (no colors). |
详见: viridis, turbo, jet, cubehelix, hsv, rainbow, hot, cool, spring, summer, autumn, winter, gray, bone, copper, pink, ocean, colorcube, flag, lines, prism, white.
tf = iscolormap (cmap) ¶如果返回truecmap是一个颜色图。
色map是一个实矩阵,类为单或双,有3列。每一行代表一种颜色。这3列分别包含红色、绿色和蓝色强度。
颜色map中的所有值都应在[01]范围内,但这是不强制的。每个函数都必须决定对超出此范围的值执行什么操作。
以下函数返回预定义的颜色图,与使用colormap作用
(cmap) ¶(cmap, style) ¶h = rgbplot (…) ¶绘制颜色图的组件。
两种不同styles可用于显示cmap:
绘制每个通道(红色、绿色和蓝色)的颜色图的RGB线轮廓,绘制线颜色适当。每条线表示颜色贴图上RGB组件的强度。
在X轴上绘制颜色图,使实际索引颜色可见,而不是单个颜色组件可见。
可选返回值h是已创建打印的图形句柄。
跑demo rgbplot查看的示例rgbplot以及每个样式参数。
详见: colormap.
map = autumn () ¶map = autumn (n) ¶创建颜色map。此颜色图的范围从红色到橙色再到黄色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = bone () ¶map = bone (n) ¶创建颜色map。此颜色图从黑色到白色不等,色调为灰蓝色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = colorcube () ¶map = colorcube (n) ¶创建颜色map。此颜色map从RGB颜色空间中尽可能多的等间距颜色(而非灰度)组成。
如果没有一个完美的数字n规则间隔的颜色,则颜色图中剩下的条目是纯红色、绿色、蓝色和灰色的渐变。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = cool () ¶map = cool (n) ¶创建颜色map。颜色map从青色到品红色不等。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = copper () ¶map = copper (n) ¶创建颜色map。这种颜色map从黑色到浅铜色都有。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = cubehelix () ¶map = cubehelix (n) ¶map = cubehelix (n, start, rots, hue, gamma) ¶创建cubehelix颜色图。
这种颜色图从黑色到白色不等,穿过蓝色、绿色和红色,同时保持单调增加的强度感。这是通过螺旋线从黑色到白色遍历彩色立方体来实现的,因此得名cubehelix,同时根据1953年的NTSC规范考虑每个通道的感知正确性。
rgbplot (cubehelix (256))
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
参考文献:Green,D.A.,2011,A colour scheme for the display of astronomical intensity images,《印度天文学会公报》,39289。
详见: colormap.
map = flag () ¶map = flag (n) ¶创建颜色map。随着每个索引的变化,此颜色图在红、白、蓝和黑之间循环。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = gray () ¶map = gray (n) ¶创建灰色贴图。这张颜色图从黑色到白色,中间有灰色阴影。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = hot () ¶map = hot (n) ¶创建颜色map。此颜色图的范围从黑色到暗红色、红色、橙色、黄色,再到白色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = hsv () ¶map = hsv (n) ¶创建颜色map。此颜色map从红色开始,在黄色、绿色、青色、蓝色和品红色之间变化,然后返回红色。
它可用于显示周期函数。通过在保持恒定的最大饱和度和值的同时,通过所有可能的值线性地改变色调来获得该图。等效代码为hsv2rgb ([(0:N-1)'/N, ones(N,2)]).
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = jet () ¶map = jet (n) ¶创建颜色map。此颜色图的范围从深蓝色到蓝色、青色、绿色、黄色、红色,再到深红色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
编程说明:jet颜色map在感知上是不均匀的。试试viridis如果这很重要的话。为了一滴替代品jet具有更好的感知特征turbo颜色图。
map = lines () ¶map = lines (n) ¶创建颜色map。此颜色图从当前轴上的颜色列表组成"ColorOrder"属性默认值为蓝色、橙色、黄色、紫色、绿色、浅蓝色和暗红色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = ocean () ¶map = ocean (n) ¶创建颜色map。这张颜色图从黑色到白色,中间有蓝色阴影。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = pink () ¶map = pink (n) ¶创建颜色map。这张颜色图从黑色到白色不等,色调为灰粉色。
当在灰度图像上使用时,此颜色map会提供深褐色色调。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = prism () ¶map = prism (n) ¶创建颜色map。随着每个索引的变化,此颜色图在红色、橙色、黄色、绿色、蓝色和紫色之间循环。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = rainbow () ¶map = rainbow (n) ¶创建颜色map。此颜色图的范围从红色到橙色、黄色、绿色、蓝色到紫色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = spring () ¶map = spring (n) ¶创建颜色map。此颜色map从品红色到黄色不等。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = summer () ¶map = summer (n) ¶创建颜色map。这个颜色图从绿色到黄色不等。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = turbo () ¶map = turbo (n) ¶创建颜色map。这个颜色图的范围从深蓝色到绿色再到深红色;类似于过时的jet颜色map,但在感知上是一致的。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = viridis () ¶map = viridis (n) ¶创建颜色map。这个颜色图的范围从深紫蓝色到蓝色、绿色再到黄色。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = white () ¶map = white (n) ¶创建颜色map。这个颜色图完全是白色的。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
map = winter () ¶map = winter (n) ¶创建颜色map。这个颜色图从蓝色到绿色不等。
参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。
详见: colormap.
cmap = contrast (x) ¶cmap = contrast (x, n) ¶返回最大化图像对比度的灰色颜色图。
返回的颜色图将具有n排。如果n则使用当前颜色map的大小。
以下三个函数修改而不是替换现有的颜色map。
map_out = brighten (beta) ¶map_out = brighten (map, beta) ¶map_out = brighten (h, beta) ¶(…) ¶使颜色图变亮或变暗。
参数beta必须是介于-1和1之间的标量,其中负值会使颜色贴图变暗,正值会使颜色map变亮。
如果map参数被省略,该函数被应用于currentcolormap。
第一个参数也可以是有效的图形句柄h,在这种情况下brighten应用于与该句柄关联的颜色map。
如果没有指定输出,则将结果写入currentcolormap。
() ¶(t) ¶(t, inc) ¶("inf") ¶循环颜色图t秒,颜色增量为inc.
这两个参数都是可选的。默认循环时间为5秒,默认增量为2。如果参数"inf"然后循环,直到Control-C按下。
旋转时,原始颜色1变为颜色2,颜色2变为颜色3等。允许正增量或负增量,并且的高值为inc将导致更快地循环通过颜色图。
详见: colormap.
() ¶(color) ¶("none") ¶(hfig) ¶(hfig, color) ¶(hfig, "none") ¶反转当前配色方案中的颜色。
根属性也会反转,以便所有后续打印都将使用新的配色方案。
如果可选参数color则背景颜色设置为color而不是倒置。color可以是呈现八种已知颜色之一的字符串或RGB三元组。specialstring参数"none"将打印恢复为出厂默认颜色。
如果第一个参数hfig是图形句柄或图形句柄列表,然后对这些图形进行操作,而不是对当前图形进行操作gcf。除非0在图形列表中,否则根属性不会更改。
编程说明:whitebg通过更改指定图形的子对象的颜色属性进行操作。只有具有单一颜色的对象才会受到影响。例如,具有单个"FaceColor"将被更改,但有阴影的补丁("interp")不会被修改。对于反转,新颜色只是RGB空间中的反转:cnew = [1-R 1-G 1-B]。当指定了颜色时,轴和图形将设置为新颜色,然后调整子对象的颜色,使其与新背景具有一定的对比度(可见性)。
以下函数可用于操作颜色贴图。
[Y, newmap] = cmunique (X, map) ¶[Y, newmap] = cmunique (RGB) ¶[Y, newmap] = cmunique (I) ¶转换输入图像X到输出索引图像Y使用尽可能小的颜色图newmap.
当输入是索引图像时(X带彩色地图map)输出是一个颜色图newmap已经从中消除了任何重复的行。输出图像,Y,是调整了索引以匹配新的、可能更小的颜色图的原始输入图像。
当输入是RGB图像(MxNx3数组)时,outputcolormap将为原始图像中的每个唯一颜色包含一个条目。在最坏的情况下,新地图的行数可能与原始图像中的像素数一样多。
当输入是灰度图像时I,输出颜色图将为原始图像中的每个唯一强度值包含一个条目。在最坏的情况下,新map的行数可能与原始图像中的像素数一样多。
支持细节:
newmap始终是Mx3矩阵,即使输入图像是强度灰度图像I(所有三个RGB平面都符号为相同的值)。
如果新颜色map的大小小于或等于256,则输出图像属于uint8类。否则,输出图像属于double类。
[Y, newmap] = cmpermute (X, map) ¶[Y, newmap] = cmpermute (X, map, index) ¶重新排列颜色图中的颜色。
当仅用两个自变量调用时,cmpermute随机重新排列颜色图map并返回一个新的颜色mapnewmap。它还返回索引图像Y相当于原始输入图像X显示时使用newmap.
当使用可选的第三个参数调用时,newcolormap中的颜色顺序从定义index.
小心 index不应具有重复的元素,否则函数将失败。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2