Está en la página 1de 118

Reconocimiento y

Procesamiento Digital de
Imágenes

M.C. Tirzo Antonio Medina


Cardenas
medina2966@hotmail.com
Introducción
• El Procesamiento Digital de Imágenes es un
área de la graficación por computadora muy
importante.

• Los fundamentos del Procesamiento Digital de


Imágenes están íntimamente relacionados con
el tratamiento de señales, por lo que se les
puede aplicar elementos como filtros,
transformación, detección, extracción de
elementos, entre otras cosas.
Procesamiento Digital de Imágenes
• Mejorar la calidad de las imágenes para su
posterior interpretación por una persona.

Objetivo:
 Remover objetos
 Remover problemas por movimiento o
desenfoque.
 Mejorar ciertas propiedades (color, contraste,
brillo, etc.).
Visión Artificial
• Extraer características de la imagen para su
descripción e interpretación por una
computadora.

Objetivos:
 Determinar la localización y tipo de objetos en
la imagen.
 Construir una representación tridimensional de
un objeto.
 Analizar un objeto para determinar sus
características.
Aplicaciones
Aplicación:

 Robótica móvil y vehículos autónomos.


 Manufactura (localización, identificación y
ensamblado de piezas).
 Interpretación de imágenes aéreas y de satélite.
 Análisis e interpretación de imágenes médicas.
 Interpretación de escritura, dibujos, planos.
 Análisis de imágenes microscópicas en química,
física, biología.
 Monitoreo de objetos y personas (control y
seguridad).
Aplicaciones
 Mediciones.
 Empaque.
 Robótica.
 Verificación de ensambles.
 Inspección Industrial.
 Inspección de Papel y Madera.
 OCR
Empaque
OCR
Inspección de Alimentos
Procesamiento
Calidad de la Imagen

Mala Buena
Iluminación
• La iluminación también juega un papel muy
importante en el proceso de adquirir buenas
imágenes aptas para procesamiento
Detección de Bordes
Segmentación
Segmentación
Proyectos de Visión Artificial
Proyectos de Visión Artificial
Experimento No. 8

MODULO DE LOCALIZACIÓN MODULO DE SEGUIMIENTO


Proyectos de Visión
Proyectos de Visión
Procesamiento de Visión Artificial

Representación
Segmentación y
descripción

Preprocesado

Base de Conocimientos Reconocimiento e


interpretación

Adquisición de la
imagen
Introducción
• La adquisición de la imagen consiste en la
obtención de una señal visual del mundo
analógico al digital (cámara fotográfica, video,
escáner, etc.).

• La limpieza consiste en eliminar aspectos como


el ruido al aplicar filtros o bien mejorar la
calidad de la imagen.
Introducción
• El proceso de segmentación consiste en
dividir la imagen en sus partes principales.

• Presentación y Descripción: en base a la


segmentación se describe cada parte.

• Interpretación y Reconocimiento: dado el


descriptor de un objeto se compara con la
descripción que se cuenta en la base de
conocimientos y se realiza una acción.
Introducción
• Base de Conocimientos: es un repositorio
donde se almacén la descripción de diversos
objetos que serán útiles en el reconocimiento
de patrones (formas visuales).

1 punto en
Normal 8 píxel
Introducción

256 Niveles de Gris 4 Niveles de Gris


Introducción

Ojo de Lena Valores del Ojo


Características de las Imágenes
• Antes de entrar a los algoritmos y métodos de
procesamiento digital de imágenes es
conveniente ver las características de las
imágenes.

• Histograma es una gráfica en el cual se cuenta


la frecuencia de color, es útil para cambiar la
intensidad de luz de una imagen respetado sus
atributos característicos.
Histograma

Histograma de Lena Normal

Histograma de Lena Obscuro


Ruido
• Se considera ruido a toda aquella variación de
la tonalidad de la imagen no debida a la luz
recibida.

• Existen diversos tipos de ruidos: correlados


(cuando depende de la posición del pixel), no
correlados (cuando depende de la posición del
pixel, se basan en distribuciones de
probabilidad como la Gaussiana) y los ruidos
aleatorios o de “sal y pimienta”.
Ruido

