2014-04-13 66 views
1

我試圖將圖像歸一化爲零均值和單位方差。MATLAB如何將圖像歸一化爲零和單位方差

我的代碼:

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

至於什麼路易斯說,鑄就形象'double'第一在進行減去平均值,然後使用前'std'。否則你有什麼是正確的。 – rayryeng

回答

2

您的代碼有兩個問題:

  • std只在doublesingle值(不uint8例如)進行操作。您應該在std之內投射到double

  • 你也應該爲了得到在減法(mean線)和部門(std線)更精確的結果投Xdouble

所以:投Xdouble開始,然後做了計算:

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

太好了,謝謝! –

相關問題