Monday 27 November 2017

Matlab Media Móvil De La Imagen


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: 40485 Media móvil En Matlab A menudo me encuentro en necesidad de promediar los datos que tengo para 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 de numerador para el filtro (b), el coeficiente de 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. La mejor manera de hacer esto (en mi opinión) sería utilizar un buffer circular para almacenar sus imágenes. En un buffer circular o de anillo, el elemento de datos más antiguo de la matriz es sobrescrito por el elemento más nuevo insertado en la matriz. Los conceptos básicos de la creación de una estructura de este tipo se describen en el breve video de Mathworks Implementación de un buffer circular simple. Para cada iteración de su bucle principal que se ocupa de una sola imagen, sólo cargue una nueva imagen en el buffer circular y luego utilice la función MATLAB s built in mean para tomar el promedio de manera eficiente. Si necesita aplicar una función de ventana a los datos, haga una copia temporal de los fotogramas multiplicada por la función de ventana y tome el promedio de la copia en cada iteración del bucle. Respondió ago 6 12 at 10:11 calcula una especie de media móvil para cada una de las 10 bandas sobre todas sus imágenes. Esta línea calcula un promedio móvil de valor medio sobre sus imágenes: Para ambos, querrá agregar una estructura de búfer que mantenga sólo las últimas 10 imágenes. Para simplificarlo, también puede guardar todo en la memoria. Aquí hay un ejemplo para Yout: Cambiar esta línea: (Añadir una dimensión) Y cambiar esto: Entonces para mostrar el uso que haría algo. Similar for meanvalue respondió ago 6 12 at 14:19 Su respuesta 2016 Stack Exchange, Inc Este tutorial explica cómo utilizar 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 de 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 pixel 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 (suma (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ñales implementa la superposición FFT-add 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