Normal
Ruido
Gaussiano

Ruido
Correlado Ruido
Aleatorio
Brillo
• Se define como brillo al nivel medio de gris de
una imagen.

Brillo Brillo
104 56
Contraste
• Es la variación de gris de un punto respecto al
brillo de la imagen. Se puede definir de forma
aproximada con bajo consumo de recursos
computacionales como:

• La definición correcta es:


Contraste

C1= 95.81% C1= 94.42%


C2= 26.45% C2= 10.56%
Nitidez
• Es la respuesta de la imagen ante cambios
bruscos de iluminación.
Nitidez
• La baja nitidez de una imagen puede estar
motivada por:
– Objetos fuera del rango de enfoque de la óptica.
– Deficiencias en el elemento sensor.
– Efectos de algoritmos de tratamiento de imágenes.
Nitidez

Nitidez 18.245% Nitidez 9.777%


Diferencia Cuadrática de Dos
Imágenes
• La diferencia es útil cuando se desea calcular el
grado de variación de una imagen obtenida con un
algoritmo de procesamiento de imagen con respecto
a la original.

• En donde Fr es la imagen base y f la imagen que se


desea analizar.
Diferencia Cuadrática de Dos
Imágenes

ECT=28.957,
ECN=26.536%
Transformaciones Punto a Punto
• Son las transformaciones más simple sobre
una imagen o señal.

• Las imágenes se pueden representar como


matrices de puntos, donde cada punto tiene
asociado un modelo de color.

• Un ejemplo básico sería la multiplicación por un


escalar.
Transformación Punto a Punto
• Algunos ejemplos de transformaciones
puntuales:
– Suma.
– Resta.
– Multiplicación.
– División.
– Máximo.
– Mínimo.
– Umbralización.
– Inversa.
Transformación Punto a Punto

Original Inversa
Adquisición de Imágenes
• Una imagen no es otra cosa que una señal
(función en el tiempo),la cual representa un
conjunto de puntos en un plano cartesiano y en
donde cada punto tiene asociado un valor de
intensidad (color) de un rango válido.

• Para este curso se utilizará Java en su forma


nativa (Clase PixelGrabber) así como algunas
otras APIs como J2ME
PixelGrabber
//Carga de una imagen
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;

