通常,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两倍精度取决于输入图像的类型。支持以下输入类:
类中的值的范围按比例缩放到区间[01]。
True值和false值分别赋值了一个值1和0。
值被强制转换为两倍。
返回相同的图像。
如果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。
I =
ind2gray (x, map)
¶将彩色索引图像转换为灰度强度图像。
图像x必须是索引图像,将使用颜色map进行转换地图如果地图不包含图像所需的足够颜色,中的像素x在转换为灰度之前,将范围外的颜色map到map中的最后一种颜色。
输出我与输入属于同一类x可能是其中之一uint8
, uint16
, single
或double
.
实现说明:有几种方法可以将颜色转换为灰度强度。此函数使用从中获得的亮度值rgb2灰色
哪个是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和一张彩色地图地图以解释与输入完全相同的图像。不执行抖动或其他形式的色彩量化。索引图像的输出类x可以是uint8、uint16或双色,以指定图像中唯一颜色的数量所需的为准(该数量将等于地图整齐
还支持多维索引图像(大小为MxNx3xK),均通过单个输入(rgb)或者它的三个颜色通道是单独的变量。
rgb =
ind2rgb (x, map)
¶[R, G, B] =
ind2rgb (x, map)
¶将索引图像转换为红色、绿色和蓝色分量。
图像x必须是索引图像,将使用颜色map进行转换地图如果地图不包含图像所需的足够颜色,中的像素x范围之外的颜色被map到map中的最后一种颜色。
输出可以是单个RGB图像(MxNx3矩阵,其中M和Nare是原始图像x尺寸,红色、绿色和蓝色通道中的每一个对应一个)。或者,可以返回大小为MxN的单独的红色、绿色和蓝色矩阵。
还支持多维索引图像(大小为MxNx1xK)。
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必须在中定义像素.
(mov)
¶(mov, n)
¶(mov, n, fps)
¶(h, …)
¶播放从帧结构体数组定义的电影。
电影压敏电阻必须是包含字段的帧的结构体数组cdata
和颜色图
,从返回getframe
作用默认情况下,所有图像在当前轴上以每秒12帧的速度显示一次。
可选参数n是一个标量或整数向量,用于控制电影的显示次数和显示的粒子帧:
播放电影n(1) 时间。
播放电影abs(n1.
时间交替地按向前和向后的顺序。
中帧的索引压敏电阻将显示。
如果第一个参数是图形或轴的句柄h,在该图或轴中显示的电影,而不是当前轴。
[x, map] =
frame2im (frame)
¶将电影帧转换为索引图像。
电影帧只是一个带有字段的结构体cdata
和颜色图
.
当框架是astruct数组。在这种情况下,x将分别是索引电影和RGB电影的MxNx1xK或MxNx3xK,每个帧连接在第4维度上。
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, …)
¶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]范围内,但这是不强制的。每个函数都必须决定对超出此范围的值执行什么操作。
以下函数返回预定义的颜色图,与使用颜色表
作用
(cmap)
¶(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。
详见: 颜色表.
以下三个函数修改而不是替换现有的颜色map。
map_out =
brighten (beta)
¶map_out =
brighten (map, beta)
¶map_out =
brighten (h, beta)
¶(…)
¶使颜色图变亮或变暗。
参数贝塔必须是介于-1和1之间的标量,其中负值会使颜色贴图变暗,正值会使颜色map变亮。
如果地图参数被省略,该函数被应用于currentcolormap。
第一个参数也可以是有效的图形句柄h,在这种情况下照亮
应用于与该句柄关联的颜色map。
如果没有指定输出,则将结果写入currentcolormap。
()
¶(t)
¶(t, inc)
¶("inf")
¶循环颜色图t秒,颜色增量为股份有限公司.
这两个参数都是可选的。默认循环时间为5秒,默认增量为2。如果参数inf
然后循环,直到正文结束字符按下。
旋转时,原始颜色1变为颜色2,颜色2变为颜色3等。允许正增量或负增量,并且的高值为股份有限公司将导致更快地循环通过颜色图。
详见: 颜色表.
()
¶(color)
¶("none")
¶(hfig)
¶(hfig, color)
¶(hfig, "none")
¶反转当前配色方案中的颜色。
根属性也会反转,以便所有后续打印都将使用新的配色方案。
如果可选参数颜色则背景颜色设置为颜色而不是倒置。颜色可以是呈现八种已知颜色之一的字符串或RGB三元组。specialstring参数没有一个
将打印恢复为出厂默认颜色。
如果第一个参数hfig是图形句柄或图形句柄列表,然后对这些图形进行操作,而不是对当前图形进行操作gcf
。除非0在图形列表中,否则根属性不会更改。
编程说明:白色bg
通过更改指定图形的子对象的颜色属性进行操作。只有具有单一颜色的对象才会受到影响。例如,具有单个FaceColor
将被更改,但有阴影的补丁(interp
)不会被修改。对于反转,新颜色只是RGB空间中的反转:cnew1.R1.G1.B]
。当指定了颜色时,轴和图形将设置为新颜色,然后调整子对象的颜色,使其与新背景具有一定的对比度(可见性)。
以下函数可用于操作颜色贴图。
[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类。
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号