32.3表示图像

通常,Octave支持四种不同类型的图像,灰度图像、RGB图像、二进制图像和索引图像。灰度图像用M乘N矩阵表示,其中每个元素对应于像素的强度。RGB图像用M×N×3数组表示,其中每个3向量对应于每个像素的红色、绿色和蓝色强度。

灰度或RGBimage中像素值的实际含义取决于矩阵的类别。如果矩阵属于类别double像素强度介于0和1之间(如果属于类)uint8强度在0到255之间,如果属于类uint16强度在0和65535之间。

二值图像是类的M乘N矩阵logical。二进制图像中的像素是黑色的,如果它是错误的如果是白色的真的.

索引图像从M乘N的整数矩阵和C乘3的彩色图组成。每个整数对应于颜色map中的一个索引,颜色map中每一行对应于RGB颜色。颜色图必须是一流的double值介于0和1之间。

以下方便函数可用于图像格式之间的转换。

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

将图像转换为双倍精度。

的转换img两倍精度取决于输入图像的类型。支持以下输入类:

uint8、uint16和int16

类中的值的范围按比例缩放到区间[01]。

必然的

True值和false值分别赋值了一个值1和0。

single

值被强制转换为两倍。

double

返回相同的图像。

如果img是索引图像,则第二个参数应该是字符串索引。如果是,那么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进行转换地图如果地图不包含图像所需的足够颜色,中的像素x在转换为灰度之前,将范围外的颜色map到map中的最后一种颜色。

输出与输入属于同一类x可能是其中之一uint8, uint16, singledouble.

实现说明:有几种方法可以将颜色转换为灰度强度。此函数使用从中获得的亮度值rgb2灰色哪个是I=0.299*R+0.587*G+0.114*B。其他可能性包括来自rgb2hsv或使用单一颜色通道ind2rgb.

详见: 灰色2英寸, ind2rgb.

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

将红-绿-蓝(RGB)颜色空间中的图像转换为索引图像。

输入图像rgb可以指定为大小为MxNx3的单个矩阵或者指定为三个单独的变量,R, GB,它的三种颜色通道,红色、绿色和蓝色。

