2012-03-30 8 views
5

estoy calculando la media y la varianza de mi imagen original y estego compararlos imagen BMP en escala de grises que estoy usando para comaprisonvarianza y de la Imagen

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

es que esto es forma correcta fo cálculo de media/var en la MATLAB? Mi Varianza es cada vez más que decir ..

Cualquier ayuda apreciada ..

Respuesta

8

Estos son de hecho la forma correcta de calcular la media y la varianza sobre todos los píxeles de la imagen.

No es imposible que su varianza es mayor que la media ya que ambos se definen de la siguiente manera:

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

Por ejemplo, si genera el ruido de una distribución normal estándar con randn(N,1), obtendrá N muestras, y si calcula la media y la varianza, obtendrá aproximadamente 0 y 1. Entonces, también, su varianza puede ser mayor que la media.

Ambos tienen un significado totalmente diferente: la media le da una idea donde son sus píxeles (es decir, son blancos, negros, 50% grises, ...). La media le dará una idea de qué color de píxel elegir para resumir el color de la imagen completa. La varianza le da una idea de cómo los valores de píxel son spread: p. si el valor medio de su píxel es 50% gris, ¿la mayoría de los otros píxeles también son 50% grises (varianza pequeña) o tiene 50 píxeles negros y 50 píxeles blancos (varianza grande)? De modo que también podría verlo como una forma de hacerse una idea de qué tan bien la media resume la imagen (es decir, con varianza cero, la mayoría de la información es captada por la media).

Editar: Para el valor RMS (Root Mean Square) de una señal, simplemente haz lo que dice definition. En la mayoría de los casos, desea eliminar el componente de CC (es decir, la media) antes de calcular el valor de RMS.

editar 2: Lo que me olvidé de mencionar fue: también tiene poco sentido comparar el valor numérico de la varianza con la media desde un punto de vista físico. La media tiene la misma dimensión que sus datos (en el caso de los píxeles, piense en la intensidad), mientras que la varianza tiene la dimensión de sus datos al cuadrado (por lo que la intensidad^2). La desviación estándar (std en MATLAB), que es la raíz cuadrada de la varianza, por otro lado, tiene la misma dimensión que los datos, por lo que podría hacer algunas comparaciones (otra cuestión es si debe hacer tal comparación).

+0

precisamente. Ejemplo simple: 'image = [0 2]'. La media es uno, pero la varianza es dos. –

+0

Gracias a Egon por una buena explicación. ¿Podría explicarme cómo obtener el valor de Root Mean Square de la imagen en MATLAB? Me refiero al artículo de este enlace donde la media es mucho menor que la varianza http://research.ijcaonline.org/ nsc/number4/SPE046T.pdf – user1268559

5

Si está trabajando con la imagen RGB (H x W x 3), debe calcular la media y la varianza por separado para cada canal. En este caso, el píxel medio también será un vector de 3 valores.

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

MATLAB tiene la función image. Evite usarlo como una variable.

Cuestiones relacionadas