public class Carga extends Frame{


Image imagen, imagenNueva;
int ancho, alto, insetArriba, insetIzqda;
PixelGrabber
Public Carga(){
imagen =
Toolkit.getDefaultToolkit().getImage("imagen_0
1.jpg");
MediaTracker tracker = new MediaTracker( this );
tracker.addImage( imagen,1 );

try {
if( !tracker.waitForID( 1,10000)) {
PixelGrabber
System.out.println( "Error en la carga" );
System.exit( 1 );}
} catch( InterruptedException e ){
System.out.println( e );}

ancho = imagen.getWidth( this );


alto = imagen.getHeight( this );
this.setVisible( true );
insetArriba = this.getInsets().top;
insetIzqda = this.getInsets().left;
PixelGrabber
this.setSize(insetIzqda+ancho,
insetArriba+(2*alto) );
this.setTitle( "Cargar una Imagen" );
this.setBackground( Color.yellow );
int[] pix = new int[ancho * alto];
try {
PixelGrabber pgObj = new
PixelGrabber( imagen,0,0,ancho,alto,pix,0,anch
o );
if( pgObj.grabPixels() && ( (pgObj.getStatus() &
ImageObserver.ALLBITS ) != 0 ) ) {
PixelGrabber
For ( int i=0; i < (ancho*alto); i++ ) {
System.out.println(“val=”+pix[i]);
}} else {
System.out.println( "Problemas al descomponer
la imagen" ); } } catch( InterruptedException
e){ System.out.println( e ); }

imagenNueva = this.createImage( new


MemoryImageSource(ancho,alto,pix,0,ancho ) )
;
PixelGrabber
this.addWindowListener(new WindowAdapter()
{public void windowClosing( WindowEvent evt )
{System.exit( 0 );}});}

public void paint( Graphics g ) {


if( imagenNueva != null ) {
g.drawImage( imagen,insetIzqda,insetArriba,this )
;
g.drawImage( imagenNueva,insetIzqda,insetArrib
a+alto,this );} }
PixelGrabber
public static void main (String args[]) {
Cargar obj = new Cargar();
obj.repaint();
}
}
Operador Identidad
• Este operador crea una imagen de salida que
es idéntica a la imagen de entrada.

• Función de transformación:
q p
Operador Identidad

Imagen 1 Transformación
Operador Inverso o Negativo
• Este operador crea una imagen de salida que
es la inversa de la imagen de entrada.

• Para una imagen con valores de gris en el


rango de 0 a 255 la función de transformación
es:

q  255  p
Operador Inverso o Negativo

Imagen 1 Transformación
Operador Umbral
• Se crea una imagen de salida binaria a partir
de una imagen de grises, donde el nivel de
transición está dado por el parámetro de
entrada p1.

• Función de transformación:

 0 para p  p1
q
 255 para p  p1
Operador Umbral

Imagen 1 Transformación

p1  150
Operador Umbral Binario
• Esta clase de transformación crea una imagen
de salida binaria a partir de una imagen de
grises, donde todos los valores de gris cuyo
nivel está en el intervalo definido por p1 y p2
son transformados a 255, y todos los valores
fuera de ese intervalo a 0.

• Función de transformación:

 255 para p  p1 ó p  p2
q
 0 para p1  p  p2
Operador Umbral Binario
Operador Intervalo Umbral Binario

Imagen 1 Transformación

p1  40 p2  190
Operador Intervalo Umbral Binario
Invertido
• Esta clase de transformación crea una imagen
de salida binaria a partir de una imagen de
grises, donde todos los valores de gris cuyos
niveles están en el intervalo definido por p1 y
p2 son transformados a 0, y todos los valores
fuera de ese intervalo a 255.

• Función de transformación:
 0 para p  p1 ó p  p2
q
 255 para p1  p  p2
Operador Intervalo de Umbral
Binario Invertido
Operador Intervalo de Umbral
Binario Invertido

Imagen 1 Transformación

p1  40 p2  190
Operador Umbral Escala de Grises
Se crea una imagen de salida con los únicos
valores de nivel de gris comprendidos en el
intervalo definido por p1 y p2, y el resto a 255.

Función de transformación:

 255 para p  p1 ó p  p2
q
 p para p1  p  p2
Operador Umbral Escala Grises

Imagen 1 Transformación

p1  40 p2  190
Operador Umbral Escala Grises
Invertido
• Se crea una imagen de salida con los únicos
valores de nivel de gris invertidos
comprendidos en el intervalo definido por p1 y
p2, y el resto a 255.

• Función de transformación:

 255 para p  p1 ó p  p2
q
 255  p para p1  p  p2
Operador Umbral Escala de Grises
Invertido

Imagen 1 Transformación

p1  40 p2  190
Operador de Extensión
• Proporciona una imagen de salida con la
escala de grises completa correspondiente al
intervalo de entrada definido por p1 y p2, y
suprime todos los valores fuera de este rango.

• Función de transformación:


 0 para p  p1 ó p  p2
q
255
 ( p  p1 ) para p1  p  p2
 p2  p1
Operador de Extensión

Imagen 1 Transformación

p1  40 p2  190
Operador de Reducción del Nivel
de Gris
• Proporciona una imagen de salida con un
menor número de niveles de gris respecto de la
imagen original de entrada, la imagen de
entrada es reducida a n+1 niveles de gris.

• Función de transformación:
0 para p  p1
q para p  p  p 2
 1 1

q  q2 para p2  p  p3
...

qn para pn 1  p  255
Transformaciones de 2 imágenes
• La transformación de dos imágenes
generalmente hace referencia a que se utiliza
otra matriz para modificar cierto aspecto de los
atributos de la señal original. Por ejemplo la
intensidad, los tonos de luz, etc.

• Se pueden utilizar algunos operadores como la


multiplicación, suma de matrices, entre otras.
Transformación de Dos Imágenes
• Algunos ejemplos de operaciones son:
– Suma.
– Resta.
– Multiplicación.
– División.
– Máximo.
– Mínimo.
– AND.
– OR.
– XOR.
Transformación de dos Imágenes

Imagen
original con ruido
Gausiano

Diferencia
Diferencia multiplicad
entre las a por 6
imagen
Transformaciones de Dos
Imágenes

Original Umbralizada Imagen Inversa de la Mínimo de la Inversa


128 Umbralizada 128 Umbralizada 128 y la
original
Transformación Punto a Punto
• Para esta transformación se utilizan 2
imágenes de entrada A y B, para crear una
nueva imagen C.

• La dimensión de las imágenes es la misma.

• La función de la transformación fD puede ser


lineal o no.

• Esta función se aplica a todos los pares de


pixeles en las imágenes de entrada.
Transformación Punto a Punto
• La función característica esta dada por la
siguiente ecuación:

c x , y  f D (a x , y , bx , y )

• La función fD puede ser adición, sustracción,


multiplicación, división, exponenciación,
máximo, o cualquier otra función que se pueda
definir.
Transformación Punto a Punto
• La función deberá tener un factor de escala
apropiado k para mantener los valores de
salida dentro de un rango adecuado, así como
para evitar desbordamientos y valores
negativos.

• La transformación implica dos variables


asociadas con los pares de pixeles:

Rx , y  f D (a ( x, y ), b( x, y ))
Transformación Punto a Punto
Suma (Adición)
• La adición puede utilizarse para reducir los
efectos del ruido en la imagen.

• El valor de salida es: c x , y  (a x , y  bx , y ) / k

• Donde k es 2 para el caso de las 2 imágenes


de entrada.

• Los valores de salida finales deben


redondearse por defecto o por exceso.
Sustracción
• La sustracción es técnica útil para detectar el
cambio producido en dos imágenes que han
sido captadas en 2 instantes de tiempo
diferentes.

• Los datos de ambas imágenes también pueden


representar pérdidas de calor o frío, o si la
fuente de datos es el espectro infrarrojo.
c x , y  k (a x , y  bx , y )
Sustracción
• Puesto que en el procesamiento de imágenes
se utilizan números positivos, es necesario
definir la salida de alguna manera que haga
todos los valores positivos, esto implica un
reescalado donde el valor mas negativo se
corresponde con el 0 y el máximo con el 255
para la escala de grises del 0 al 255.
Adición y Substracción

Imagen 2 Imagen 3

Suma 2+3 Resta 2-3


Operadores de Vecindad
• En esta transformación, el nuevo valor del pixel
en la imagen de salida, depende de la
combinación de los valores de los pixeles en la
vecindad del pixel de la imagen original que
esta siendo transformada.

• Lo que resta definir son los valores de la


ponderación, lo cual se hace generalmente
definiendo una máscara con valores
constantes, dicha máscara es un filtro.
Operadores de Vecindad
• Para la siguiente máscara:

 1 2 1
 0 0 0 

 1  2  1 

• El valor del pixel q(x,y) esta dado por la suma


ponderada, la cual nos da el efecto de
Repujado en Relieve:
q( x, y )  1  p ( x  1, y  1)  2  ( x, y  1)  1  p ( x  1, y  1) 
0  p ( x  1, y )  0  p ( x, y )  0  p ( x  1, y )
 1  p ( x  1, y  1)  2  p ( x, y  1)  1  p ( x  1, y  1)
Operadores de Vecindad

Imagen 1 Transformación
Operador Vecindad Mayor
Contraste
• Con la máscara siguiente se obtiene mayor
contraste:  0.1667  0.6667  0.1667 
 0.6667 4.3333  0.6667 
 
 0.1667  0.6667  0.1667 

Imagen 4 Transformación
Transformaciones Globales
• La transformación depende de todos los puntos
de la imagen. Pueden utilizarse estadísticos
como en la ecualización o máximos y mínimos
para el escalado de imágenes.
Transformaciones Globales

Imagen Original Imagen Ecualizada


Operaciones de vecindad
• Antes de ver los operadores de vecindad
conviene recalcar las formas en que ésta se
da.

Vecindad a 4 Vecindad a 8
Reducción de Ruido
• Los operadores de vecindad permiten definir
filtros para la eliminación de ruido en las
imágenes.

• El promedio del entorno de vecindad es un filtro


lineal en el cual se promedian los valores de
intensidad de un punto en base a sus vecinos.
Reducción de Ruido

Entorno
de
vecindad

Imagen
con ruido Imagen
gausisano Filtrada
s=5
Reducción de Ruido
• Existen otros filtros como los no lineales o
estadísticos. Donde el algoritmo y los
entornos de vecindad cambian.

• No todos los filtros aplican de la misma


manera a las imágenes por lo que se debe
probarlos.
Transformaciones lógicas
• Generalmente se utilizan máscaras para poder
encontrar alguna característica útil en las
imágenes:

– AND.
– OR.
– XOR.
Transformaciones Lógicas

Imagen 5 Imagen 6

Binarización de 5 (umbral= 128) Binarización de 6 (umbral= 128)


Transformaciones Lógicas

Negación de la Binarización Negación de la Binarización


de 5 de 6

Operación OR entre 5 y 6 Operación AND entre 5 y 6


Transformaciones Lógicas

Operación XOR entre 5 y 6 Transformación 5 <= 6


Transformaciones geométricas
• La imagen se transforma, realizándose un
cambio de variables pero no de dominio.

• La posición de cada píxel es función de la


posición del píxel correspondiente en la imagen
original, y viene determinada por una
transformación geométrica.
Transformaciones Geométricas
• Entre las más empleadas están:
 
– Homotecia.
– Zoom.
– Traslación.
– Rotación. Transformación de Hotelling.
– Warping. Corrección de distorsiones.
– Morphing.
Transformaciones Globales
• La imagen se transforma en globalmente, sin
considerar los píxels de forma individual,
realizándose un cambio de dominio. Entre las
más empleadas están:

• Transformada de Fourier.
• Transformada de Hadamard-Walsh.
• Transformada de Karhunen-Loève (KLT).
• Transformada discreta del coseno (DLT).
Transformaciones Globales
• Transformada de Hough.

• Cambio entre modelos del espacio de colores.

• Y sus correspondientes transformadas


inversas.
Detección de bordes.
• Se denomina borde en una imagen a cualquier
discontinuidad que sufre alguna función de
intensidad sobre los puntos de la misma.

• En la proyección bidimensional de una escena


tridimensional intervienen distintos tipos de
bordes:
Detección de Bordes
• Cambio brusco en la distancia cámara-objetos,
con normal continua (dc) o con discontinuidad
en la normal (dnc).

• Cambio en la normal del objeto (n).


• Cambio en la reflectancia del objeto (r).
• Cambio en la proyección de la luz incidente (s).
Detección de Bordes
Detección de Bordes

Realce de Bordes Aplicación del


Imagen Original
Operador Sobel Umbral
Detección de Bordes
• También se utilizan los gradientes.

• La detección de bordes es la primera parte


para la segmentación. Consiste en determinar
los cambios de intensidad de los pixeles, es
muy sensible al ruido.

• Esta técnica nos permitirá más adelante extraer


características de las regiones de la imagen.
Extracción de Regiones
• Una vez que se ha podido segmentar una
imagen, es posible extraer toda la información
de una imagen, la cual no es otra cosa que otra
matriz.

• A esa matriz se le pueden hacer


comparaciones como por ejemplo para detectar
el reconocimiento de escritura en un PDA o el
reconocimiento de una huella digital.
Detección de Movimiento
• La detección de movimientos ocurre cuando se
realiza una comparativa entre dos imágenes muy
similares.

• Se debe realizar una segmentación de la imagen


para poder ubicar un área sobre la cual trabajar y
notar las diferencias.

• Las imágenes deben tener las mismas


características.
Detección de Movimiento
• Cualquier dispositivo de adquisición de video
debe permitir el poder almacenar y manipular
imágenes de manera individual.

• Al detectar movimiento surgen algunas


preguntas de interés:

• ¿Cómo detectar el movimiento de un ojo?


• ¿Cómo detectar el movimiento de una persona?
Detección de Movimiento
• ¿Qué ocurre cuando una imagen es totalmente
diferente a otra?

• Para auxiliarse en la detección de movimiento


se suele utilizar puntos clave que ayuden a
detectar los movimientos. En un cuerpo
humano esos puntos clave son generalmente
las extremidades: codos, rodillas, tobillo,
dedos, etc. y depende de lo que se va a tratar
de detectar.
Detección de objetos 3D
• Para poder detectar figuras en 3D se ocupan tener
conocimiento de cómo está formado la imagen.

• En imágenes bidimensionales se tienen que


detectar bordes que puedan definirnos el volumen
de un objeto.

• Tambien se pueden utilizar imágenes del mismo


objeto desde diferentes puntos de vista.
Detección de objetos 3D
• En algunos casos se analizan las imágenes
desde diferentes ángulos y se trata de
reconstruir las imágenes en 3D.

• Por ejemplo se trata de aplicar las tomografías


desde diferentes cortes para poder definir un
modelo en 3D del cerebro.
Transformaciones Lógicas
• Dentro de las operaciones básicas se
encuentra la binarización de una imagen,
donde la imagen de salida sólo posee 2 niveles
de gris, 0 y 255.

• Si se considera los números anteriores como el


0 lógico y el 1 lógico se obtiene una imagen
binaria lógica.
Transformaciones Lógicas
• Con una imagen de estas características es
posible realizar operaciones lógicas, entre ellas
negación, and, or, xor.

• También, dadas 2 imágenes, es posible realizar


sobre ellas otro tipo de operaciones
relacionales, tales como <, >, <=, >=, por
ejemplo, dadas las imágenes A y B, una nueva
imagen C = (A<=B), se obtiene realizando la
comparación dada pixel a pixel y obteniendo el
valor de 1 para C en aquellos pixeles donde se
cumple la relación y 0 donde no se cumple.
Transformadas Geométricas
• El objetivo fundamental de una operación
geométrica es la transformación de los valores
de una imagen tal y como podría observarse
desde otro punto de vista.

• Las operaciones de ampliar o reducir una


imagen, no es sino aproximar o alejar el punto
de vista, rotarla equivale a girar el punto de
observación, trasladarla es hacer lo propio con
dicho punto.
Transformaciones Geométricas
• En una imagen original, los pixeles se
encuentran dentro de una estructura matricial
(retícula) es decir, una rejilla.

• Al transformar esta rejilla según un


desplazamiento, un giro o un acercamiento, los
nuevos pixeles ya no tienen por qué quedar
situados sobre tales intersecciones y caerán,
por lo general, sobre puntos intermedios de
ellos.
Transformaciones Geométricas
Transformaciones Geométricas
• Para encontrar los nuevos puntos se requiere
interpolar.

• La interpolación puede considerarse como el


cálculo del valor de intensidad de un pixel, en
una posición cualquiera, como una función de
los pixeles que le rodean.

• Una forma de hacerlo es suponer que el pixel


toma el mismo valor que el mas cercano de
entre los cuatro que le rodean.
Transformaciones Geométricas
• Para decidir cual es el mas cercano se puede
utilizar la distancia Euclídea.

• Una forma de interpolar con mejores resultados


pero con mayor costo computacional es la
interpolación bilineal, la cual asigna al pixel en
cuestión un valor medio ponderado de las
intensidades de los 4 pixeles que le rodean.

• Los factores de ponderación vienen dados por


la distancia entre el pixel y los del entorno.
Transformaciones Geométricas
Referencias
• Súcar, E, Gómez, G, Procesamiento de
Imágenes y Visión Computacional,
Departamento de Computación, Tecnológico
de Monterrey Campus Cuernavaca.

• http://isa.umh.es/titere/tutorial/vision/

• Ferreira, R. (2009), Procesamiento Digital de


Imágenes con Java, Flisol, Morelia.
Referencias
• González, R., et al., (2007) Digital Image
Processing, Addisson-Wesley, Estados Unidos.

También podría gustarte