它输出索引图像x和一张彩色地图地图以解释与输入完全相同的图像。不执行抖动或其他形式的色彩量化。索引图像的输出类x可以是uint8、uint16或双色,以指定图像中唯一颜色的数量所需的为准(该数量将等于地图整齐

还支持多维索引图像(大小为MxNx3xK),均通过单个输入(rgb)或者它的三个颜色通道是单独的变量。

详见: ind2rgb, rgb2hsv, rgb2灰色.

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

将索引图像转换为红色、绿色和蓝色分量。

图像x必须是索引图像,将使用颜色map进行转换地图如果地图不包含图像所需的足够颜色,中的像素x范围之外的颜色被map到map中的最后一种颜色。

输出可以是单个RGB图像(MxNx3矩阵,其中M和Nare是原始图像x尺寸,红色、绿色和蓝色通道中的每一个对应一个)。或者,可以返回大小为MxN的单独的红色、绿色和蓝色矩阵。

还支持多维索引图像(大小为MxNx1xK)。

详见: rgb2ind, ind2gray, hsv2rgb.

Octave还提供了制作和使用电影框架结构体的工具。这些结构体包了图像数据(cdata字段)以及相应的颜色图(颜色图field

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

将图形或轴捕获为电影帧结构体。

在没有参数的情况下,捕获当前轴,不包括ticklabels、title和x/y/zlabels。返回的结构体框架有一个字段cdata,包含NxMx3(RGB)uint8矩阵形式的实际图像数据,以及字段颜色表提供给MATLAB兼容性,但总是空的。

如果第一个参数hax是一个轴句柄,然后捕获该轴,而不是从返回的当前轴gca.

如果第一个参数hfig是一个图形句柄,则捕获相应的整个图形画布。

最后,如果第二个参数rect假设它必须是定义要捕获的图形内部区域的四个元素向量([左下宽度高度])。不管数字如何单位属性rect必须在中定义像素.

详见: im2帧, frame2im, 电影.

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

播放从帧结构体数组定义的电影。

电影压敏电阻必须是包含字段的帧的结构体数组cdata颜色图,从返回getframe作用默认情况下,所有图像在当前轴上以每秒12帧的速度显示一次。

可选参数n是一个标量或整数向量,用于控制电影的显示次数和显示的粒子帧:

第一个元素:
n(1) > 0

播放电影n(1) 时间。

n(1) < 0

播放电影abs(n1.时间交替地按向前和向后的顺序。

其他元素(如有):

中帧的索引压敏电阻将显示。

如果第一个参数是图形或轴的句柄h,在该图或轴中显示的电影,而不是当前轴。

详见: getframe, im2帧, frame2im.

 
: [x, map] = frame2im (frame)

将电影帧转换为索引图像。

电影帧只是一个带有字段的结构体cdata颜色图.

框架是astruct数组。在这种情况下,x将分别是索引电影和RGB电影的MxNx1xK或MxNx3xK,每个帧连接在第4维度上。

详见: im2帧, getframe.

 
: frame = im2frame (rgb)
: frame = im2frame (x, map)

将图像转换为电影帧。

电影帧只是一个带有字段的结构体cdata颜色图.

当每个图像投影(RGB图像的矩阵大小MxN和MxNx3)连接到第四维度时,提供了对N维度图像的支持。在这种情况下,返回的值是structarray。

详见: frame2im.

这个颜色表函数用于更改当前轴或图形的颜色图。

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

查询或设置当前颜色map。

在没有输入自变量的情况下,颜色表返回当前的颜色map。

彩色地图(地图)将当前颜色贴图设置为地图。颜色图应该是n按行3列矩阵。列分别包含红色、绿色和蓝色强度。所有条目必须介于0和1之间(包括0和1)。将返回新的颜色map。

彩色地图(默认)恢复默认的颜色map(viridis具有64个条目的map)。将返回默认的颜色map。

map也可以从字符串指定,地图名称,是返回颜色map的函数的名称。

如果第一个参数hax是一个轴句柄,则查询或设置这些轴的颜色map。

为了方便起见,也可以将此函数与命令形式一起使用,彩色地图地图名称.

内置颜色map的列表为:

地图 描述
viridis 默认
涡轮 遍历蓝色、青色、绿色、黄色、红色的颜色图;喷气式飞机的现代替代品。
喷气式飞机 遍历蓝色、青色、绿色、黄色、红色的颜色图。
立方体 颜色图穿过黑色,蓝色,绿色,红色,白色,强度不断增加。
hsv 遍历色调、饱和度、值空间的循环色图。
穿越红、黄、蓝、绿、紫的彩色地图。
————- ———————————————————————————————
热的 遍历黑色、红色、橙色、黄色、白色的颜色图。
太酷了! 穿过青色、紫色、品红色的颜色图。
春天 从品红色到黄色的颜色图。
夏天 从绿色到黄色的颜色图。
秋天 穿越红、橙、黄的彩色地图。
冬天 从蓝色到绿色的颜色图。
————- ———————————————————————————————
灰色 在灰色阴影中从黑色到白色的颜色图。
骨头 穿越黑色、灰蓝色、白色的彩色地图。
从黑色到浅铜色的颜色图。
粉红色 穿越黑色、灰粉色、白色的颜色图。
大海 穿越黑色、深蓝色、白色的颜色图。
————- ———————————————————————————————
彩色立方体 RGB颜色空间中等距的颜色。
旗帜 红色、白色、蓝色、黑色的循环4色地图。
线 具有来自轴的颜色的循环颜色图ColorOrder属性
棱镜 红色、橙色、黄色、绿色、蓝色、紫色的环状6色图。
————- ———————————————————————————————
白色 全白色颜色图(无颜色)。

详见: viridis, 涡轮, 喷气式飞机, 立方体, hsv, , 热的, 太酷了!, 春天, 夏天, 秋天, 冬天, 灰色, 骨头, , 粉红色, 大海, 彩色立方体, 旗帜, 线, 棱镜, 白色.

 
: tf = iscolormap (cmap)

如果返回truecmap是一个颜色图。

色map是一个实矩阵,类为单或双,有3列。每一行代表一种颜色。这3列分别包含红色、绿色和蓝色强度。

颜色map中的所有值都应在[01]范围内,但这是不强制的。每个函数都必须决定对超出此范围的值执行什么操作。

详见: 颜色表, rgbplot.

以下函数返回预定义的颜色图,与使用颜色表作用

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

绘制颜色图的组件。

两种不同风格s可用于显示cmap:

配置文件(默认)

绘制每个通道(红色、绿色和蓝色)的颜色图的RGB线轮廓,绘制线颜色适当。每条线表示颜色贴图上RGB组件的强度。

混合成的

在X轴上绘制颜色图,使实际索引颜色可见,而不是单个颜色组件可见。

可选返回值h是已创建打印的图形句柄。

演示rgbplot查看的示例rgbplot以及每个样式参数。

详见: 颜色表.

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

创建颜色map。此颜色图的范围从红色到橙色再到黄色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。此颜色图从黑色到白色不等,色调为灰蓝色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。此颜色map从RGB颜色空间中尽可能多的等间距颜色(而非灰度)组成。

如果没有一个完美的数字n规则间隔的颜色,则颜色图中剩下的条目是纯红色、绿色、蓝色和灰色的渐变。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。颜色map从青色到品红色不等。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这种颜色map从黑色到浅铜色都有。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

 
: 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,天文强度图像显示的一种配色方案,《印度天文学会公报》,39289。

详见: 颜色表.

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

创建颜色map。随着每个索引的变化,此颜色图在红、白、蓝和黑之间循环。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建灰色贴图。这张颜色图从黑色到白色,中间有灰色阴影。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。此颜色图的范围从黑色到暗红色、红色、橙色、黄色,再到白色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

 
: map = hsv ()
: map = hsv (n)

创建颜色map。此颜色map从红色开始,在黄色、绿色、青色、蓝色和品红色之间变化,然后返回红色。

它可用于显示周期函数。通过在保持恒定的最大饱和度和值的同时,通过所有可能的值线性地改变色调来获得该图。等效代码为hsv2rgb([(0:N-1)'/N,个(N,2)]).

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。此颜色图的范围从深蓝色到蓝色、青色、绿色、黄色、红色,再到深红色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

编程说明:喷气式飞机颜色map在感知上是不均匀的。试试viridis如果这很重要的话。为了一滴替代品喷气式飞机具有更好的感知特征涡轮颜色图。

详见: 颜色表, 涡轮.

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

创建颜色map。此颜色图从当前轴上的颜色列表组成ColorOrder属性默认值为蓝色、橙色、黄色、紫色、绿色、浅蓝色和暗红色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这张颜色图从黑色到白色,中间有蓝色阴影。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这张颜色图从黑色到白色不等,色调为灰粉色。

当在灰度图像上使用时,此颜色map会提供深褐色色调。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。随着每个索引的变化,此颜色图在红色、橙色、黄色、绿色、蓝色和紫色之间循环。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。此颜色图的范围从红色到橙色、黄色、绿色、蓝色到紫色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。此颜色map从品红色到黄色不等。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这个颜色图从绿色到黄色不等。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

 
: map = turbo ()
: map = turbo (n)

创建颜色map。这个颜色图的范围从深蓝色到绿色再到深红色;类似于过时的喷气式飞机颜色map,但在感知上是一致的。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这个颜色图的范围从深紫蓝色到蓝色、绿色再到黄色。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这个颜色图完全是白色的。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

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

创建颜色map。这个颜色图从蓝色到绿色不等。

参数n必须是标量。如果未指定,则使用当前颜色map的长度,即64。

详见: 颜色表.

 
: 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)
: brighten (…)

使颜色图变亮或变暗。

参数贝塔必须是介于-1和1之间的标量,其中负值会使颜色贴图变暗,正值会使颜色map变亮。

如果地图参数被省略,该函数被应用于currentcolormap。

第一个参数也可以是有效的图形句柄h,在这种情况下照亮应用于与该句柄关联的颜色map。

如果没有指定输出,则将结果写入currentcolormap。

详见: 颜色表, 明显的差异.

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

循环颜色图t秒,颜色增量为股份有限公司.

这两个参数都是可选的。默认循环时间为5秒,默认增量为2。如果参数inf然后循环,直到正文结束字符按下。

旋转时,原始颜色1变为颜色2,颜色2变为颜色3等。允许正增量或负增量,并且的高值为股份有限公司将导致更快地循环通过颜色图。

详见: 颜色表.

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

反转当前配色方案中的颜色。

根属性也会反转,以便所有后续打印都将使用新的配色方案。

如果可选参数颜色则背景颜色设置为颜色而不是倒置。颜色可以是呈现八种已知颜色之一的字符串或RGB三元组。specialstring参数没有一个将打印恢复为出厂默认颜色。

如果第一个参数hfig是图形句柄或图形句柄列表,然后对这些图形进行操作,而不是对当前图形进行操作gcf。除非0在图形列表中,否则根属性不会更改。

编程说明:白色bg通过更改指定图形的子对象的颜色属性进行操作。只有具有单一颜色的对象才会受到影响。例如,具有单个FaceColor将被更改,但有阴影的补丁(interp)不会被修改。对于反转,新颜色只是RGB空间中的反转:cnew1.R1.G1.B]。当指定了颜色时,轴和图形将设置为新颜色,然后调整子对象的颜色,使其与新背景具有一定的对比度(可见性)。

详见: 重置, get, set.

以下函数可用于操作颜色贴图。

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

转换输入图像十、到输出索引图像Y使用尽可能小的颜色图新地图.

当输入是索引图像时(十、带彩色地图地图)输出是一个颜色图新地图已经从中消除了任何重复的行。输出图像,Y,是调整了索引以匹配新的、可能更小的颜色图的原始输入图像。

当输入是RGB图像(MxNx3数组)时,outputcolormap将为原始图像中的每个唯一颜色包含一个条目。在最坏的情况下,新地图的行数可能与原始图像中的像素数一样多。

当输入是灰度图像时,输出颜色图将为原始图像中的每个唯一强度值包含一个条目。在最坏的情况下,新map的行数可能与原始图像中的像素数一样多。

实施细节:

新地图始终是Mx3矩阵,即使输入图像是强度灰度图像(所有三个RGB平面都符号为相同的值)。

如果新颜色map的大小小于或等于256,则输出图像属于uint8类。否则,输出图像属于double类。

详见: rgb2ind, 灰色2英寸.

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

重新排列颜色图中的颜色。

当仅用两个自变量调用时,cmpermute随机重新排列颜色图地图并返回一个新的颜色map新地图。它还返回索引图像Y相当于原始输入图像十、显示时使用新地图.

当使用可选的第三个参数调用时,newcolormap中的颜色顺序从定义指数.

小心 指数不应具有重复的元素,否则函数将失败。


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号