Anda di halaman 1dari 19

UNIVERSIDAD TECNOLÓGICA METROPOLITANA

FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Informe Procesamiento digital de señales.


Filtros en imágenes.

Nombre: Ignacio Carvajal Catalán


Rut: 18.459.016-6
Correo: Ignacio.carvajalc@utem.cl
Fecha: 28 Septiembre 2018
Profesor: Ali Dehghanfirouzabadi
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Índice

Introducción ........................................................................................................................................ 2
MatLab ............................................................................................................................................ 3
Técnicas de filtrado ..................................................................................................................... 4
Tipos de ruidos. ........................................................................................................................... 5
Filtro de mediana. ............................................................................................................................... 6
Filtro Gaussiano................................................................................................................................... 9
Filtro de la media............................................................................................................................... 11
Conclusión ......................................................................................................................................... 17
Bibliografía ........................................................................................................................................ 18

1
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Introducción
En el presente informe se dará a conocer los filtros de imágenes, como es el filtro de la
mediana, de la media, gaussiano y el de “sal y pimienta”. Se mostraran sus imágenes a partir
de ecuaciones o algoritmos realizados en MatLab en donde se nos hace más fácil poder
realizar estos filtrados por la accesibilidad del programa y sus funciones completamente
aplicables en el tema de procesamiento digital de señales.
Se procede aplicar los algoritmos a las imágenes incluyendo cada una de las imágenes al
informe con sus respectivos códigos, al igual que las gráficas de las funciones de los tipos
de filtros en los cuales se puede observar la variación de estos, ya sea en la suavidad o
eliminando o añadiendo el ruido.
Se hace una pequeña introducción de lo que es el programa MatLab con sus principales
características y ventajas.
Se da a conocer las técnicas de filtrado en los cuales serán tratados a continuación.

2
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

