Sunday 22 October 2017

Filtro De Imagen Media Móvil Matlab


Creado en Miércoles, 08 de Octubre de 2008 20:04 Última actualización el Jueves, 14 de Marzo de 2013 01:29 Escrito por Batuhan Osmanoglu Hits: 40486 Media móvil en Matlab A menudo me encuentro en necesidad de promediar los datos que tengo que reducir el ruido un poco poco. Escribí funciones de pareja para hacer exactamente lo que quiero, pero matlabs construido en función de filtro funciona bastante bien también. Aquí Ill escribir sobre 1D y 2D promedio de los datos. El filtro 1D se puede realizar usando la función de filtro. La función de filtro requiere al menos tres parámetros de entrada: el coeficiente del numerador para el filtro (b), el coeficiente del denominador para el filtro (a) y los datos (X), por supuesto. Un filtro de promedio en funcionamiento puede definirse simplemente por: Para datos 2D podemos utilizar la función Matlabs filter2. Para obtener más información sobre cómo funciona el filtro, puede escribir: Aquí hay una implementación rápida y sucia de un filtro de 16 por 16 de promedio móvil. Primero tenemos que definir el filtro. Puesto que todo lo que queremos es la contribución igual de todos los vecinos, podemos usar la función unos. Dividimos todo con 256 (1616) ya que no queremos cambiar el nivel general (amplitud) de la señal. Para aplicar el filtro simplemente podemos decir lo siguiente A continuación se presentan los resultados de la fase de un interferograma SAR. En este caso, Range está en el eje Y y Azimuth está asignado en el eje X. El filtro tenía 4 píxeles de ancho en Rango y 16 píxeles de ancho en Azimut. Inicio de sesión SearchMoving Average Filter (MA filter) Loading. El filtro de media móvil es un simple filtro FIR de paso bajo (respuesta de impulso finito) comúnmente utilizado para suavizar una matriz de datos / señal muestreados. Se toman M muestras de entrada a la vez y tomar el promedio de esas M-muestras y produce un solo punto de salida. Se trata de una simple LPF (Low Pass Filter) estructura que viene práctico para los científicos y los ingenieros para filtrar el componente ruidoso no deseado de los datos previstos. A medida que aumenta la longitud del filtro (el parámetro M) aumenta la suavidad de la salida, mientras que las transiciones bruscas en los datos se hacen cada vez más contundentes. Esto implica que este filtro tiene excelente respuesta en el dominio del tiempo pero una respuesta de frecuencia pobre. El filtro MA realiza tres funciones importantes: 1) toma M puntos de entrada, calcula el promedio de esos puntos M y produce un único punto de salida. 2) Debido al cálculo / cálculos involucrados. El filtro introduce una cantidad definida de retardo 3) El filtro actúa como un filtro de paso bajo (con una respuesta de dominio de frecuencia pobre y una buena respuesta de dominio de tiempo). Código Matlab: El siguiente código matlab simula la respuesta en el dominio del tiempo de un filtro M-point Moving Average y también traza la respuesta de frecuencia para varias longitudes de filtro. Respuesta de Dominio de Tiempo: En la primera trama, tenemos la entrada que va en el filtro de media móvil. La entrada es ruidosa y nuestro objetivo es reducir el ruido. La siguiente figura es la respuesta de salida de un filtro de media móvil de 3 puntos. Puede deducirse de la figura que el filtro de media móvil de 3 puntos no ha hecho mucho en filtrar el ruido. Aumentamos los grifos de filtro a 51 puntos y podemos ver que el ruido en la salida se ha reducido mucho, que se representa en la siguiente figura. Aumentamos los grifos más allá de 101 y 501 y podemos observar que aunque el ruido sea casi cero, las transiciones se atenuan drásticamente (observe la pendiente en cada lado de la señal y compárelas con la transición ideal de pared de ladrillo en Nuestra entrada). Respuesta de Frecuencia: A partir de la respuesta de frecuencia se puede afirmar que el roll-off es muy lento y la atenuación de banda de parada no es buena. Dada esta atenuación de banda de parada, claramente, el filtro de media móvil no puede separar una banda de frecuencias de otra. Como sabemos que un buen rendimiento en el dominio del tiempo da como resultado un rendimiento pobre en el dominio de la frecuencia, y viceversa. En resumen, el promedio móvil es un filtro de suavizado excepcionalmente bueno (la acción en el dominio del tiempo), pero un filtro de paso bajo excepcionalmente malo (la acción en el dominio de la frecuencia) Enlaces externos: Libros recomendados: Primary SidebarThis tutorial explica cómo usar MATLAB para el procesamiento de imágenes. Se asume una cierta familiaridad con MATLAB (usted debe saber utilizar matrices y escribir un M-archivo). Es útil tener la Caja de herramientas de procesamiento de imágenes de MATLAB, pero afortunadamente, no se necesitan cajas de herramientas para la mayoría de las operaciones. Los comandos que requieren el cuadro de herramientas de imagen se indican con Image Toolbox. Representación de imágenes Hay cinco tipos de imágenes en MATLAB. Escala de grises Una imagen en escala de grises M píxeles de altura y N píxeles de ancho se representa como una matriz de doble tipo de datos de tamaño M N. Los valores de los elementos (por ejemplo, MyImage (m, n)) indican las intensidades de escala de grises de los píxeles en 0,1 con 0 negro y 1 blanco. Truecolor RGB. Una imagen truecolor rojo-verde-azul (RGB) se representa como una matriz doble M N 3 tridimensional. Cada pixel tiene componentes rojos, verdes y azules a lo largo de la tercera dimensión con valores en 0,1, por ejemplo, los componentes de color de píxel (m, n) son MyImage (m, n, 1) rojo, MyImage (m, n, 2) verde, MyImage (m, n, 3) blue. Indexed. Las imágenes indexadas (paletadas) se representan con una matriz de índice de tamaño M N y una matriz de mapa de color de tamaño K 3. El mapa de color contiene todos los colores utilizados en la imagen y la matriz de índice representa los píxeles haciendo referencia a los colores del mapa de colores. Por ejemplo, si el color 22 es magenta MyColormap (22, :) 1,0,1. Entonces MyImage (m, n) 22 es un píxel de color magenta. Una imagen binaria está representada por una matriz lógica M N donde los valores de píxel son 1 (verdadero) o 0 (falso).uint8. Este tipo utiliza menos memoria y algunas operaciones calculan más rápido que con tipos dobles. Por simplicidad, este tutorial no discute más uint8. La escala de grises suele ser el formato preferido para el procesamiento de imágenes. En los casos que requieren color, una imagen en color RGB puede ser descompuesta y manejada como tres imágenes en escala de grises separadas. Las imágenes indexadas deben convertirse a escala de grises o RGB para la mayoría de las operaciones. A continuación se presentan algunas manipulaciones y conversiones comunes. Algunos comandos requieren el cuadro de herramientas de imagen y se indican con cuadro de herramientas de imagen. Lectura y escritura de archivos de imagen MATLAB puede leer y escribir imágenes con los comandos imread e imwrite. Aunque un número razonable de formatos de archivo son compatibles, algunos no lo son. Utilice imformats para ver lo que su instalación apoya: Al leer imágenes, un problema lamentable es que imread devuelve los datos de la imagen en el tipo de datos uint8, que debe ser convertido en doble y reescalado antes de su uso. Así que en lugar de llamar a imread directamente, utilizo la siguiente función M-file para leer y convertir imágenes: Haga clic con el botón derecho del ratón y guarde getimage. m para usar esta función M. Si image baboon. png está en el directorio actual (o en algún lugar de la ruta de búsqueda de MATLAB), puede leerlo con MyImage getimage (baboon. png). También puede utilizar rutas parciales, por ejemplo si la imagen está en lt directorio actual gt / images / con getimage (images / baboon. png). Para escribir una imagen en escala de grises o RGB, utilice Tenga cuidado de que MyImage sea una matriz doble con elementos en 0,1if incorrectamente escalado, el archivo guardado probablemente estará en blanco. Al escribir archivos de imagen, recomiendo usar el formato de archivo PNG. Este formato es una opción confiable ya que es sin pérdidas, soporta truecolor RGB, y comprime bastante bien. Utilice otros formatos con precaución. Operaciones básicas A continuación se muestran algunas operaciones básicas en una imagen de escala de grises u. Los comandos que requieren el cuadro de herramientas de imagen se indican con Image Toolbox. (Nota: Para cualquier array, la sintaxis u (:) significa desenrollar u en un vector de columna, por ejemplo, si u 1,50,2. Entonces u (:) es 1052). Por ejemplo, la potencia de la señal de imagen se utiliza en Informando la relación señal-ruido (SNR) y la relación pico de señal a ruido (PSNR). Dado imagen limpia uclean y la imagen contaminada por el ruido u, Tenga cuidado con la norma. El comportamiento es norma (v) en el vector v calcula sqrt (sum (v.2)). Pero la norma (A) de la matriz A calcula la norma de la matriz L 2 inducida, por lo que la norma (A) no es ciertamente sqrt (suma (A (:) .2)). Sin embargo, es un error fácil usar la norma (A) donde debería haber sido la norma (A (:)). Filtros lineales El filtrado lineal es la técnica fundamental del procesamiento de señales. Para introducir brevemente, un filtro lineal es una operación donde en cada píxel x m, n de una imagen, se evalúa una función lineal sobre el píxel y sus vecinos para calcular un nuevo valor de píxel y m, n. Un filtro lineal en dos dimensiones tiene la forma general donde x es la entrada, y es la salida, yh es la respuesta del impulso del filtro. Las diferentes opciones de h conducen a filtros que suavizan, agudizan y detectan bordes, por nombrar algunas aplicaciones. El lado derecho de la ecuación anterior se denomina concisamente como hx y se denomina convolución de h y x. Filtrado de dominio espacial El filtrado lineal bidimensional se implementa en MATLAB con conv2. Lamentablemente, conv2 sólo puede manejar el filtrado cerca de los límites de la imagen por cero-relleno, lo que significa que los resultados de filtrado son por lo general inadecuado para los píxeles cerca del límite. Para evitar esto, podemos rellenar la imagen de entrada y utilizar la opción válida al llamar a conv2. La siguiente función M lo hace. Haga clic con el botón derecho del ratón y guarde conv2padded. m para usar esta función M. He aquí algunos ejemplos: Se dice que un filtro 2D h es separable si puede expresarse como el producto externo de dos filtros 1D h1 y h2. Es decir, h h1 (:) h2 (:). Es más rápido pasar h1 y h2 que h. Como se hace arriba para la ventana de media móvil y el filtro gaussiano. De hecho, los filtros de Sobel hx e hy son también separablesque son h1 y h2 Filtrado de dominio de Fourier El filtrado de dominio espacial con conv2 es fácilmente una operación computacionalmente costosa. Para un filtro K K en una imagen M N, conv2 cuesta O (MNK 2) adiciones y multiplicaciones, o O (N 4) suponiendo M N K. Para filtros grandes, el filtrado en el dominio de Fourier es más rápido ya que el coste computacional se reduce a O (N 2 log N). Usando la propiedad de convolución-multiplicación de la transformada de Fourier, la circunvolución es calculada equivalente por el resultado es equivalente a conv2padded (x, h) excepto cerca del límite, donde el cálculo anterior usa la extensión periódica del límite. El filtrado basado en Fourier también puede realizarse con una extensión de contorno simétrica, reflejando la entrada en cada dirección: (Nota: Un método aún más eficiente es el filtro de superposición de FFT-add. La herramienta de procesamiento de señal implementa FFT superposición-agrega en una dimensión en fftfilt .) Filtros no lineales Un filtro no lineal es una operación en la que cada pixel filtrado ym, n es una función no lineal de xm, n y sus vecinos. Aquí discutimos brevemente algunos tipos de filtros no lineales. Filtros de estadística de pedido Si tiene el cuadro de herramientas de imagen, los filtros de estadística de pedido se pueden realizar con ordfilt2 y medfilt2. Un filtro de estadística de orden ordena los valores de píxeles sobre un vecindario y selecciona el k mayor valor. Los filtros min, max y mediano son casos especiales. Filtros morfológicos Si tiene la Caja de herramientas de imagen, bwmorph implementa diversas operaciones morfológicas en imágenes binarias, como erosión, dilatación, apertura, cierre y esqueleto. También hay comandos disponibles para la morfología en imágenes en escala de grises: imerode. Imidato e imtofato. entre otros. Construya su propio filtro Ocasionalmente queremos usar un nuevo filtro que MATLAB no tiene. El siguiente código es una plantilla para implementar filtros. (Nota: Una afirmación errónea frecuente es que los bucles en MATLAB son lentos y deben ser evitados Esto era una vez verdad, en MATLAB 5 y anteriores, pero los bucles en versiones modernas son razonablemente rápidos). Por ejemplo, Ignora los valores más bajos de d / 2 y d / 2 más altos en la ventana, y promedia los valores restantes (2 r 1) 2 d. El filtro es un equilibrio entre un filtro mediano y un filtro medio. El filtro de media recortada alfa puede implementarse en la plantilla como otro ejemplo, el filtro bilateral es

No comments:

Post a Comment