【问题标题】:How many gray levels Matlab can show?Matlab可以显示多少个灰度级?
【发布时间】:2013-02-11 13:57:45
【问题描述】:

假设我有一个矩阵 Imageuint16

基本上每个像素的范围从065535

如果我用imshow(Image) 显示这个图像,Matlab 会渲染多少级灰度?

标准的255 级别(从而隐式地将图像转换为 uint8)?
(请注意,我知道我可以更改颜色图,但我只想知道灰度级数)

【问题讨论】:

  • 使用imtool,您可以轻松调整该范围。

标签: image matlab image-processing


【解决方案1】:

颜色图的大小告诉您 Matlab 试图显示多少颜色(或灰度级,在这种情况下)。

numGrayLevels = size(get(gcf,'Colormap'),1)

请注意,大多数显示器仅支持 8 位灰度。根据显示器的质量和校准,您看到的可能远少于此。

【讨论】:

  • 从这里你会看到,默认情况下,Matlab 中的颜色图只使用 64 种颜色而不是 256 种颜色(不要问我为什么在 2014 年仍然如此)。要获得更平滑的颜色渐变,您可以通过 map = colormap(gray(256)); 手动设置颜色图。
【解决方案2】:

这可能是一个比这更复杂的答案。大多数计算机目前只能显示 256 种灰度。

MATLAB 不会做得比这更好。但是,使用伪着色方案,您可以让 MATLAB 代表每个像素的全部 16 位,在这种情况下,它将显示超过您在色标中选择的 65535 种颜色。

【讨论】:

  • @link - 你在哪里读到的,你已经引起了我的兴趣 :-) 即使实际像素确实支持这一点,大多数驱动它们的图形芯片本身也只支持高达 24 位真彩色(只有 256 级灰度)。当我们看到 32 位时,通常(并且几乎总是)这意味着添加了一个 Alpha 通道,而不是更多颜色)。
  • @llnk - 抱歉,刚刚注意到问号 :-) 我非常确定它不支持大于 256 的灰度。到目前为止,我还没有看到任何证据。
  • 一些便宜的 LCD 屏幕甚至可能没有 8 位。除了占用更多内存并需要更多处理之外,指定更高深度的颜色图应该没有什么坏处。如果 Matlab 不妨碍它,它可能不会产生影响,除非在高度专业化的显示器(例如放射科医生使用的显示器)上。我想它可能与一些写得不好的函数不兼容。
  • @horchler - 我认为物理上重要的是要注意人眼确实没有能力区分任何一种颜色元素的 256 种色调。我们对绿色最敏感,甚至那个,256 超出了我们的眼睛能力。这就是为什么系统被设计成今天的样子。
【解决方案3】:

我认为 Matlab 没有强制执行任何限制。 RGB 和 HSV 颜色值也可以加倍 - 为您提供“近乎无限”的颜色(以及灰色)。

绘图窗口是用 Java 完成的。那里的颜色可以由四个浮点数定义(参见Color) - 让您仍然拥有比硬件处理能力更多的颜色。

帮助说明:

渲染中使用的实际颜色取决于在给定特定输出设备可用的颜色空间的情况下找到最佳匹配。

所以最终它似乎取决于你的硬件。

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 2012-07-16
    • 1970-01-01
    • 2013-05-20
    • 2019-04-20
    相关资源
    最近更新 更多