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