Friday, November 25, 2016

Moving Average Image Filter 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: 38889 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 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. El científico y los ingenieros Guía para el procesamiento de señales digitales Por Steven W. Smith, Ph. D. Como su nombre indica, el filtro de media móvil opera promediando un número de puntos de la señal de entrada para producir cada punto en la señal de salida. En forma de ecuación, esto se escribe: Donde es la señal de entrada, es la señal de salida, y M es el número de puntos en la media. Por ejemplo, en un filtro de media móvil de 5 puntos, el punto 80 de la señal de salida viene dado por: Como alternativa, el grupo de puntos de la señal de entrada puede ser elegido simétricamente alrededor del punto de salida: Esto corresponde a cambiar la suma en Eq . 15-1 de: j 0 a M -1, a: j - (M -1) / 2 a (M -1) / 2. Por ejemplo, en un filtro de media móvil de 10 puntos, el índice, j. Puede ir de 0 a 11 (promedio de un lado) o de -5 a 5 (promedio simétrico). El promedio simétrico requiere que M sea un número impar. La programación es ligeramente más fácil con los puntos de un solo lado sin embargo, esto produce un cambio relativo entre las señales de entrada y salida. Debe reconocer que el filtro de media móvil es una convolución utilizando un núcleo de filtro muy simple. Por ejemplo, un filtro de 5 puntos tiene el núcleo del filtro: 82300, 0, 1/5, 1/5, 1/5, 1/5, 1/5, 0, 08230. Es decir, el filtro de media móvil es una convolución De la señal de entrada con un impulso rectangular que tiene un área de uno. La Tabla 15-1 muestra un programa para implementar el filtro de media móvil. Filtro de media móvil de datos de tráfico Este ejemplo muestra cómo suavizar los datos de flujo de tráfico usando un filtro de media móvil con una ventana deslizante de 4 horas. La siguiente ecuación de diferencias describe un filtro que promedia la hora actual y las tres horas anteriores de datos. Importe los datos de tráfico y asigne la primera columna de conteo de vehículos al vector x. Cree los vectores de coeficiente de filtro. Calcule el promedio móvil de 4 horas de los datos y trace los datos originales y los datos filtrados. MATLAB y Simulink son marcas registradas de The MathWorks, Inc. Para obtener una lista de otras marcas comerciales propiedad de The MathWorks, Inc., visite www. mathworks. com/store. Otros nombres de productos o marcas son marcas comerciales o marcas registradas de sus respectivos propietarios. Seleccione su CountryDocumentation Este ejemplo muestra el flujo de trabajo recomendado para generar código C desde una función MATLAB utilizando el comando codegen. Estos son los pasos: 1. Agregue la directiva codegen a la función MATLAB para indicar que está destinado a la generación de código. Esta directiva también permite al analizador de código MATLAB identificar las advertencias y errores específicos de MATLAB para la generación de código. 2. Genere una función MEX para comprobar que el código MATLAB es adecuado para la generación de código. Si se producen errores, debe corregirlos antes de generar el código C. 3. Pruebe la función MEX en MATLAB para asegurarse de que es funcionalmente equivalente al código MATLAB original y que no se producen errores en tiempo de ejecución. 4. Genere el código C. 5. Inspeccione el código C. Requisitos previos No hay ningún prerrequisito para este ejemplo. Crear una nueva carpeta y copiar archivos relevantes El código siguiente creará una carpeta en su carpeta de trabajo actual (pwd). La nueva carpeta sólo contendrá los archivos que son relevantes para este ejemplo. Si no desea afectar a la carpeta actual (o si no puede generar archivos en esta carpeta), debe cambiar su carpeta de trabajo. Comando de ejecución: Crear una nueva carpeta y copiar archivos relevantes Sobre la función de filtrado de promedio La función de filtrado de promedio actúa como filtro de promedio en la señal de entrada, toma un vector de valores de entrada y calcula un promedio para cada valor en el vector. El vector de salida tiene el mismo tamaño y forma que el vector de entrada. Seleccione su filtro CountryMean, o la categoría media del filtro. Desarrollo de software de procesamiento digital de señales y imágenes (DSP y DIP). Abstracto. El artículo es una guía práctica para el filtro medio, o la comprensión media del filtro y la aplicación. El artículo contiene teoría, código fuente C, instrucciones de programación y aplicación de ejemplo. 1. Introducción al filtro medio, o filtro medio Filtro medio. O filtro medio es un filtro de ventana de clase lineal, que suaviza la señal (imagen). El filtro funciona como un paso bajo. La idea básica detrás del filtro es que cualquier elemento de la señal (imagen) toma un promedio en su vecindario. Para entender cómo se hace esto en la práctica, comencemos con la idea de la ventana. 2. Filtre la ventana o la máscara Imaginemos, usted debe leer una letra y qué usted ve en el texto restringido por el agujero en la plantilla especial como esto. Por lo tanto, el resultado de la lectura es t sonido. Ok, vamos a leer la carta de nuevo, pero con la ayuda de otra plantilla: Ahora el resultado de la lectura t es el sonido 240. Hagamos el tercer intento: Ahora estás leyendo la letra t como sonido 952. Qué pasa aquí? En lenguaje matemático, está realizando una operación (lectura) sobre elemento (letra t). Y el resultado (sonido) depende del vecindario del elemento (letras al lado de t). Y esa plantilla, que ayuda a captar la vecindad de elemento, es ventana Sí, la ventana es sólo una plantilla o patrón, por medio de la cual se selecciona el elemento barrio 0151 un conjunto de elementos alrededor de la 0151 dado para ayudarle a tomar una decisión. Otro nombre para la ventana de filtro es la máscara 0151 máscara es una plantilla, que oculta los elementos que no están prestando atención. En nuestro ejemplo el elemento en el que estamos operando está situado en la parte más a la izquierda de la ventana, en la práctica sin embargo su posición habitual es el centro de la ventana. Veamos algunos ejemplos de ventanas. En una dimensión. Higo. 4. Ventana o máscara de tamaño 5 en 1D. En dos dimensiones. Higo. 5. Ventana o máscara del tamaño 3times3 en 2D. En tres dimensiones. Piense en la construcción. Y ahora mdash sobre la habitación en ese edificio. La habitación es como una ventana 3D, que corta algunos subespacio de todo el espacio del edificio. Puede encontrar la ventana 3D en el procesamiento de imágenes de volumen (voxel). 3. Comprender el filtro medio Ahora veamos, cómo ldquotake un promedio entre los elementos del vecindario. La fórmula es simple sumando elementos y dividiendo la suma por el número de elementos. Por ejemplo, calculemos un promedio para el caso, representado en la fig. 7. Higo. 7. Tomando un promedio. Y eso es todo. Sí, solo hemos filtrado la señal 1D por filtro medio Hagamos resume y escribamos instrucciones paso a paso para procesar por filtro medio. Filtro promedio, o algoritmo de filtro promedio: Coloque una ventana sobre el elemento Tome un promedio de 0151 sumando elementos y divida la suma por el número de elementos. Ahora, cuando tenemos el algoritmo, es hora de escribir algún código mdash vamos a bajar a la programación. 4. Programación de filtro media 1D En esta sección desarrollamos un filtro medio 1D con ventana de tamaño 5. Tenemos una señal 1D de longitud N como entrada. El primer paso es colocar la ventana 0151 lo hacemos cambiando el índice del elemento principal: Preste atención, que estamos empezando con el tercer elemento y terminando con el último pero dos. El problema es que no podemos empezar con el primer elemento, porque en este caso la parte izquierda de la ventana de filtro está vacía. Discutiremos a continuación, cómo resolver ese problema. El segundo paso es tomar el promedio, ok: Ahora, vamos a anotar el algoritmo como función: Tipo de elemento podría definirse como: 5. Tratamiento de bordes Para todos los filtros de ventana hay algún problema. Eso es tratamiento de borde. Si coloca la ventana sobre el primer elemento (último), la parte izquierda (derecha) de la ventana estará vacía. Para llenar el vacío, la señal debe ser extendida. Para el filtro medio hay buena idea para extender la señal o la imagen simétricamente, así: Así, antes de pasar la señal a nuestra función media de filtro, la señal debe ser extendida. Escriba la envoltura, que hace todos los preparativos. Como puede ver, nuestro código tiene en cuenta algunos problemas prácticos. En primer lugar, comprobar nuestros parámetros de entrada 0151 señal no debe ser NULL, y la longitud de la señal debe ser positivo: Segundo paso 0151 verificamos el caso N1. Este caso es especial, porque para construir la extensión necesitamos al menos dos elementos. Para la señal de 1 longitud de elemento el resultado es la propia señal. También preste atención, nuestro filtro medio funciona en el lugar, si el resultado del parámetro de salida es NULL. Ahora asignemos memoria para la extensión de la señal. Y compruebe la asignación de memoria.


No comments:

Post a Comment