Vision Artificial
Vision Artificial
Vision Artificial
Y PROCESAMIENTO
DE IMAGENES
DEFINICION
Se puede definir la “Visión Artificial” como un campo de la “Inteligencia Artificial” que,
mediante la utilización de las técnicas adecuadas, permite la obtención,
procesamiento y análisis de cualquier tipo de información especial obtenida a través de
imágenes digitales.
La visión artificial la componen un conjunto de procesos destinados a realizar el
análisis de imágenes. Estos procesos son: captación de imágenes, memorización de la
información, procesado e interpretación de los resultados.
Cuando (x, y) y f son todos finitos (cantidades discretas) llamamos a la función como
imagen digital. Es decir, una imagen digital estará compuesta por un número finito de
elementos llamados pixeles, cada uno de los cuales con un valor y una posición particular.
El valor es relativo a alguna propiedad del punto que representa, como por ejemplo su
brillo o su matiz.
Algunos formatos de este tipo de imágenes son: DWG (autoCAD), SWF y FLA (Fiash).
CLASIFICACION DE IMAGENES DIGITALES
IMÁGENES RASTER O MAPAS DE BIT
Las imágenes raster constan de un número fijo de píxeles y, por tanto, dependen de la
resolución. Las imágenes raster pueden perder detalle y verse dentadas (pixeladas) cuando
se amplían. Utilizan una cuadrícula rectangular de elementos de imagen (píxeles) para
representar las imágenes. A cada pixel se le asigna una ubicación y un valor de color
específico.
La ventaja que presenta este formato es la posibilidad de recoger una amplia gama tonal,
por lo que es el tipo adecuado para representar imágenes captadas de la realidad. En
cambio, la variación de tamaño supondrá modificaciones en la calidad, ya que el número de
celdas que forman la imagen permanece invariable, por lo que un aumento del tamaño hace
que el único recurso posible sea ampliar el tamaño de cada una de las celdas. Podemos
deducir que su tamaño es muy grande por la información de cada uno de los puntos que
forman la imagen.
Dentro de este tipo se encuentran muchos formatos, algunos de los cuales son soportados
directamente por los navegadores, siendo el tipo de imágenes con las que vamos a trabajar.
Estas imágenes son creadas por los escáneres y las cámaras digitales.
Entre los formatos mas conocidos tenemos: TIF, BMP, GIF, JPG, PNG, JPEG.
TIPO DE IMAGENES DIGITALES
IMAGENES RGB (Red-Green-Blue)
• Utilizan tres canales para reproducir los colores en la pantalla.
• Utilizan 8 bits por canal (8 bits x 3), es decir, 24 bits de color para cada pixel.
• Reproducen hasta 16,7 millones de colores.
• Sopona algunos formatos como: JPG, BMP, PNG, etc.
IMÁGENES INDEXADAS
• Reduce los colores de la imagen a un máximo de 256.
• Admiten los formatos GIF y PNG-8 y muchas aplicaciones multimedia.
• Reduce el tamaño de archivo porque elimina la información del color.
IMÁGENES EN ESCALA DE GRISES
• Utilizan distintos tonos de gris.
• En imágenes de 8 bits, puede tener hasta 256 tonos de gris.
• Cada píxel tiene un valor de brillo comprendido entre O (negro) y 255 (blanco).
IMÁGENES BINARIAS
• Tienen una profundidad de color de 1 bit.
• Utiliza uno de los dos valores de color (blanco o negro) para representar los píxeles de una
imagen.
COLORES PRIMARIOS – COLORES LUZ - SINTESIS ADITIVA - RGB
Los colores producidos por luces (en el monitor, televisión, cine, etc.) tienen como colores
primarios, al rojo, el verde y el azul (RGB) cuya fusión, crean y componen la luz blanca. Por
eso, a esta mezcla se la denomina, síntesis aditiva, y las mezclas parciales de estas luces
dan origen a la mayoría de los colores del espectro visible.
Para representar un color en el sistema RGB se le asigna un valor entre O y 255 (notación
decimal) o entre 00 y FF (notación hexadecimal) para cada uno de los componentes rojo,
verde y azul que lo conforman. El color rojo puro, por ejemplo, se especificará como
(255,0,0) en notación RGB decimal y #FFOOOO en notación RGB hexadecimal.
COLORES PRIMARIOS – COLORES PIGMENTO - SINTESIS SUSTRACTIVA - CMYK
El color magenta, el cyan y el amarillo son los colores básicos de las tintas que se usan en
la mayoría de los sistemas de impresión. La mezcla de los tres colores primarios pigmento
en teoría debería producir el negro, el color más oscuro y de menor cantidad de luz, por lo
cual esta mezcla es conocida como síntesis sustractiva.
El número de bits que se utiliza para representar cada pixel en el espacio RGB es llamado
profundidad de pixel. Así, una imagen RGB en que cada imagen roja, verde y azul es una
imagen de 8-bits tiene 24 bits de profundidad, puesto que cada pixel es una tripleta de
valores (R, G, B) y tiene un número total de 2^24 = 16,777,216 colores.
Cada pixel en una imagen de 24-bit, posee uno de los 256 valores de brillo para el rojo,
verde y azul.
MODELOS DE COLOR - CMYK
El cyan, magenta y amarillo son los colores secundarios de la luz o bien los colores primarios
de los pigmentos. Los dispositivos que depositan pigmentos coloreados sobre papel (como
impresoras y fotocopiadoras en color) necesitan una entrada CMY o bien una conversión
interna de RGB a CMY. En la temía, la mezcla de los tres colores CMY da el negro, pero en
la práctica es de mala calidad, por lo que se incluye un cuarto color K que representa el negro.
Los sistemas RGB, CMYK se encuentran relacionados, ya que los colores primarios de uno
son los secundarios del otro (los colores secundarios son los obtenidos por mezcla directa de
los primarios).
Los modelos RGB y CMY no son útiles para describir los colores en términos prácticos para
la interpretación humana. Por ejemplo, una persona no se refiere al color de un auto dando
porcentajes del contenido de cada uno de sus colores primarios, sino que lo describe en
términos de su tono (H), saturación (S) y su brillo o intensidad (I).
Existen algunas utilidades de este modelo como el diseño de sistemas automáticos para
detectar el grado de maduración de frutas y vegetales, sistemas para comparar muestra~ de
color o inspeccionar la calidad de productos coloreados.
PROPIEDADES DEL COLOR
El Tono:
Es el matiz del color, es decir, el color en si mismo. Es s implemente un sinónimo de color.
Por ejemplo, el matiz de la sangre es rojo. Según su tonalidad se puede decir que un color es
rojo, amarillo, verde, etc.
Saturación:
Indica la concentración de color en el objeto. Puede ser definida por la cantidad de gris que
contiene un color: mientras más gris o más neutro es, menos brillante o menos "saturado" es.
Igualmente, cualquier cambio hecho a un color puro automáticamente baja su saturación.
Por ejemplo, decimos "un rojo muy saturado" cuando nos referimos a un rojo puro y rico.
Pero cuando nos referimos a los tonos de un color que tiene algún valor de gris, los llamamos
menos saturados.
Brillo o Valor:
Es la luminosidad de un color (la capacidad de reflejar el blanco). Alude a la claridad u
oscuridad de un tono. La luminosidad puede variar añadiendo negro o blanco a un tono.
CALIDAD DE UNA IMAGEN
La imagen digital, bien sea generada por el ordenador o creada a través de algún
dispositivo de captura, tal como una cámara digital o un escáner, aporta una principal
ventaja que es la estabilidad, mientras que la emulsión de una imagen fotográfica clásica
sufre una degradación química con el paso del tiempo, que repercute en la calidad de
dicha reproducción, los ceros y unos que componen una imagen digital permanecen
estables, con lo que la imagen no variará a lo largo del tiempo.
La calidad de la imagen raster es determinada en el proceso de captura por tres
factores: el tamaño del píxel (resolución espacial), la profundidad del píxel (resolución
de brillo) y el ruido.
El tamaño del pixel es determinado por el rango al cual el escáner muestrea la imagen. Un
intervalo de muestreo largo produce una imagen baja en resolución espacial. Un intervalo
mas corto produce una resolución espacial más alta, tal como se muestra en la figura
izquierda.
El brillo o valor de color de cada pixel es definido por un bit o un grupo de bits. Mientras
más bits se usen, más alta es la resolución de brillo, (figura derecha).
CALIDAD DE UNA IMAGEN
Todas las imágenes tienen cierta cantidad de ruido, ya sea por la cámara, escáner o el
medio de transmisión de la señal. Generalmente el ruido se manifiesta como pixeles
aislados que toman un nivel de gris diferente al de sus vecinos y aparece como pequeñas
y aleatorias variaciones en el brillo y el color (ver figura). Los algoritmos de filtrado que se
verán más adelante, permiten eliminar o disminuir este ruido.
La resolución de una imagen es el número de pixeles que contiene una imagen, expresada
como 640 x 480, 800 x 600, por ejemplo. Es un término que debe ser considerado al utilizar
imágenes en determinados trabajos.
En general, una baja resolución de imagen se utiliza para:
Imágenes para páginas Web y correo electrónico.
La memoria de la cámara es limitada.
Se dispone de escaso espacio en disco duro para el almacenamiento de
imágenes.
En general, se debe recurrir a una resolución más alta si:
Las imágenes están destinadas a impresiones de alta resolución.
Se dispone de suficiente espacio de almacenamiento, tamo en la cámara como en el disco
duro.
CALIDAD DE UNA IMAGEN
La captura o adquisición es el proceso a través del cual se obtiene una imagen digital
utilizando un dispositivo de captura como una cámara digital, video cámara, escáner,
satélite, etc.
El pre procesamiento incluye técnicas tales como la reducción del ruido, realce del
contraste, realce de ciertos detalles, o características de la imagen.
La segmentación es el proceso que divide una imagen en objetos que sean de nuestro
interés de estudio.
El reconocimiento es el proceso que identifica los objetos, como por ejemplo: una
llave, un tornillo, moneda, coche, etc.
La historia del PDI se remonta a la década de los 60 y está directamente ligada con el
desarrollo y evolución de las computadoras. Su progreso ha ido de la mano con el
desarrollo de las tecnologías de hardware, ya que requiere un alto poder y recursos
computacionales para almacenar y procesar las imágenes. De igual manera el desarrollo
de los lenguajes de programación y los sistemas operativos han hecho posible el
crecimiento continuo de aplicaciones relacionadas al procesamiento de imágenes, tales
como: imágenes médicas, satelitales, astronómicas, geográficas, arqueológicas,
biológicas, aplicaciones industriales, entre otras.
Existe una amplia gama de áreas donde el PDI se utiliza de manera rutinaria para la
resolución de ciertos problemas, dependiendo de la fuente de energía, sean estas: rayos
gamma, rayos X, banda ultravioleta, banda infrarroja, banda visible, microondas, radio,
Ultrasonido.
• Sensores.
• Digitalizadores.
• Hardware especializado en el PDI.
• Computadora.
• Software.
• Dispositivos de almacenamiento: memoria, discos.
• Monitores: despliegue y visualización.
• Hardcopy: impresión, diapositivas, fotografías.
• Acceso a la Red: transmisión por cables ópticos, UTP, Wireless, etc.
• Adobe Photoshop
• Matlab (lmage Processing Toolbox y lmage Acquisition Toolbox).-
• Mathematica.
• Micromorph .
FUNDAMENTOS DEL PDI – RELACION ENTRE PIXELES
Un pixel p con coordenadas (x,y) tiene cuatro vecinos, dos horizontales y dos verticales,
cuyas coordenadas son: (x+1,y), (x-1,y), (x,y-1 ), (x,y+1 ). A este conjunto de píxeles se llama
vecindad 4 de p y se denota por N4(p) , ver la figura 3.5. Nótese que para cada uno de estos
píxeles hay una distancia de 1 (uno) desde p y que en los bordes de la imagen algunos de
estos píxeles quedarán fuera de la imagen.
Existen también 4 vecinos diagonales de p con coordenadas: (x+ 1,y+1), (x+1 ,y-1), (x-1,y-1 ).
(x-1,y+1) y se les denota por ND (p), ver la figura 3.6. Conjuntamente, N4(p) y ND (p) forman la
vecindad 8 de p denotada por N8 (p).
FUNDAMENTOS DEL PDI – CONECTIVIDAD
Distancia tablero de ajedrez(fig. derecha): en donde se observa que los 4-vecinos están a una
distancia unitaria del píxel central; si se desea que los 8-vecinos estén a la misma distancia se
toma:
RUIDO EN IMÁGENES
Todas las imágenes tienen cierta cantidad de ruido, la cual se puede deber a la cámara,
escáner o al medio de transmisión de la señal. Generalmente el ruido se manifiesta como
pixeles aislados que toman un nivel de gris diferente al de sus vecinos. Los algoritmos de
filtrado pem1iten eliminar o disminuir este ruido.
El ruido puede clasificarse en los siguientes tipos:
Gaussiano: Produce pequeñas variaciones en la imagen; generalmente se debe a diferentes
ganancias en la cámara, ruido en los digitalizadores, perturbaciones en la transmisión. Se
considera que el valor final del pixel sería el valor ideal más una cantidad correspondiente al
error que puede describirse como una variable aleatoria gaussiana.
Impulsional (sal y pimienta): el valor que toma el pixel no tiene relación con el valor ideal,
sino con el valor del ruido que toma valores muy altos o bajos (puntos blancos y/o negros)
causados por una saturación del sensor o por un valor mínimo captado, si se ha perdido la
señal en ese punto.
Multiplicativo: La imagen obtenida es el resultado de la multiplicación de dos señales.
MANEJO DE IMÁGENES
EN
MATLAB
SENTENCIAS EN MATLAB
Matlab almacena la mayoría de las imágenes como arreglos bidimensionales (matrices) en
los cuales cada elemento de la matriz corresponde a la intensidad de un pixel de la imagen.
Algunas imágenes, como las imágenes a color (RGB), requieren de un arreglo tridimensional,
donde en el primer plano en el espacio tridimensional representa la intensidad de rojo de los
píxeles, el segundo plano representa la intensidad de verde de los pixeles y el tercer plano
representa la intensidad de azul de los píxeles.
Para reducir el espacio en memoria requerido para almacenar imágenes, Matlab almacena
los datos en arreglos de 8 o 16 bits sin signo, clases uint8 y uint16, respectivamente.
Tipos de imágenes en Matlab
El toolbox de Procesamiento de Imágenes maneja cuatro tipos de imágenes básicos:
imágenes indexadas, imágenes con intensidad (escala de grises), imágenes binarías e
imágenes RGB.
Lectura de imágenes en Matlab
El comando imread lee una imagen desde no archivo gráfico. Sí la imagen es en escala
de grises, entonces devuelve una matriz bidimensional. Si la imagen es RGB, entonces
devuelve un arreglo tridimensional. Su sintaxis es:
I = imread('filename')
En Matlab se soportan los siguientes formatos de imagen: JPEG, TIFF, GIF, BMP,
PNG, HDF, PCX, XWD, ICO y CUR.
SENTENCIAS EN MATLAB
Ahora para mostrar la imagen en pantalla se puede usar el comando imshow.
I = imread('hola.jpg');
imshow(I)
Para mostrar una imagen en una nueva figura, utilice el comando figure:
Figure
imshow(l)
También puede usar el comando imview para desplegar una imagen en el visualizador de imágenes de
Matlab, por ejemplo:
imview(I)
Para acceder a cada pixel de la imagen se puede usar el comando impixel. Su sintaxis es:
valor= impixel(imagen, columna, fila);
SENTENCIAS EN MATLAB
whos (I)
AÑADIR RUIDO EN MATLAB
Para añadir ruido a una imagen, hacemos uso del comando imnoise. Su sintaxis es:
k = imnoise(i, tipo)
El tipo es una cadena de caracteres que puede tener uno de los siguientes va lores:
Ejemplo:
I= imread('pinguino.j pg'):
k = imnoise(l,'salt & pepper');
imshow(l)
figure , imshow(k)
CAPTURA O ADQUISICION
DE
IMAGENES
SECUENCIA DE COMANDOS PARA OBTENER INFORMACION DEL DISPOSITIVO
inf_adaptador=imaqhwinfo
inf_id=imaqhwinfo('inf_adaptador')
inf_form=imaqhwinfo('adaptador',id_dispositivo)
1 2
4
3
SECUENCIA DE COMANDOS PARA ACTIVAR WEBCAM Y TOMAR UNA FOTO
1. OPERACIONES ARITMÉTICAS
Las operaciones aritméticas más usadas en el procesamiento de imágenes son: suma,
resta, multiplicación y división. Para que se pueda llevar a cabo una operación aritmética,
ambas imágenes deben ser del mismo tamaño (ancho y alto).
Los comandos a usar :
2. OPERACIONES LÓGICAS
Las principales operaciones lógicas utilizadas en el procesamiento de imágenes son:
AND, OR, NOT, las cuales se aplican sólo a imágenes binarias. Los comandos a usar son:
1. OPERACIONES BASICAS SOBRE PIXELES
3. TRANSFORMACIONES GEOMÉTRICAS
Las transformaciones geométricas modifican las relaciones espaciales entre píxeles.
INTERPOLACIÓN
La interpolación es el proceso en el cual se estiman los valores de una imagen en una sección específica,
por ejemplo, cuando se amplía una imagen, en la nueva imagen existen más píxeles que en la imagen
original.
Dentro de Matlab los comandos imresize e imrotate utilizan interpolación bidimensional como paso
intermedio en sus procesos e implementa los siguientes métodos de interpolación: interpolación por el
vecino más próximo, interpolación bilineal e interpolación bicúbica. Los tres métodos de interpolación
funcionan de forma similar. Se asigna el valor del píxel interpolado calculando el promedio ponderado del
conjunto de píxeles hallados en la vecindad de dicho punto.
Los tres métodos difieren en el conjunto de píxeles que consideran:
- Vecino más próximo (nearest): al píxel interpolado se le asigna el valor del píxel que corresponde. Es el
método por defecto si no se especifica alguno.
- Interpolación bilineal (bilinear): el valor del píxel interpolado es el promedio ponderado de los píxeles
en la vecindad 2x2 más cercana.
- Interpolación bicúbica (bicubic): el valor del píxel interpolado es el promedio ponderado de los píxeles
presentes en la vecindad 4x4 más cercana.
2. OPERACIONES SOBRE EL HISTOGRAMA DE UNA IMAGEN
HISTOGRAMA
Un histograma ilustra en un gráfico cómo están distribuidos los píxeles de la imagen
mostrando la cantidad de píxeles en cada nivel de intensidad del color. El histograma indica
si la imagen contiene suficientes detalles en las sombras (en la parte izquierda del
histograma), en los medios tonos (en el centro) y las iluminaciones (en la parte derecha)
para realizar una corrección correcta.
Es un diagrama de barras, en el que sobre el eje de las abscisas se representan los
diferentes valores que pueden tomar los píxeles de una imagen, y en el eje de las
ordenadas, el número de píxeles que se encuentran en una imagen para ese valor de
cuantización.
El histograma de una imagen en niveles de gris proporciona información sobre el número de
píxeles que hay para cada nivel de intensidad (ver Figura). En imágenes en color RGB se
usan tres histogramas, uno por cada componente de color.
El histograma de una imagen se calcula en Matlab con el comando imhist y sólo se aplica a
imágenes indexadas o con intensidad (escala de grises).
A1=imread('Imag1.jpg')
imhist(A1)
2. OPERACIONES SOBRE EL HISTOGRAMA DE UNA IMAGEN
Ajuste de la Intensidad
La función imadjust puede ampliar, reducir, y en general, cambiar los rangos de intensidad
de la imagen de entrada a unos nuevos rangos en la imagen de salida. Se usa con
imágenes en niveles de grises y de color. Aumenta el contraste de la imagen de salida. Su
sintaxis es: J = imadjust(I);
Ejemplo:
I=imread('C:\Imagen\a1.jpg'); % lee una imagen indexada o con intensidad
I=rgb2gray(I);
J=imadjust(I);
subplot(211); imshow(I)
subplot(212); imshow(J)
Imagen Real Imagen con ajuste de Intensidad
3. OPERACIONES EN EL DOMINIO DE LA FRECUENCIA
Se ha visto que una imagen digital es una representación que se refiere directamente a la
intensidad luminosa de puntos del espacio, por lo que se dice que una imagen digital es una
representación en el dominio del espacio (o del tiempo). Existen otros tipos de
representaciones, que contienen la misma información, pero que no están en el dominio
del espacio. Es el caso de las representaciones en el dominio de la frecuencia.
Las representaciones en el dominio de la frecuencia, explican cómo se repiten ciertos
patrones de una imagen y, con ello, consiguen representar la información de tal imagen.
Este tipo de transformaciones de frecuencia se llevan a cabo para una amplia gama de
procesamientos, entre los cuales se encuentran: la convolución, el mejoramiento de
imágenes, la detección de características, compresión; además se pueden apreciar y alterar
directamente elementos como el ruido, los bordes, las texturas, etc.
Transformada de Fourier
La transformada de Fourier se encuentra implementada en Matlab en el comando fft (para
el caso unidimensional), fft2 (para el caso bidimensional) y fftn (para el caso
n-dimensional). Las transformadas inversas se encuentran en los comandos ifft (para el
caso unidimensional), ifft2 para el caso bidimensional e ifftn (para el caso n-dimensional).
3. OPERACIONES EN EL DOMINIO DE LA FRECUENCIA
Otro filtro de paso bajo es el filtro de la mediana. Éste se basa en sustituir el valor de un
píxel por el de la mediana del conjunto formado por el mismo y sus ocho vecinos.
Es una operación no lineal que se suele utilizar en el procesamiento de imágenes para
reducir el ruido "sal y pimienta". La mediana de filtrado es más efectiva cuando el objetivo
es reducir el ruido y al mismo tiempo preservar los bordes.
En Matlab este filtro se encuentra implementado en el comando medfilt2.
Ejemplo
I=imread('C:\Imagen\a1.jpg');
I=rgb2gray(I);
J = imnoise(I,'salt & pepper',0.02); % añade ruido a la imagen
K = medfilt2(J);
subplot(131); imshow(I)
subplot(132); imshow(J)
subplot(133); imshow(K)
a) CONJUNTOS
En una imagen binaria, los conjuntos existentes son puntos de un espacio 2D, cada
elemento es un punto de coordenadas (x,y) en el plano bidimensional de la imagen. Se
definen dos conjuntos (o planos):
En una imagen de niveles de gris puede ser representada como conjuntos cuyos
componentes se encuentran en un espacio 3D. En este caso, dos componentes de cada
elemento de un conjunto se refieren a las coordenadas del píxel, y el tercer componente
está relacionado con la intensidad.
2. ELEMENTOS DEL PROCESADO MORFOLOGICO
b) ELEMENTOS ESTRUCTURANTES
Examinar la estructura geométrica de una imagen usando como sonda un patrón de ajuste
que se denomina elemento estructurante (SE.). El SE puede tener cualquier tamaño y forma
(horizontal, vertical, cuadrado, circular, etc.).
En Matlab se encuentra implementado en el comando strel, el cual crea un elemento de
estructura morfológica. Su sintaxis se muestra a continuación:
SE = strel(forma, parámetros) % crea un elemento estructurante de una forma determinada.
Ejemplo:
se1 = strel('square',3) % Cuadrado de 3-por-3
se2 = strel('line',9,0) % Línea de longitud 9 y ángulo de 0 grados
se3 = strel('disk',3) % Disco de radio 3
se4 = strel(‘rectangle’,[3 5]) % rectangulo de base 5 y alto 3
2. ELEMENTOS DEL PROCESADO MORFOLOGICO
c) OPERADORES MORFOLÓGICOS
Ditalación
La dilatación expande los píxeles de la imagen sobre la que se aplica.
Erosión
La erosión adelgaza la imagen sobre la que se aplica siendo, en un sentido no estricto, opuesta a
la dilatación.
Apertura (Opening)
Erosión seguida de una dilatación. Elimina pequeños píxeles aislados que haya en la imagen.
Cierre (Closing)
Dilatación seguida de una erosión. Rellena los pequeños agujeros que existan en la imagen.
La Apertura/cierre eliminan picos positivos/negativos más estrechos que el elemento
estructurante.
En Matlab se encuentran implementados en los siguientes comandos: imdilate, imerode, imclose,
imopen respectivamente para crear un elemento estructurante, dilatar, erosionar, cierre y
apertura.
La sintaxis de cada uno se muestra a continuación:
J = imdilate(I, SE) % la imagen I puede ser binaria o en gris
J = imerode(I, SE) % la imagen I puede ser binaria o en gris
J = imclose(I, SE) % SE no puede ser un array de elementos estructurantes
J = imopen(I, SE) % SE no puede ser un array de elementos estructurantes
3. FILTROS MORFOLOGICOS
Los filtros morfológicos se realizan sobre una imagen en escala de grises o binaria usando
un elemento estructurante SE y resaltan objetos de color contrario al fondo.
Tenemos dos filtros:
1. Positivo (white top-hat): El resultado de esta operación es útil para resaltar detalles
en la presencia de sombras (pequeños detalles brillantes).
2. Negativo (black top-hat o bottom-hat): Su aplicación es fundamentalmente para
que resalte detalles oscuros sobre un fondo local blanco.
J= imtophat(I, SE);
J= imbothat(I, SE);
3. FILTROS MORFOLOGICOS
Otros comandos de matlab muy importantes en el procesamiento de imágenes que utilizan
la morfología matemática son los comandos bwmorph y imfill.
La función bwmorph realiza operaciones morfológicas en imágenes binarias. Su sintaxis es:
BW2 = bwmorph(BW, operación)
La operación aplica una determinada operación morfológica sobre la imagen binaria BW. Es
una cadena de caracteres que puede tomar algún valor de los permitidos. En la tabla se
listan algunos:
La función imfill nos permite rellenar regiones (los agujeros) de una imagen binaria o en
escala de grises. Su sintaxis es: bw = imfill (Imagen_binaria, 'holes')
SEGMENTACION
INTRODUCCION A LA SEGMENTACÓN
La segmentación es un proceso que consiste en dividir una imagen digital en regiones
homogéneas o similares con respecto a una o más características (como por ejemplo el brillo,
el color, tamaño, longitud, forma) con el fin de facilitar su posterior análisis y reconocimiento
automático. Es una de las áreas más importantes y complejas de la visión artificial, la cual ha
sido estudiada extensamente y continúa siendo tema de discusión.
Algunos ejemplos de problemas de segmentación son: localizar los ojos de una persona
dentro de la imagen de una fotografía, separar los caracteres dentro de una imagen de un
texto, localizar los vehículos en una calle dentro de una imagen, detectar ciertos tipos de
células en imágenes médicas, o en general, cuando se trata de separar ciertos objetos de un
fondo en una imagen cualquiera.
Los algoritmos de segmentación de imágenes generalmente se basan en dos propiedades
básicas de los niveles de gris de la imagen: Discontinuidad y Similitud.
Dentro de la primera categoría se intenta dividir la imagen basándonos en los cambios
bruscos en el nivel de gris. Las áreas de interés en esta categoría son la detección de puntos,
líneas y bordes en la imagen.
Las áreas dentro de la segunda categoría están basadas en las técnicas de umbrales,
crecimiento de regiones, y técnicas de división y fusión. En este apartado trataremos
solamente las técnicas basadas en umbrales y regiones.
No existe un método universal de segmentación. Está íntimamente ligada con la tarea que se
va a resolver y termina cuando satisface los objetivos del observador, es decir, cuando se
hayan detectado todos los objetos de interés para la aplicación.
1. SEGMENTACIÓN BASADO EN UMBRALIZADO
La umbralización es un proceso que permite convertir una imagen de niveles de gris o en
color en una imagen binaria, de tal forma que los objetos de interés se etiqueten con un valor
distinto de los píxeles del fondo.
Si bien hay diferentes métodos para hallar un umbral, la mayoría de ellos no dan buenos
resultados cuando se trabaja con imágenes del mundo real, debido a la presencia de ruido,
histogramas planos o una iluminación inadecuada. Por el contrario, el método de Otsu fue
uno de los mejores métodos de selección de umbral para imágenes del mundo real, sin
embargo, necesita mucho más tiempo para seleccionar el umbral óptimo. La importancia del
método de Otsu radica en que es automático, es decir, no necesita supervisión humana ni
información previa de la imagen antes de su procesamiento.
Matlab posee la función graythresh, que calcula el umbral de la imagen global utilizando el
método de Otsu. Su sintaxis es:
T = graythresh(I)
La segmentación por regiones es utilizada para separar los objetos de interés. En este caso, la
imagen es particionada en diferentes regiones, quedándose cada una relacionada en ciertas
características y conjuntos de píxeles conectados. Así, a partir de la segmentación de la
imagen en regiones, pueden ser realizadas las medidas sobre cada región y las relaciones
entre las regiones adyacentes pueden ser establecidas.
Sea R la región correspondiente a la imagen que se va a segmentar. Vamos a ver el proceso de
segmentación como un proceso en el cual dividimos la región R en n subregiones R1, R2, . . .
,Rn, tal que:
La ecuación indica que la segmentación debe ser completa, es decir, que todo píxel debe
estar en una región.
2. SEGMENTACIÓN POR REGIONES – CRECIMIENTO POR REGIONES
Como el nombre indica, el crecimiento de regiones es un procedimiento mediante el cual se
agrupan píxeles o subregiones en regiones mayores. El procedimiento más sencillo se
denomina agregación de píxeles, que comienza a partir de un conjunto de píxeles semilla
(puntos de partida), de forma que a partir de cada semilla se crecen regiones añadiendo
píxeles a dicha semilla de entre aquellos píxeles vecinos que tienen propiedades similares. El
resultado de la segmentación dará lugar, como mucho, a tantas regiones como semillas haya.
Sin embargo, puede darse el caso de que dos de esas semillas correspondan a píxeles de la
misma región. En este caso el crecimiento desde una de las semillas absorberá a la otra.
Dos problemas fundamentales en el crecimiento de regiones son: por un lado, la selección de
las semillas que representen adecuadamente a las regiones de interés; y por otro, la elección
de las propiedades adecuadas que permitan ir añadiendo píxeles durante el proceso de
crecimiento.
La selección de los puntos de partida en muchos casos depende de la naturaleza de la imagen
que se va a segmentar. Por ejemplo, en aplicaciones militares con imágenes de infrarrojos, los
blancos de interés normalmente desprenden calor, por lo que corresponden a píxeles claros
frente a fondo oscuro. En este caso, los píxeles claros son una elección natural para las
semillas.
La selección del criterio de similitud depende no sólo del problema considerado, sino también
del tipo de imagen disponible. En cualquier caso siempre hay que tener en cuenta la
conectividad durante el proceso de crecimiento para que el resultado tenga significado dentro
de su contexto.
2. SEGMENTACIÓN POR REGIONES – CRECIMIENTO POR REGIONES
Un ejemplo del criterio de similitud empleado para el crecimiento puede ser que el valor
absoluto de la diferencia entre los niveles de gris del píxel candidato y la semilla, no exceda el
diez por ciento de la diferencia entre el mayor nivel de gris de la imagen completa y el menor.
Además los píxeles agregados a la región deben tener conectividad tipo ocho con respecto a
los píxeles ya incluidos en la región.
Bwlabel.- Etiqueta los componentes conectados en una imagen binaria. Su sintaxis es:
L = bwlabel(bw, n)
Donde retorna una matriz L del mismo tamaño de la imagen bw, que contiene etiquetas
para los objetos conectados en bw. El valor de n puede ser 4 u 8, donde especifica objetos
4-conectados y 8-conectados respectivamente. Si el argumento n se omite, el valor es 8.
Ejemplo:
I = imread('imagen.jpg');
umbral = graythresh(I); % Calcula el umbral entre [0 1]
I = im2bw(I, umbral); % binariza la imagen
L = bwlabel(I); % Crea regiones (etiqueta componentes conectados)
max(max(L)) % Imprime el número de objetos etiquetados
2. SEGMENTACIÓN POR REGIONES – CRECIMIENTO POR REGIONES
Regionprops.- Mide las propiedades de las regiones de una imagen. Su sintaxis es:
STATS = regionprops (L, propiedades)
Devuelve la medida de un grupo de propiedades para cada región etiquetada en la matriz L.
La tabla siguiente muestra algunas de las propiedades válidas para el comando regionprops.
2. SEGMENTACIÓN POR REGIONES – CRECIMIENTO POR REGIONES
%leo imagenes
img1=imread('C:\Imagen\fig1.png');
img2=imread('C:\Imagen\fig2.jpg');
img3=imread('C:\Imagen\fig3.jpg');
%convierto imágenes a escala de grises
img2_gris=rgb2gray(img2);
img3_gris=rgb2gray(img3);
%calculo los umbrales de las imágenes escala de grises
umbral_img2 = graythresh(img2_gris);
umbral_img3 = graythresh(img3_gris);
%binarizo las imágenes escala de grises
img2_umb = im2bw(img2_gris, umbral_img2);
img3_umb = im2bw(img3_gris, umbral_img3);
%etiqueteo las imagenes
L_img1 = bwlabel(img1);
L_img2 = bwlabel(img2_umb);
L_img3 = bwlabel(img3_umb);
%calculo de las regiones
stats_img1 = regionprops(L_img1, 'all');
stats_img2 = regionprops(L_img2, 'all');
stats_img3 = regionprops(L_img3, 'all');