请准确解释这个等式

Kar*_*ini 0 matlab image matrix

我有这个等式:

I = (I - min(I(:))) / (max(I(:)) - min(I(:)));
Run Code Online (Sandbox Code Playgroud)

在哪里I是矩阵,我知道min(I(:))并分别max(I(:))计算I矩阵的最小和最大元素.

当我做一个随机矩阵rand(5,5)或者randi(5,5)在上面的方程式之前和之后我没有看到任何变化:

两个布偶

但是当我在灰度图像上实现这个方程时,结果是二进制图像:

两个布偶

这里的任何人都能完全解释这个等式吗?

I = (I - min(I(:))) / (max(I(:)) - min(I(:)));
Run Code Online (Sandbox Code Playgroud)

A. *_*nda 8

代码行

I = (I - min(I(:))) / (max(I(:)) - min(I(:)));
Run Code Online (Sandbox Code Playgroud)

线性地将范围[min(I(:)),max(I(:))]中的数据转换为范围[0,1] - 它是标准化的一种形式.除法之前的部分移动数据使得最小值变为0.然后除法压缩数据使得最大值变为1.

通过将原始数据和转换后的数据相互映射,您可以了解所发生的情况:

I = randi(100, 1, 10);
plot(I,  (I - min(I(:))) / (max(I(:)) - min(I(:))), '.')
xlabel original
ylabel transformed
Run Code Online (Sandbox Code Playgroud)

偶然地,最小值是5并且最大值是75.数据被线性变换,使得最小值被映射到0并且最大值被映射到1.

您没有看到矩阵图的差异可能是由于您绘制它的方式.如果你使用eg imagesc,它会在绘图之前在内部进行这样的转换(因此sc"缩放"部分),所以你没有看到差异.但不同之处在于,只看数字本身:

例:

>> I = randi(3, 3, 3)

I =

     1     2     2
     1     2     2
     2     3     3

>> I = (I - min(I(:))) / (max(I(:)) - min(I(:)))

I =

                         0                       0.5                       0.5
                         0                       0.5                       0.5
                       0.5                         1                         1
Run Code Online (Sandbox Code Playgroud)

您使用的灰度图像tire.tif来自Matlab,是一个8位图像.如果你把它读成Matlab

I = imread('tire.tif');
Run Code Online (Sandbox Code Playgroud)

你得到一组uint8值:

>> whos I
  Name        Size             Bytes  Class    Attributes

  I         205x232            47560  uint8              
Run Code Online (Sandbox Code Playgroud)

在Matlab中,如果使用这种整数数据类型进行计算,在许多情况下结果也会保持整数.您缩放到[0,1],但该范围内只有两个整数.因此,您将获得一个仅包含0和1值的图像,即二进制图像.通过绘图可以再次显示效果:

plot(I(:),  (I(:) - min(I(:))) / (max(I(:)) - min(I(:))), '.')
xlabel original
ylabel transformed
Run Code Online (Sandbox Code Playgroud)

原始数据是0到255之间的整数,它们在0-127范围内映射到0,在128-255范围内映射到1.为避免这种情况,首先将数据转换为浮点数据类型:

I = double(I);
Run Code Online (Sandbox Code Playgroud)

有关整数运算的更多信息,请参阅Matlab文档.