假设我有Image
一个uint16
.
基本上每个像素的范围可以从0
到65535
。
如果我用imshow(Image)
Matlab 将渲染多少灰度级来显示此图像?
标准255
级别(因此将图像隐式转换为 uint8)?
(请注意我知道我可以更改颜色图,但我只想知道灰度级数)
假设我有Image
一个uint16
.
基本上每个像素的范围可以从0
到65535
。
如果我用imshow(Image)
Matlab 将渲染多少灰度级来显示此图像?
标准255
级别(因此将图像隐式转换为 uint8)?
(请注意我知道我可以更改颜色图,但我只想知道灰度级数)
颜色图的大小告诉您 Matlab 试图显示多少种颜色(或灰度级,在这种情况下)。
numGrayLevels = size(get(gcf,'Colormap'),1)
请注意,大多数显示器仅支持 8 位灰度。根据显示器的质量和校准,您看到的可能远少于此。
这可能是一个比这更复杂的答案。大多数计算机目前只能显示 256 种灰度。
MATLAB 不会做得比这更好。但是,使用伪着色方案,您可以让 MATLAB 代表每个像素的全部 16 位,在这种情况下,它将显示您在色标中选择的 65535 种以上的颜色。
我不认为 Matlab 强制执行任何限制。RGB 和 HSV 颜色值也可以加倍 - 为您提供“近乎无限”的颜色(以及灰色)。
绘图窗口是用 Java 完成的。那里的颜色可以由四个浮点数定义(请参阅Color) - 让您仍然拥有比硬件可以处理的更多颜色。
帮助说明:
渲染中使用的实际颜色取决于在给定特定输出设备可用的颜色空间的情况下找到最佳匹配。
所以最终它似乎取决于你的硬件。