2012-03-30 13 views
5

jestem obliczania średniej i wariancji z mojego pierwotnego i STEGO zdjęcie, aby je porównać Używam szarości BMP zdjęcie comaprisonWariancja i Mean Image

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

Czy to jest prawidłowy sposób fo obliczaniu średniej/var w MATLAB? Moja Wariancja jest coraz więcej, niż myśli ..

Każda pomoc mile widziane ..

Odpowiedz

8

Są rzeczywiście poprawny sposób obliczyć średnią i odchylenie w stosunku do wszystkich pikseli obrazu.

Nie jest wykluczone, że rozbieżność jest większa niż średnia jak oba są zdefiniowane w następujący sposób:

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

Na przykład, jeśli generują hałas od standardowego rozkładu normalnego z randn(N,1), dostaniesz N próbki, a jeśli obliczenia średniej i wariancji, dostaniesz około 0 i 1. Więc również wasza różnica może być większa niż średnia.

Oba mają zupełnie inne znaczenie: średnia daje pomysł gdzie Twoje piksele są (tj. Czy są białe, czarne, 50% szare, ...). Średnia daje wyobrażenie o tym, jaki piksel może wybrać, aby podsumować kolor całego obrazu. Wariancja daje wyobrażenie, jak wartości pikseli są rozprzestrzeniać: np. jeśli średnia wartość pikseli wynosi 50% szarości, czy większość innych pikseli ma również 50% szarości (mała różnica) lub czy masz 50 czarnych pikseli i 50 białych pikseli (duża różnica)? Więc możesz również zobaczyć to jako sposób na zorientowanie się, jak dobrze średnia podsumowuje obraz (tj. Przy zerowej wariancji, większość informacji jest przechwytywana przez średnią).

edycja: Dla wartości RMS (głównego średniego kwadratu) sygnału, po prostu rób to, co mówi definition. W większości przypadków chcesz usunąć komponent DC (tj. Średnią) przed obliczeniem wartości RMS.

edit 2: Co ja zapomniałem wspomnieć to: też nie ma większego sensu, aby porównać wartość liczbową wariancji ze średnią z fizycznego punktu widzenia. Średnia ma taki sam wymiar jak twoje dane (w przypadku pikseli, myśl o intensywności), natomiast wariancja ma wymiar Twoich danych do kwadratu (czyli intensywność^2). Odchylenie standardowe (std w MATLAB), który jest pierwiastkiem kwadratowym z wariancji, z drugiej strony ma taki sam wymiar jak dane, więc nie można było dokonać pewnych porównań (to jest inna kwestia, czy należy zrobić takie porównanie).

+0

precyzyjnie. Prosty przykład: 'image = [0 2]'. Średnia jest jedna, ale wariancja wynosi dwa. –

+0

Dzięki Egon dobrego wyjaśnienia .. Czy mógłbyś mi wyjaśnić, jak uzyskać wartość średnia kwadratowa obrazu w MATLAB..I ​​odnoszę papier z tego linka, gdzie średnia jest znacznie mniej niż wariancja http://research.ijcaonline.org/ nsc/number4/SPE046T.pdf – user1268559

5

Jeśli workign RGB obrazu (wysokość x szerokość x 3), trzeba obliczyć średnią i wariancję oddzielnie dla każdego kanału. W tym przypadku średni piksel będzie również wektorem o wartości 3.

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

MATLAB ma funkcję image. Unikaj używania go jako zmiennej.