Main Content

wiener2

Filtrado adaptativo de eliminación de ruido 2-D

Se ha quitado la sintaxis.wiener2(I,[m n],[mblock nblock],noise) Utilice la sintaxis en su lugar.wiener2(I,[m n],noise)

Descripción

J = wiener2(I,[m n],noise) filtra la imagen en escala de grises mediante un filtro Wiener adaptativo en píxeles. especifica el tamaño ( -by- ) de la vecindad utilizada para estimar la media de la imagen local y la desviación estándar.I[m n]mn Se supone que la potencia de ruido aditivo (ruido blanco gaussiano) es .noise

La imagen de entrada se ha degradado por un ruido aditivo de potencia constante. utiliza un método Wiener adaptativo pixelwise basado en estadísticas estimadas de una vecindad local de cada píxel.wiener2

ejemplo

[J,noise_out] = wiener2(I,[m n]) devuelve las estimaciones de la potencia de ruido aditivo calculada antes de realizar el filtrado.wiener2

Ejemplos

contraer todo

En este ejemplo se muestra cómo utilizar la función para aplicar un filtro Wiener (un tipo de filtro lineal) a una imagen de forma adaptable.wiener2 El filtro Wiener se adapta a la varianza de la imagen local. Cuando la varianza es grande, realiza poco suavizado.wiener2 Cuando la varianza es pequeña, realiza un mayor suavizado.wiener2

Este enfoque a menudo produce mejores resultados que el filtrado lineal. El filtro adaptativo es más selectivo que un filtro lineal comparable, conservando los bordes y otras partes de alta frecuencia de una imagen. Además, no hay tareas de diseño; la función controla todos los cálculos preliminares e implementa el filtro para una imagen de entrada. Sin embargo, requiere más tiempo de cálculo que el filtrado lineal.wiener2wiener2

funciona mejor cuando el ruido es de potencia constante ("blanco"), como el ruido gaussiano.wiener2 El ejemplo siguiente se aplica a una imagen de Saturno con ruido gaussiano añadido.wiener2

Lea la imagen en el espacio de trabajo.

RGB = imread('saturn.png');

Convierta la imagen de truecolor a escala de grises.

I = rgb2gray(RGB);

Añadir ruido gaussiano a la imagen

J = imnoise(I,'gaussian',0,0.025);

Muestre la imagen ruidoso. Dado que la imagen es bastante grande, muestre solo una parte de la imagen.

imshow(J(600:1000,1:600)); title('Portion of the Image with Added Gaussian Noise');

Elimine el ruido con la función.wiener2

K = wiener2(J,[5 5]);

Muestre la imagen procesada. Dado que la imagen es bastante grande, muestre solo una parte de la imagen.

figure imshow(K(600:1000,1:600)); title('Portion of the Image with Noise Removed by Wiener Filter');

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz numérica 2D.

Tipos de datos: single | double | int16 | uint8 | uint16

Tamaño de vecindad, especificado como un vector de 2 elementos donde es el número de filas y es el número de columnas.[m n]mn Si omite el argumento y el valor predeterminado es 3.[m n]mn

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Ruido aditivo, especificado como una matriz numérica. Si no especifica ruido, calcula la media de la varianza local, .wiener2mean2(localVar)

Tipos de datos: single | double

Argumentos de salida

contraer todo

Imagen filtrada, devuelta como una matriz numérica del mismo tamaño y clase que la imagen de entrada.I

Estimación de la potencia de ruido aditivo, devuelta como una matriz numérica.

Algoritmos

estima la media local y la varianza alrededor de cada píxel.wiener2

μ=1NMn1,n2ηa(n1,n2)

Y

σ2=1NMn1,n2ηa2(n1,n2)μ2,

Dónde η es el vecindario local de cada píxel de la imagen. a continuación, crea un filtro Wiener pixelwise utilizando estas estimaciones,NMUnwiener2

b(n1,n2)=μ+σ2ν2σ2(a(n1,n2)μ),

donde el s.2 es la varianza del ruido. Si no se da la varianza de ruido, utiliza el promedio de todas las desviaciones estimadas locales.wiener2

Referencias

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, p. 548, equations 9.26, 9.27, and 9.29.

Introducido antes de R2006a