MATLAB如何将图像归一化为零和单位方差

时间:2014-04-13 19:15:19

标签: matlab mean variance

我正在尝试将图像标准化为零均值和单位方差。

我的代码:

X = imread('my_image');
X = X-mean(X(:));
X = X/std(X(:), 0, 1);

似乎零均值有效但我在尝试计算方差时遇到错误。最后一行给出了这个错误:

Error using var (line 59)
First argument must be single or double.

Error in std (line 32)
y = sqrt(var(varargin{:}));

我知道为什么会收到此错误?

由于

1 个答案:

答案 0 :(得分:3)

您的代码有两个问题:

  • std仅对doublesingle值进行操作(例如,不在uint8上)。您应该在double内投放到std

  • 您还应该将X投射到double,以便在减法(mean行)和除法(std行)中获得更精确的结果

所以:最初将X投射到double,然后进行计算:

X = imread('my_image');
X = double(X);
X = X-mean(X(:));
X = X/std(X(:), 0, 1);