主要内容

8位和16位图像

索引图像

双精度(64位)浮点数是默认的MATLAB®数值数据的表示。但是,为了减少处理图像的内存需求,可以使用数值类将图像存储为8位或16位无符号整数uint8uint16,分别。一种图像,其数据矩阵有类uint8称为8位图像;一种图像,其数据矩阵有类uint16称为16位映像。

图像函数可以直接显示8位或16位图像,而无需将其转换为双倍精度。然而,图像当图像矩阵为时,对矩阵值的解释略有不同uint8uint16.具体的解释取决于图像类型。

如果Xuint8uint16时,其值在用作色图索引前偏移1。值0指向颜色映射的第一行,值1指向第二行,依此类推。的图像命令自动提供适当的偏移量,因此显示方法是否相同Xuint8,或uint16

图像(X);colormap(地图);

的色图索引偏移量uint8而且uint16Data旨在支持标准图形文件格式,该格式金宝app通常以索引形式存储具有256项颜色映射的图像数据。偏移量允许您使用内存效率更高的方式操作和显示此表单的图像uint8而且uint16数组。

由于偏移量,您必须添加1来转换auint8uint16索引图像到.例如:

X64 = double(X8) + 1;或X64 = double(X16) + 1;

相反,减去1来转换a索引图像到uint8uint16

X8 = uint8(X64 - 1);或X16 = uint16(X64 - 1);

强度图像

的范围图像数组通常为[0,1],但8位强度图像的范围通常为[0,255],16位强度图像的范围通常为[0,65535]。使用以下命令显示带有灰度色图的8位强度图像:

显示亮度图像(I, 255年[0]);colormap(灰色);

将强度图像从uint16,首先乘以65535:

I16 = uint16(round(I64*65535));

相反,在转换a后除以65535uint16强度图像到

I64 = double(I16)/65535;

RGB图像

8位RGB图像的颜色分量是范围为[0,255]的整数,而不是范围为[0,1]的浮点值。颜色分量为(255,255,255)的像素显示为白色。的图像命令正确显示RGB图像,无论它的类是uint8,或uint16

图像(RGB);

将RGB图像从uint8,先乘以255:

RGB8 = uint8(round(RGB64*255));

反之,转换a后除以255uint8RGB图像

RGB64 = double(RGB8)/255

将RGB图像从uint16,首先乘以65535:

RGB16 = uint16(round(RGB64*65535));

相反,在转换a后除以65535uint16RGB图像

RGB64 = double(RGB16)/65535;

数学运算支持uint8和uint16金宝app

使用下面的MATLAB函数uint8而且uint16数据,首先将数据转换为类型

例如,如果X是一个uint8图像,将数据转换为类型

fft(双(X))

在这些情况下,输出总是

总和函数返回与其输入相同类型的结果,但提供了使用双精度进行计算的选项。

MATLAB整数数学

看到整数类的算术运算有关数学函数如何处理非双精度数据类型的详细信息。

大多数图像处理工具箱™功能接受uint8而且uint16输入。如果你打算做复杂的图像处理印尼t8或uint16数据,请考虑在MATLAB计算环境中包含该工具箱。

其他8位和16位阵列支持金宝app

您可以对uint8而且uint16数组,包括:

  • 使用函数对数组进行重塑、重新排序和连接重塑交换,以及[]而且运营商

  • 保存和加载uint8而且uint16使用mat文件中的数组保存而且负载.(请记住,如果您正在加载或保存图形文件格式的图像,则必须使用这些命令imread而且imwrite相反)。

  • 中非零元素的索引位置uint8而且uint16数组的使用找到.但是,返回的数组总是属于类的

  • 关系运算符

将8位RGB图像转换为灰度

可以对整数数据执行算术运算,这使您可以转换图像类型,而无需首先转换图像数据的数值类。

这个例子将一个8位RGB图像读入一个MATLAB变量,并将其转换为灰度图像:

Rgb_img = imread('ngc6543 .jpg');加载图像图像(rgb_img)显示RGB图像轴形象;

以轴显示的彩色图像

请注意

这张照片是在太空望远镜科学研究所的支持下创建的,由大学天文研究协金宝app会运营,根据NASA的NAs5-26555合同,并得到AURA/STScI的许可。AURA/STScI制作的图像的数字再现是免费的。致谢:j·p·哈林顿和k·j·奥科夫斯基(马里兰大学),以及美国宇航局。

根据NTSC标准,通过组合RGB值来计算单色亮度,该标准适用于与眼睛对RGB颜色的灵敏度相关的系数:

I = .2989*rgb_img(:,:,1)…+ .5870 * rgb_img(:: 2)……+ .1140 * rgb_img (:,:, 3);

是一个具有最小值为零的整数值的强度图像:

min(I(:)) ans = 0

最大长度为255。

max(I(:)) ans = 255

要显示图像,请使用带有256个值的灰度色图。这避免了缩放数据到颜色映射的需要,如果使用不同大小的颜色映射,则需要缩放数据到颜色映射。使用显示亮度图像在颜色图不为每个数据值包含一个条目的情况下,使用函数。

现在使用灰色色图在一个新的图形中显示图像:

图;colormap(灰色(256));图像(I);轴形象;

使用灰度色图显示的彩色图像显示为灰色

相关信息

其他具有从暗到亮连续变化的颜色范围的颜色地图可以生成可用的图像。例如,试试colormap(夏天(256))经典的示波器外观。看到colormap更多选择。

照亮函数使您能够增加或减少颜色图中的颜色强度,以补偿计算机显示的差异,或增强图像中暗或亮区域的可见性(以牺牲范围的另一端为代价)。

图像类型和数字类摘要

这个表总结了数据矩阵元素是如何解释为像素颜色的,这取决于图像类型和数据类。

图像类型

双数据

uint8或uint16数据

索引

图像是一个——- - - - - -n范围为[1,p]。

Colormap是一个p-by-3范围为[0,1]的浮点值数组。

图像是一个——- - - - - -n范围为[0,p1]。

Colormap是一个p-by-3范围为[0,1]的浮点值数组。

强度

图像是一个——- - - - - -n浮点值数组,该数组通过线性缩放来生成颜色映射索引。典型的值范围是[0,1]。

Colormap是一个p由范围为[0,1]的浮点值组成的-by-3数组,通常为灰度。

图像是一个——- - - - - -n线性缩放以产生颜色映射索引的整数数组。典型的取值范围是[0,255]或[0,65535]。

Colormap是一个p由范围为[0,1]的浮点值组成的-by-3数组,通常为灰度。

RGB(真彩)

图像是一个——- - - - - -n-by-3范围为[0,1]的浮点值数组。

图像是一个——- - - - - -n-by-3范围为[0,255]或[0,65535]的整数数组。