我正在尝试将图像标准化为零均值和单位方差。
我的代码:
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{:}));
我知道为什么会收到此错误?
由于
答案 0 :(得分:3)
您的代码有两个问题:
std
仅对double
或single
值进行操作(例如,不在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);