2012-03-30 118 views
5

的意思是我要計算平均值和我原來的和隱祕圖像的變化比較他們 我使用灰度BMP圖像comaprison差異和圖像

image=imread("image name") 
M = mean(image(:)) 
V = var((image(:))) 

是,這是FO計算平均值的/ var正確的方法MATLAB?我的差異越來越不是意味着更多..

知道的任何幫助..

回答

8

這些確實是計算的均值和方差在圖像的所有像素的正確方法。

這是不可能的,你的變化是不是兩者都以下面的方式形成的平均較大:

mean  = sum(x)/length(x) 
variance = sum((x - mean(x)).^2)/(length(x) - 1); 

例如,如果你從randn(N,1)標準正態分佈產生的噪音,你會得到N樣本,如果您計算均值和方差,您將獲得大約01。所以在那裏,你的差異可能會大於平均值。

兩者的含義完全不同:意思是給你一個想法其中你的像素是(即他們是白色,黑色,50%灰色,...)。平均值可以讓您瞭解選擇哪種像素顏色來總結完整圖像的顏色。方差爲您提供了一個想法,如何像素值是傳播:例如,如果你的平均像素值是50%灰度,其他大部分像素是否也是50%灰度(小方差),或者你有50個黑色像素和50個白色像素(大方差)?因此,您還可以將其視爲一種方式來了解平均值總結圖像的方式(即零方差,大部分信息由平均值捕獲)。

編輯:對於信號的RMS值(均方根),只要做definition所說的。在大多數情況下,您想在計算RMS值之前去除DC分量(即平均值)。

編輯2:我忘了提到的是:從物理的角度來比較方差的數值和平均值也是沒有意義的。平均值與您的數據具有相同的維度(在像素的情況下,考慮強度),而方差具有數據平方的維數(因此強度^ 2)。標準差(MATLAB中爲std)是方差的平方根,與數據具有相同的維數,因此可以進行一些比較(這是您是否應該進行這種比較的另一個問題)。

+0

正好。簡單的例子:'image = [0 2]'。平均值是1,但方差是2。 – 2012-03-30 07:51:23

+0

感謝Egon的很好的解釋..請你解釋一下如何在MATLAB中得到圖像的均方根值。我指的是這個鏈接中的平均值遠小於方差的紙張http://research.ijcaonline.org/ NSC /號碼4/SPE046T.pdf – user1268559 2012-03-30 10:30:47

5

如果您正在處理RGB圖像(H x W x 3),則必須分別計算每個通道的平均值和方差。在這種情況下,平均像素也將是3值向量。

for ch = 1:3 
    M(ch) = mean(reshape(img(:,:,ch),[],1)); 
    V(ch) = var(reshape(img(:,:,ch),[],1)); 
end 

MATLAB有函數image。避免將其用作變量。