1

介绍

对于计算机,数字灰度图像表示为整数矩阵,其中最大数(取决于整数精度)表示黑色,0 为白色。

在此处输入图像描述

这是一个图像的表示,它用于整数,当转换为浮点数时。

在此处输入图像描述

int
array([[6, 1, 1, 0, 6, 4],
       [0, 1, 2, 7, 5, 2],
       [0, 4, 6, 6, 3, 4],
       [1, 1, 2, 6, 7, 0],
       [3, 6, 6, 5, 5, 3]])

float
array([[ 6.,  1.,  1.,  0.,  6.,  4.],
       [ 0.,  1.,  2.,  7.,  5.,  2.],
       [ 0.,  4.,  6.,  6.,  3.,  4.],
       [ 1.,  1.,  2.,  6.,  7.,  0.],
       [ 3.,  6.,  6.,  5.,  5.,  3.]])

问题

我一直在使用 svd,结果得到了一个图像,其矩阵表示由浮点数组成。imshow从 matplotlib可以很好地打印出来。

当灰度图像值为浮动时,“亮度到值”映射如何工作?

4

2 回答 2

1

根据http://www.weizmann.ac.il/matlab/toolbox/images/imshow.html

imshow(I,n) 显示具有 n 个离散灰度级的强度图像 I。如果省略 n,imshow 在 24 位显示器上使用 256 个灰度级,或在其他系统上使用 64 个灰度级。

imshow(I,[low high]) 将 I 显示为灰度强度图像,指定 I 的数据范围。值 low(以及小于 low 的任何值)显示为黑色,值 high(以及大于 high 的任何值)显示为白色,中间的值显示为中间的灰色阴影。imshow 使用默认的灰度级数。如果对 [low high] 使用空矩阵 ([]),则 imshow 使用 [min(I(:)) max(I(:))]; I 中的最小值显示为黑色,最大值显示为白色。

imshow(BW) 显示二值图像 BW。值 0 显示为黑色,值 1 显示为白色。

所以这取决于你如何调用 imshow() 来解释它如何解释图像以进行显示。如果您使用 [low,high] 的空矩阵调用它,它将只使用数组中的最大值和最小值。

于 2013-05-03T09:25:33.337 回答
1

matplotlibcolormap 使用(doc)类(及其子类)和Normalize (doc)类(及其子类)将值映射到颜色。基本思想是normalize将你给它的任何输入转换为范围内的浮点数[0, 1]。有多种线性和非线性方法可以做到这一点(例如实现伽马校正)然后colormap该类转换范围[0, 1]->rgb值中的标量,并且可以通过您想要的任何映射来做到这一点(图库)

于 2013-05-03T22:49:41.700 回答