MatLab
MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es una herramienta
de software matemático que ofrece un entorno de desarrollo integrado (IDE) con un
lenguaje de programación propio (lenguaje M). Está disponible para las plataformas Unix,
Windows, Mac OS X y GNU/Linux.
Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de
datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario
(GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos
hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus
prestaciones, a saber, Simulink (plataforma de simulación multidominio) y GUIDE (editor de
interfaces de usuario - GUI). Además, se pueden ampliar las capacidades de MATLAB con
las cajas de herramientas (toolboxes); y las de Simulink con los paquetes de bloques
(blocksets).
Es un software muy usado en universidades y centros de investigación y desarrollo. En los
últimos años ha aumentado el número de prestaciones, como la de programar
directamente procesadores digitales de señal o crear código VHDL.
En 2004, se estimaba que MATLAB era empleado por más de un millón de personas en
ámbitos académicos y empresariales.
Características principales.

 Lenguaje: Las aplicaciones de MATLAB se desarrollan en un lenguaje de


programación propio. Este lenguaje es interpretado, y puede ejecutarse tanto en el
entorno interactivo, como a través de un archivo de script (archivos *.m). Este
lenguaje permite operaciones de vectores y matrices, funciones, cálculo lambda, y
programación orientada a objetos.
 Gráficos e interfaces graficas: MATLAB provee funciones y herramientas para
visualizar datos en 2D y 3D.
 Interfaz con otros lenguajes de programación. MATLAB puede llamar funciones y
subrutinas escritas en C o Fortran. Se crea una función envoltorio que permite que
sean pasados y devueltos tipos de datos de MATLAB. Los archivos objeto
dinámicamente cargables creados compilando esas funciones se denominan "MEX-
files", aunque la extensión de nombre de archivo depende del sistema operativo y
del procesador.

3
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Técnicas de filtrado
En el procesamiento digital de señales los filtros constituyen o contribuye uno de los
principales modo de operar en las imágenes. Se puedes utilizar para distintos fines, pero en
todos los casos, el resultado sobre cada pixel depende de los pixeles a su entorno o vecinos.
Son métodos para resaltar o suprimir, de forma selectiva, información contenida en una
imagen a diferentes escalas espaciales, para destacar algunos elementos de la imagen, o
también para ocultar los valores que nos causen ruido dentro de la imagen.
Una imagen se puede filtrar en el dominio del espacio, en donde se trabaja directamente
sobre los pixeles de la imagen, o en el dominio de la frecuencia, donde las operaciones
aritméticas se llevan a cabo en la transformada de Fourier de la imagen.
En el tipo de filtrado tenemos distintos objetivos en los cuales están:

 Suavizar la imagen: Esto refiere a reducir o hasta eliminar las variaciones de


intensidad entre pixeles vecinos.
 Eliminar el ruido: Como se dijo anteriormente se refiere a modificar aquellos pixeles
cuyo nivel de intensidad es muy diferente al de sus vecinos.
 Realzar la imagen: Esta aumenta las variaciones de intensidad en donde estas se
producen.
 Detección de bordes: Detectar aquellos pixeles donde se produce un cambio brusco
en la función de intensidad.
En este informe llamaremos ruido a toda la información no deseada la cual está
contaminando la imagen.
El concepto de ruido en esta materia lo podemos obtener y/o se visualiza cuando una
imagen digital se ve un poco distorsionada, a esto le decimos que la imagen tiene ruido.
Según su definición, ruido es cualquier perturbación que sufre una señal en el proceso de
adquisición y/o transmisión y/o almacenamiento de esta.
Repasando el concepto de ruido tenemos que es un defecto de la información no deseado
que contamina y/o degrada la imagen. Se manifestará generalmente en pixeles aislados de
los demás que toman valores distintos a los reales.

4
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Imagen 1.1

Por ejemplo tenemos una imagen (1.2) con ruido digital:

Imagen 1.2

Tipos de ruidos.
o Aditivo: Lo más usuales son “Sal y pimienta” y Gaussiano, que son esencialmente aditivo
y la señal es independiente, g(z,y) = f(z,y) + n(z,y) donde g(z,y) es el resultado de la
distorsión de la imagen original f(z,y) por el ruido Gaussiano aditivo n(z,y).
o Impulsivo: Frecuentemente los sensores generan ruido impulsivo. Algunas veces el
ruido generado por transmisión digital (o incluso analógica) es impulsivo. Puede ser
modelado como: g(x, y)= (1-p)*f(x, y)+p*i(x, y) donde i (z, x) es el ruido impulsivo y “p”
pertenece a {0,1}.
o Multiplicativo: El ruido de aspecto granulado de las imágenes de radares y ecografías.
Es esencialmente multiplicativo. Tiene un aspecto moteado. g (z.y)=f (z, y)*m(x, y),
donde m (z, y) es el ruido multiplicativo.

5
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

En el presente informe se dará a conocer el filtrado de la mediana, promedio, Gaussiano y


de “sal y pimienta”.

Filtro de mediana.
La mediana es un conjunto de números (2K+1) es el numero tal que K números del conjunto
tiene valores mayores que este número, en tanto que los otros K números tienen valores
más pequeños. La mediana se determina disponiendo los números en orden según sus
valores en un conjunto y eligiendo luego el número de la parte media. Por ejemplo tenemos
las siguientes cifras {1, 2, 3, 5,-1,-2,-5}. El conjunto puesto por orden es {-5,-2,-1, 1, 2, 3,5}.
Por lo tanto la mediana es 1.
El filtro de la mediana se implementa deslizando una ventana de longitud impar sobre la
secuencia de entrada {x[n]} una muestra a la vez. En cualquier instante, la salida del filtro
corresponde al valor de la mediana de las muestras de entrada dentro de la ventana. De
manera más específica, la muestra de salida y[n] en el n-ésimo instante del filtro de mediana
con una ventana de longitud (2K+1) está dada por

𝑦[𝑛] = 𝑚𝑒𝑑{𝑥[𝑛 − 𝐾], … , 𝑥[𝑛 − 1], 𝑥[𝑛], 𝑥[𝑛 + 1], … , 𝑥[𝑛 + 𝑘]}.
𝐸𝑐. 1.1

En la práctica, para procesar una secuencia de longitud finita {x[n]} de longitud N mediante
un filtro de mediana con una ventana de longitud M, donde M<N, se añaden (M-1)/2
muestras de valor cero a ambos lados de la secuencia de entrada {x[n]} para crear una nueva
secuencia {𝑥𝑒 [𝑛]} de longitud N + M – 1:
(𝑀 − 1)
0, − ≤ 𝑛 ≤ −1,
2
𝑥𝑒 [𝑛] = 𝑥[𝑛], 0≤𝑛≤𝑁−1
(𝑀 − 1)
{0, 𝑁 ≤ 𝑛 ≤ 𝑁 − 1 +
2
La secuencia {𝑥𝑒 [𝑛]} cuando se procesa por medio del filtro de mediana, genera una
secuencia de salida {y[n]} también de longitud N.
El filtro de mediana encuentra aplicación en la eliminación del ruido de impulso aleatorio
aditivo, el cual se presenta como errores repentinos grandes en la señal alterada. El filtro
de mediana suele usarse para suavizar señales alteradas por ruido de impulso, en el
siguiente ejemplo se aplicará un filtro de mediana a la ecuación 1.1 para eliminar el ruido
de impulso en muestras de datos medidos.

6
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Se elige como la longitud del filtro de mediana a M=3, donde arroja la siguiente gráfica:

Imagen 1.3

Longitud de la mediana a M=6:

Imagen 1.4

7
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

El filtro de mediana tiene la ventaja de que el valor final del pixel es un valor real presente
en la imagen y no un promedio, de este modo se reduce el efecto borroso que tienen las
imágenes que han sufrido un filtro de media. Además el filtro de mediana es menos sensible
a valores extremos. El inconveniente es que resulta más complejo de calcular ya que hay
que ordenar los diferentes valores que aparecen en los pixeles incluidos en la ventana y
determinar cuál es el valor central.

Imagen 1.5

Los pixeles de la nueva imagen se generan calculando la mediana del conjunto de pixeles
del entorno de vecindad del pixel correspondiente a la imagen de origen. De esta forma se
homogenizan los pixeles de intensidad muy diferente con respecto a la de los vecinos. Este
tipo de filtro es bastante indicado cuando se tiene ruido aleatorio.
El código Matlab y las imágenes que se obtuvieron al realizar la simulación fueron las
siguientes:
imc=imread('C:\Program Files (x86)\MatLab\rdvz\imagen2.jpg');
im=rgb2gray(imc);
fg = imnoise(im,'gaussiano');
fs = imnoise(im,'Sal y pimienta',0.05);
h1=fspecial('Promedio');
media1=imfilter(fg,h1);

8
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

media2=imfilter(fs,h1);
mediana1=medfilt2(fg);
mediana2=medfilt2(fs);
%Representaciones de las imágenes
subplot(2,3,1),subimage(fg),title('Imagen con ruido gaussiano');
subplot(2,3,4),subimage(fs),title('Imagen con ruido aleatorio');
subplot(2,3,2),subimage(media1),title('Filtro media');
subplot(2,3,5),subimage(media2),title('Filtro media');
subplot(2,3,3),subimage(mediana1),title('Filtro mediana');
subplot(2,3,6),subimage(mediana2),title('Filtro mediana');

La imagen es comparada con la imagen con ruido gaussiano y con ruido aleatorio.

Filtro Gaussiano
El filtro Gaussiano se usa para emborronar imágenes y eliminar ruido. Es similar al filtro de
media pero se usa una máscara diferente, se aplican mediante convolución con una
máscara cuyo tamaño y valor depende de la varianza σ, modelizando la función gaussiana:

1 −𝑥 2 +𝑦 2
𝐺(𝑥, 𝑦) = 2
𝑒 𝜎2
2𝜋𝜎
A mayor σ más atenúa y más voluminoso y lento es el filtro.

Mediante σ se afecta a la resolución del filtro, a menos varianza menor cantidad de destalle
que se pierde.

9
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Se trata de un filtro separable:


𝐺(𝑥, 𝑦) ∗ 𝐼(𝑥, 𝑦) = 𝐺(𝑥) ∗ {𝐺(𝑦) ∗ 𝐼(𝑥, 𝑦)}
También son base para filtros detectores de contorno.
El valor de cada punto es el resultado de promediar con distintos pesos los valores vecinos
a ambos lados de dicho punto. Este tipo de filtro también tiene el problema del difuminado
de los bordes, pero no es tan acusado como el caso de la media simple. Este tipo de filtro
reduce especialmente el ruido gaussiano.
Ruido Gaussiano: Produce pequeñas variaciones en la imagen. Tiene su origen en
diferencias de ganancias del sensor, ruido en la digitalización, etc.
El código empleado para este informe y las imágenes que se obtuvieron al realizar la
simulación con respecto a este filtro y comparándolo con un filtro de media fueron las
siguientes:
Código utilizado en MatLab:
im=imread('C:\Program Files (x86)\MatLab\rdvz\imagen2.jpg');
fn = imnoise(im,'gaussian');
h1=fspecial('gaussian');
h2=fspecial('average');
g1=imfilter(fn,h1);
media2=imfilter(fn,h2);
%Representaciones de las imágenes
subplot(2,2,1),subimage(im),title('Imagen original');
subplot(2,2,2),subimage(fn),title('Imagen con ruido gaussiano');
subplot(2,2,3),subimage(g1),title('Filtro gaussiano');
subplot(2,2,4),subimage(media2),title('Filtro de media 3X3');

10
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Imagen 1.6

Se puede apreciar como el filtro gaussiano elimina mucho mejor el ruido y además
emborrona menos los bordes de la imagen.

Filtro de la media
En aplicaciones donde no se puede repetir las mediciones de datos, una estimación que se
usa mucho de las muestra de datos s[n] en el instante n de M mediciones de la muestra de
datos alteradas por el ruido x[l] disponible para el intervalo 𝑛 − 𝑀 + 1 ⩽ 𝑙 ⩽ 𝑛 es el
promedio o media de M puntos y[n] dado por:
𝑀−1
1
𝑦[𝑛] = ∑ 𝑥[𝑛 − 𝑙]
𝑀
𝑙=0
Ec.1.5
Una estimación de la dispersión del valor medio y[n] con respecto al valor real s[n] suele
indicarse mediante la desviación estándar:

∑𝑀−1(𝑥[𝑛] − 𝑦[𝑛])2
𝜎[𝑛] = √ 𝑙=𝑜
𝑀

11
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Ec.1.6
El sistema en tiempo discreto que implementa la ecuación 1.5 se denomina filtro de
promedio de M puntos. En la mayoría de las aplicaciones, el dato x[n] representa una
secuencia acotada y, en consecuencia, el promedio de M puntos y[n] también es una
secuencia acotada. Se concluye de la ecuación 1.6 que si no hay sesgo en las mediciones,
una estimación mejorada de los datos ruidosos se viene si se aumenta simplemente el
número de mediciones de M.
Una implementación directa del filtro de promedio de M puntos de la ecuación 1.5 implica
M-1 sumas, 1 división y el almacenamiento de M-1 muestras de datos de entradas pasada.
A continuación se desarrolla una implementación más eficiente del filtro de promedio. De
acuerdo con la ecuación 1.5:
𝑀−1
1
𝑦[𝑛] = ∑ 𝑥[𝑛 − 𝑙] + 𝑥[𝑛 − 𝑀] − 𝑥[𝑛 − 𝑀]
𝑀
𝑙=0
𝑀
1
𝑦[𝑛] = ∑ 𝑥[𝑛 − 𝑙] + 𝑥[𝑛] − 𝑥[𝑛 − 𝑀]
𝑀
𝑙=1
𝑀−1
1
𝑦[𝑛] = ∑ 𝑥[𝑛 − 1 − 𝑙] + 𝑥[𝑛] − 𝑥[𝑛 − 𝑀]
𝑀
𝑙=0

La ecuación se escribe como:


1
𝑦[𝑛] = 𝑦[𝑛 − 1] + (𝑥[𝑛] − 𝑥[𝑛 − 𝑀])
𝑀
El cálculo del promedio de M puntos y[n], en el instante de tiempo n de una secuencia que
utiliza la ecuación recursiva anterior requiere ahora dos sumas y una división, lo que es
considerablemente más pequeño que lo que se necesita en la implementación directa de la
ecuación 1.5.
Al utilizar MatLab se ilustra la implementación del filtro de promedio de la ecuación 1.5 y
su aplicación para eliminar variaciones aleatorias en las muestras de datos medidos.

12
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Código Matlab:
% Filtro promedio
R = 50;
d = rand(R,1)-0.5;
m = 0:1:R-1;
s = 2*m.*(0.9.^m);
x = s + d';
plot(m,d,'r-',m,s,'b--',m,x,'g:')
xlabel('Time index n'); ylabel('Amplitude')
legend('d[n]','s[n]','x[n]');
pause
M = input('Number of input samples = ');
b = ones(M,1)/M;
y = filter(b,1,x);
plot(m,s,'r-',m,y,'b--')
legend('s[n]','y[n]');
xlabel ('Time index n');ylabel('Amplitude')

Grafica para M=3.

13
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Para M=9.

En el programa de MarLab se ha utilizado para generar la salida suavizada y[n] de la señal


alterada por el ruido x[n] utilizando el sistema promedio móvil de la ecuación 1.5. La figura
anterior muestra las gráficas de señales pertinentes generadas por el programa con M=3.
Durante la ejecución del programa nos pide los datos de entrada, que es el numero deseado
de M muestras de entrada que se sumaran. Debe notarse que para ilustrar el efecto del
suaviza miento del ruido, las señales en tiempo discreto se han graficado con curvas
continuas utilizando la función plot.
Dada una imagen f(i,j), el procedimiento consiste en generar una nueva imagen g(i,j) cuya
intensidad para cada píxel se obtiene promediando los valores de intensidad de los píxeles
f(i,j) incluidos en un entorno de vecindad predefinido.
En Matlab la función que me permite realizar un filtro de la media será: imfilter
Esta función tiene la siguiente estructura:

14
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

B = imfilter(A,H,option1,option2,...)
Esta función filtra el array A con el filtro multidimensional H, el resultado se almacena en B.
Los parámetros option1, option2,…, son opciones de frontera, de tamaño del array de salida
y opciones de correlación o convolución.

La función de Matlab que me permite generar el filtro H será fspecial.


La función fspecial crea filtros bidimensionales del tipo especificado por type.
h = fspecial(type,parameters)
El valor de type puede ser un filtro pasa baja gaussiano, un detector de bordes de sobel o
prewitt, un operador laplaciano, un filtro de la media, etc.
Los parámetros dependen del tipo de filtro.
Pongamos un ejemplo de aplicar el filtro de la mediana sobre una imagen “imagen2.jpg” a
la que se le ha introducido ruido aleatorio del tipo sal y pimienta, con una máscara de 3X3
y otra de 9X9.
im=imread('C:\MATLAB7\work\imagenes\imagen2.jpg');
fn=imnoise(im,'salt & pepper',0.05);
h1=fspecial('average');
h2=fspecial('average',[9,9]);
media1=imfilter(fn,h1);
media2=imfilter(fn,h2);
%Representaciones de las imágenes
subplot(2,2,1),subimage(im),title('Imagen original');
subplot(2,2,2),subimage(fn),title('Imagen con ruido');
subplot(2,2,3),subimage(media1),title('Filtro de media 3X3');
subplot(2,2,4),subimage(media2),title('Filtro de media 9X9');

15
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

En esta imagen puede apreciarse la importancia de definir el tamaño de la máscara. Cuanto


mayor sea ésta se consigue una mayor reducción del ruido, pero a cambio se produce una
mayor difuminación de los bordes.
En la imagen anterior se le ha añadido ruido con la función imnoise.
J = imnoise(I,type,parameters)
El ruido que se le puede introducir es variado. Podría introducírsele ruido gaussiano,ruido
multiplicativo, etc.

16
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Conclusión
Se puede concluir que a partir de una imagen es posible manejarla como uno quiera, ya sea
añadiendo ruido o eliminando este si es necesario, en este informe se efectuó el
mejoramiento de las imágenes en donde pueden ser utilizadas para el día a día. Se eliminó
el ruido que no deseamos de las imágenes, estos tipos de filtros son utilizados ampliamente
en la vida diaria de los profesionales en donde es muy útil ocupar el programa MatLab como
procesador de imágenes en el ámbito de filtrado de ellas.
A comparación de estas se pudo observar que el filtro Gaussiano elimino el ruido de mejor
manera al igual que mejorando los bordes de la imagen.

17
UNIVERSIDAD TECNOLÓGICA METROPOLITANA
FACULTAD DE INGENIERÍA
INGENIERÍA CIVIL ELECTRÓNICA
2018

Bibliografía

https://es.wikipedia.org/wiki/MATLAB
http://informatica.uv.es/doctorado/AIRF/ParteAI/tema3.pdf
http://www4.ujaen.es/~satorres/practicas/practica2.pdf
Libro Procesamiento Digital de Señales.

18

Anda mungkin juga menyukai