Documentos de Académico
Documentos de Profesional
Documentos de Cultura
N
: Matriz deseada de la imagen
N
: Desviacin estndar deseada de la imagen
g
N
: Matriz de la imagen normalizada
En el desarrollo de este estudio, la frmula 2.10 se adopta la ecuacin para
la implementacin de la normalizacin. Para la muestra del efecto de
normalizacin de una imagen se realiza bajo dos condiciones de iluminacin
diferentes como muestra la siguiente figura 5 (7).
Figura 1.5. Efecto del proceso de normalizacin
(a) Imagen con iluminacin
(b) Normalizacin de la imagen con iluminacin alta
(c) Imagen con iluminacin baja
(d) Normalizacin de imagen con iluminacin baja
17
o Proceso de insercin
Aunque la imagen normalizada ofrece un dominio invariante a todas las
distorsiones geomtricas, la implementacin discreta del proceso de
normalizacin y su proceso inverso produce una degradacin visual a la
imagen, debido a los procesos de interpolacin. Por lo tanto, en el algoritmo
propuesto en vez de insertar la marca de agua en la imagen normalizada, el
patrn de marca de agua es normalizada antes de su insercin, la
normalizacin de la imagen original es usada solamente para determinar la
energa de insercin adecuada, por lo que la insercin de marca de agua se
lleva a cabo en el dominio espacial de la imagen sin normalizar (8). En esta
seccin se describe la creacin del patrn de marca de agua y el proceso de
insercin del mismo como sigue:
a) Aplicar el procedimiento de normalizacin de imgenes descrito en la
seccin anterior a la imagen original para generar una imagen
normalizada.
b) Dividir la imagen normalizada en bloques de 8x8 pxeles y seleccionar los
bloques con textura fuerte. Para estimar una complejidad de textura de
cada bloque de la imagen normalizada. Primero, los coeficientes de DCT
de cada bloque son cuantificados usando una matriz de cuantificacin
que usa una codificacin de entropa de JPEG. Si el k-simo bloque F
k
(u,
v), 0 u,v 7 satisface la condicin, este bloque es clasificado como
textura fuerte, en otro caso el bloque pertenece a una textura dbil.
La figura 6 (8) muestra un ejemplo de normalizacin de imgenes, en la
cual, (c) es la imagen normalizada de ambas imgenes (a) original y (b)
distorsionada geomtricamente.
18
Figura 1.6. Normalizacin de imgenes
(a) Imagen original
(b) Versin distorsionada de la imagen
(c) Imagen normalizada obtenida de ambas imgenes
1.1.3 Proceso de nivel medio
Segmentacin de la imagen
La segmentacin de una imagen implica la deteccin, mediante
procedimientos de etiquetado deterministas o estocsticos, de los contornos
o regiones de la imagen, basndose en la informacin de intensidad o/y la
informacin espacial.
Para las imgenes a nivel de gris, una de las tcnicas ms clsica y simple
de segmentacin supone la determinacin de los modos o agrupamientos del
19
histograma, lo cual permite une clasificacin o umbralizacion
8
de los pixeles
en regiones homogneas (9). Este mtodo se puede generalizar a las
imgenes multiespectrales, teniendo en cuenta que la segmentacin de las
imgenes en color implica inicialmente la eleccin de un espacio de
representacin para el color.
Los algoritmos de segmentacin de imagen generalmente se basan en dos
propiedades bsicas de los niveles de gris de la imagen: discontinuidad y
similitud. Dentro de la primera categora se intenta dividir la imagen
basndonos en los cambios bruscos en el nivel de gris. Las reas de inters
en esta categora son la deteccin de puntos, de lneas y de bordes en la
imagen. Las reas dentro de la segunda categora estn basadas en las
tcnicas de umbrales, crecimiento de regiones, y tcnicas de divisin y
fusin. Segn el grado de asociacin entre las operaciones de segmentacin
y las de reconocimiento, se distinguen tres tipos principales de mtodos de
segmentacin:
- Los Mtodos explcitos o segmentacin en unidades fsicas:
Estos mtodos, intervienen avanzando el proceso de reconocimiento.
Las partes segmentadas se dividen prcticamente en letras, tanto que la
segmentacin se considera una parte del proceso de reconocimiento.
- Los Mtodos de segmentacin implcita o segmentacin en
unidades lgicas:
Los mtodos implcitos, consisten generalmente en una segmentacin
ms fina y as conseguir los puntos de corte correctos. Las partes
segmentadas son llamadas grafemas. Estos se usarn ms adelante,
durante el proceso de reconocimiento/ clasificacin. Los grafemas
8
La umbralizacion o binarizacion suele ser uno de los primeros pasos de los algoritmos de anlisis de
imgenes. El objetivo de binarizar una imagen es convertir dicha imagen a una representacin de dos
niveles como puede ser una imagen en blanco y negro.
20
estarn compuestos por fragmentos de caracteres, caracteres o grupos
de caracteres.
- Los Mtodos de segmentacin implcitos y exhaustivos:
En este caso, es el reconocimiento quien gua la segmentacin, as que
el sistema de evaluacin que se aplica aqu implica un reconocimiento
por clculo de las posiciones sucesivas de la imagen y escoger las
posiciones de segmentacin que se correspondan con las responsables
de las partes ms significativas.
o Deteccin de Discontinuidades
En esta seccin se presenta varias tcnicas para detectar varios tipos de
discontinuidades: puntos, lneas y bordes. El mtodo ms comn de
buscar discontinuidades es la correlacin de la imagen con una mscara.
En la gura 7 se puede ver un caso general de mscara de 3 3 (10).
En este procedimiento se realiza el producto de los elementos de la
mscara por el valor de gris correspondiente a los pixeles de la imagen
encerrados por la mscara. La respuesta a la mscara de cualquier pixel
de la imagen viene dado por la ecuacin siguiente:
(2.11)
Donde zi es el nivel de gris asociado al pixel de la imagen con coeciente
de la mscara wi. Como suele ser habitual, la respuesta de la mscara
viene referida a su posicin central. Cuando la mscara est centrada en
un pixel de borde de la imagen, la respuesta se determina empleando el
vecindario parcial apropiado.
21
Figura 1.7. Mscara 3 3
o Deteccin de Puntos
La deteccin de puntos aislados es inmediata. Empleando la mscara de
la figura 8 (10), vamos a decir que se ha detectado un punto en la
posicin en la cual est centrada la mscara |R| > T.
Donde T es un umbral. Bsicamente se mide la diferencia entre el pixel
central y sus vecinos, puesto que un pixel ser un punto aislado siempre
que sea suficientemente distinto de sus vecinos. Solamente se
considerarn puntos aislados aquellos cuya diferencia con respecto a sus
vecinos sea significativa.
Figura 1.8. Mscara usada para la deteccin de punto aislados.
22
o Deteccin de Lneas
En este caso se consideran las mscaras de la figura 10. Si pasamos la
primera de las mscaras a lo largo de la imagen, tendr mayor respuesta
para lneas de ancho un pixel orientadas horizontalmente.
Siempre que el fondo sea uniforme, la respuesta ser mxima cuando la
lnea pase a lo largo de la segunda fila de la mscara. La segunda
mscara de la figura 9 (10 pg. 450) responder mejor a lneas
orientadas a 45; la tercera mscara a lneas verticales; y la ultima a
lneas orientadas a 45.
Figura 1.9. Mascaras de lnea
Estas direcciones se pueden establecer observando que para la
direccin de inters las mscaras presentan valores mayores que para
otras posibles direcciones. Si denotamos con R1, R2, R3 y R4 las
respuestas de las cuatro mscaras de la figura 3 para un pixel en
particular, entonces si se cumple que |Ri| > |Rj | con j 6= i, ser ms
probable que dicho pixel est asociado a la direccin correspondiente a
la mscara i.
o Deteccin de Bordes
La deteccin de bordes es el procedimiento empleado ms
habitualmente para la deteccin de discontinuidades. Un borde se define
como la frontera entre dos regiones con nivel de gris relativamente
23
diferente. Vamos a suponer a partir de ahora que las regiones de inters
son suficientemente homogneas de modo que la transicin entre dichas
regiones se puede determinar empleando exclusivamente las
discontinuidades en el nivel de gris.
La idea bsica detrs de cualquier detector de bordes es el clculo de un
operador local de derivacin. En la parte derecha se puede ver una
imagen de una banda clara sobre un fondo oscuro, el perfil a lo largo de
una lnea horizontal y la primera y segunda derivada de dicho perfil. Se
puede observar que el perfil del borde se ha modelado como una
discontinuidad suave. Esto tiene en cuenta el hecho de que en las
imgenes reales los bordes estn ligeramente desenfocados.
Como se puede observar la primera derivada es positiva para cambio a
nivel de gris ms claro, negativa en caso contrario y cero en aquellas
zonas con nivel de gris uniforme. La segunda derivada presenta valor
positivo en la zona oscura de cada borde, valor negativo en la zona clara
de cada borde y valor cero en las zonas de valor de gris constante y justo
en la posicin de los bordes. El valor de la magnitud de la primera
derivada nos sirve para detectar la presencia de bordes, mientras que el
signo de la segunda derivada nos indica si el pixel pertenece a la zona
clara o a la zona oscura. Adems la segunda derivada presenta siempre
un cruce por cero en el punto medio de la transicin. Esto puede ser muy
til para localizar bordes en una imagen.
Aunque lo que llevamos dicho se refiere a perfiles unidimensionales, la
ex tensin a dos dimensiones es inmediata. Simplemente se define el
perfil en la direccin perpendicular a la direccin del borde y la
interpretacin anterior seguir siendo vlida. La primera derivada en
cualquier punto de la imagen vendr dada por la magnitud del gradiente,
mientras que la segunda derivada vendr dada por el operador
Laplaciano.
24
o Tcnicas de Umbrales
Supongamos que el histograma de los niveles de gris de una imagen I(x,
y) es el que se muestra en la figura 10(a) (10). La imagen I(x, y) est
compuesta de objetos claros sobre fondo oscuro de tal forma que los
niveles de gris est agrupados en dos modos predominantes. Una forma
de separar los objetos del fondo consiste en seleccionar un umbral T que
separe esos modos
9
.
Entonces, cualquier punto (x, y) para el que se cumpla que:
I(x, y) > T (1.12)
Se lo etiqueta como objeto; en otro caso, como fondo. La figura 10(b)
muestra el histograma de otra imagen en un caso ms general.
Figura 1.10.histogramas de nivel de gris que se pueden segmentar
con (a) un nico umbral y (b) con mltiples umbrales
En este caso el histograma de la imagen est caracterizado por tres
modos dominantes. Esto ocurrir cuando tengamos dos tipos de objetos
claros sobre fondo oscuro, por ejemplo. Se puede utilizar el mismo
principio para clasificar cada punto (x, y). Si T1 < I(x, y) T2 entonces se
9
Los mtodos de umbralizacion que se observaran en las siguientes paginas se puede encontrar en
mayor detalle en la referencia (35) de otra parte, un desarrollo matemtico mas extenso sobre la integral
de una imagen puede ser encontrado en (36 pgs. 137-154).
25
lo etiqueta como primer objeto, si I(x, y) > T2 como segundo objeto y si
I(x, y) T1 como fondo. En general, este tipo de clasificacin con varios
umbrales es menos viable, ya que es ms difcil determinar esos
umbrales que aslen de forma efectiva las regiones de inters,
especialmente cuando el nmero de modos del histograma aumenta. En
este caso es mejor emplear umbrales variables.
En general, un mtodo de umbral se puede ver como una operacin en la
que se hace un test de cada pixel con respecto a una funcin T de la
forma
T = T (x, y, p(x, y), I(x, y)] (1.13)
Donde I(x, y) es el nivel de gris del punto (x, y) y p(x, y) denota cualquier
propiedad local de ese punto (como por ejemplo el nivel de gris medio en
un vecindario centrado en (x, y)). El mtodo de umbral dar lugar a otra
imagen B(x, y) definida por:
(1.14)
En este caso un pixel con etiqueta 1 de la imagen B corresponder a
objetos, mientras que un pixel con etiqueta 0 corresponder al fondo.
Cuando T dependa slo del nivel de gris I(x, y) se denomina umbral
global (en la figura 11(a) se puede ver un ejemplo en este caso). Si T
depende tanto del nivel de gris I(x, y) como de la propiedad local p(x, y),
el umbral se denomina local. Si, adems, T depende de las coordenadas
espaciales x e y, el umbral se denomina dinmico.
En la figura 11(a) (10) se puede ver el histograma para el que se ha
fijado un umbral T. En la figura 11(b) se muestra el resultado de
segmentar dicha imagen con ese umbral T.
26
Figura 1.11. (a) Histogramas y umbral T para la imagen. (b)
Imagen segmentada usando el umbral T
Como se puede apreciar el histograma de esta imagen es bimodal. Sin
embargo, el valle no est claramente marcado debido fundamentalmente
a que la iluminacin de la imagen no es constante. Esto influye
enormemente en el histograma como veremos a continuacin. Sin
embargo, en este caso la segmentacin es bastante adecuada, excepto
en la zona inferior donde la iluminacin de la imagen es peor.
o Influencia de la Iluminacin
La formacin de una imagen I(x, y) se puede ver como:
I(x, y) = R(x, y) L(x, y) (1.15)
Donde R(x, y) es la componente de reflectancia y L(x, y) la de
iluminacin. Vamos a ver cul es el efecto de la componente de
iluminacin L(x, y) de cara a poder segmentar la imagen I(x, y).
Vamos a considerar la funcin de reflectancia R(x, y) generada con
ordenador de la figura 12(a). El histograma de esta funcin, como se
aprecia en la figura 12(b), es claramente bimodal y la imagen se puede
segmentar fcilmente mediante un umbral situado en el valle del
27
histograma. Consideramos ahora la funcin de iluminacin L(x, y)
generada con ordenador de la figura 12(c).
Multiplicando las funciones de reflectancia e iluminacin obtenemos la
imagen I(x, y) mostrada en la figura 12(d) (10). En el histograma de la
imagen I(x, y), como se puede ver en la figura 12, el valle prcticamente
ha desaparecido por completo, por lo que la segmentacin mediante un
nico umbral es en este caso imposible.
Aunque en general casi nunca se dispone de la funcin de reflectancia
aislada, este ejemplo muestra que la naturaleza reflectiva de los objetos
y del fondo son tales que son fcilmente separables. Sin embargo, la
imagen resultante, debido a una mala iluminacin, es muy difcil de
segmentar.
La razn por la que el histograma de la reflectancia se ve modificado por
la iluminacin se puede explicar de forma sencilla. Vamos a tomar
logaritmos en la ecuacin () obteniendo otra imagen:
Z(x, y) = ln I(x, y) = lnR(x, y) + lnL(x, y) = R(x, y) + L(x, y) (2.16)
(a) (b)
28
(c) (d)
(e)
Figura 1.12. (a) Funcin de reflectancia R(x, y) generada con ordenador.
(b) Histograma de la funcin de reflectancia. (c) Funcin de iluminacin
L(x, y) generada con ordenador. (d) Imagen I(x, y) producto de las
funciones de reflectancia e iluminacin. (e) Histograma de la imagen.
Si R(x, y) y L(x, y) son variables independientes, el histograma de Z(x, y)
viene dado por la convolucin de los histogramas de R(x, y) y L(x, y). Si
la iluminacin L(x, y) es constante, L(x, y) tambin lo es, y su histograma
ser un impulso. La convolucin de este impulso con el histograma de la
reflectancia R(x, y) no lo modifica y por lo tanto la imagen I(x, y) tiene el
mismo histograma que la reflectancia R(x, y). Si por el contrario la
iluminacin L(x, y) tiene un histograma ms ancho, el proceso de la
convolucin con el histograma de la reflectancia R(x, y), dar lugar a que
el histograma de la imagen I(x, y) sea sustancialmente diferente al
histograma de la componente de reflectancia R(x, y). El grado de
distorsin depender de cmo de ancho sea el histograma de la
componente de iluminacin L(x, y), es decir, de cmo de no uniforme sea
la iluminacin.
29
Cuando se tenga acceso a la fuente de iluminacin, una solucin que se
emplea habitualmente para compensar la no uniformidad de esta,
consiste en proyectar la iluminacin sobre una superficie clara y plana.
Esta proyeccin dar lugar a una imagen G(x, y) = kL(x, y), donde k es
una constante que depende de la reflectividad de la superficie. Ahora
para cualquier otra imagen I(x, y) formada a partir de la ecuacin (2.15)
para una funcin de reflectividad dada R(x, y) y para la misma funcin de
iluminacin L(x, y), podemos compensar la iluminacin haciendo
(1.17)
Entonces si R(x, y) se puede segmentar empleando un umbral T,
entonces la imagen H(x, y) tambin, empleando un umbral T/k. Este
mtodo se puede emplear siempre que la iluminacin no cambie de
imagen a imagen.
o Umbrales basados en Varias Variables
Hasta ahora se ha considerado la determinacin de umbrales para una
nica variable: el nivel de gris de la imagen. En algunos casos, se
dispone de varias variables que caracterizan cada pixel de la imagen. Un
ejemplo muy claro son las imgenes en color, donde se dispone de las
componentes RGB para formar la imagen compuesta en color. En este
caso, cada pixel se caracteriza por tres variables, y se puede construir un
histograma en tres dimensiones.
El concepto de segmentacin mediante umbral en este caso da lugar el
empleo de tcnicas de clasificacin o clustering
10
.
10
El Anlisis Cluster, tambin conocido como Anlisis de Conglomerados, Taxonoma Numrica o
Reconocimiento de Patrones, es una tcnica estadstica multivariante cuya finalidad es dividir un
conjunto de objetos en grupos.
30
Si se han encontrado K clusters significativos en el espacio de las
variables, la imagen se puede segmentar asignando a cada pixel una de
las K etiquetas a todos aquellos pixeles cercanos al cluster
correspondiente a esa etiqueta. La complejidad de esta clasificacin
depende del nmero de variables y del nmero de clusters. Adems si se
desconoce el nmero de clusters el problema se complica an ms
.
En el caso particular que se conozca el nmero de clusters se puede
emplear el algoritmo LBG o K-means. Este algoritmo permite determinar
iterativamente el centroide de cada uno de los K clusters y la particin del
espacio de los parmetros en K zonas, una para cada cluster. Partiendo
de una estimacin inicial para los centroides, se clasifica los datos segn
esos centroides. A partir de los datos clasificados para cada cluster se
vuelve a determinar el centroide para ese cluster. Esto se repite hasta
que la posicin de los centroides de los clusters y la clasificacin de los
datos no cambien apreciablemente. La imagen segmentada viene dada
entonces por las etiquetas correspondientes a la ltima clasificacin.
Es particularmente importante la clasificacin de imgenes en color
basada en tono y saturacin. Estas propiedades de color son
particularmente importantes, a diferencia de los canales RGB, porque
son equivalentes a como se perciben los colores en el sistema visual
humano. En este caso tenemos dos variables y se pueden emplear
tcnicas de clasificacin o clustering en dos dimensiones.
31
Figura 1.13: Ejemplo de clustering para dos variables y tres clusters.
En la figura 13 (11) se puede ver un ejemplo para tres clusters junto con
las regiones de clasificacin (umbrales en dos dimensiones).
Extraccin de contornos
Separacin de elementos significativos de la superficie de los objetos los
contornos resumen la mayor parte de la informacin de una imagen
Deteccin de puntos de contorno
Cambios de luminosidad en la imagen
o Mximos del Gradiente
En el rea de procesamiento de imgenes, la deteccin de los bordes de
una imagen es de suma importancia y utilidad, pues facilita muchas
tareas, entre ellas, el reconocimiento de objetos, la segmentacin de
regiones, entre otras.
Se han desarrollado variedad de algoritmos que ayudan a solucionar este
inconveniente. El algoritmo de Canny
11
es usado para detectar todos los
11
Algoritmo de Canny es un operador desarrollado por John F. Canny en 1986 que utiliza un algoritmo
de mltiples etapas para detectar una amplia gama de bordes en imgenes (37 pgs. 679-698).
32
bordes existentes en una imagen. Este algoritmo est considerado como
uno de los mejores mtodos de deteccin de contornos mediante el
empleo de mscaras de convolucin y basado en la primera derivada.
Los puntos de contorno son como zonas de pxeles en las que existe un
cambio brusco de nivel de gris. En el tratamiento de imgenes, se
trabaja con pxeles, y en un ambiente discreto, es as que en el algoritmo
de Canny se utiliza mscaras, las cuales representan aproximaciones en
diferencias finitas.
Uno de los mtodos relacionados con la deteccin de bordes es el uso
de la primera derivada, la que es usada por que toma el valor de cero en
todas las regiones donde no vara la intensidad y tiene un valor
constante en toda la transicin de intensidad. Por tanto un cambio de
intensidad se manifiesta como un cambio brusco en la primera derivada,
caracterstica que es usada para detectar un borde, y en la que se basa
el algoritmo de Canny. El algoritmo de Canny consiste en tres grandes
pasos:
- Obtencin del gradiente: en este paso se calcula la magnitud y
orientacin del vector gradiente en cada pxel.
- Supresin no mxima: en este paso se logra el adelgazamiento del
ancho de los bordes, obtenidos con el gradiente, hasta lograr bordes de
un pxel de ancho.
- Histresis de umbral: en este paso se aplica una funcin de histresis
basada en dos umbrales; con este proceso se pretende reducir la
posibilidad de aparicin de contornos falsos.
o Obtencin del gradiente
Para la obtencin del gradiente, lo primero que se realiza es la aplicacin
de un filtro gaussiano a la imagen original con el objetivo de suavizar la
imagen y tratar de eliminar el posible ruido existente. Sin embargo, se
debe de tener cuidado de no realizar un suavizado excesivo, pues se
33
podran perder detalles de la imagen y provocar un psimo resultado
final. Este suavizado se obtiene promediando los valores de intensidad
de los pxeles en el entorno de vecindad con una mscara de
convolucin de media cero y desviacin estndar . En la figura 14 se
muestran dos ejemplos de mscaras que se pueden usar para realizar el
filtrado gaussiano.
Una vez que se suaviza la imagen, para cada pxel se obtiene la
magnitud y mdulo (orientacin) del gradiente, obteniendo as dos
imgenes. El algoritmo para este primer paso se describe a continuacin.
Figura 1.14. Mscaras de convolucin recomendadas para el
obtener el filtro gaussiano. La mscara (a) fue obtenida de (12),
mientras que la mscara (b) fue obtenida de (13).
En situaciones ms complejas es necesario realizar un procesado
posterior, a nivel ms alto, para interpretar, reconocer o clasicar los
objetos segmentados a bajo nivel, y as dar conectividad o eliminar los
falsos positivos y negativos.
Una solucin ms satisfactoria consiste en utilizar unas tcnicas de
aparicin ms reciente que son mucho ms robustas, aunque requieren
bastante ms tiempo de clculo. Estas tcnicas las podemos agrupar en
lo que se han venido a denominar con el trmino genrico de contornos
34
activos. Estos contornos modelan las fronteras entre un objeto, el fondo y
el resto de objetos de la imagen.
Permiten extraer los contornos de los objetos de inters basndonos en
modelos que utilizan informacin a priori de la forma de los objetos. Estas
tcnicas son mucho ms robustas frente a la presencia de ruido y otros
elementos espureos y permiten segmentar imgenes mucho ms
complejas que las imgenes para las que eran aplicables los mtodos de
segmentacin de bajo nivel, como son las imgenes mdicas, por
ejemplo.
La solucin proporcionada por estas tcnicas en general no requiere
procesado posterior y son directamente interpretables, puesto que se
basan en un modelo establecido a priori. Si este modelo es el adecuado,
la presencia de falsos positivos o negativos ser muy pequea.
o Supresin no mxima al resultado del gradiente
Las dos imgenes generadas en el paso anterior sirven de entrada para
generar una imagen con los bordes adelgazados. El procedimiento es el
siguiente: se consideran cuatro direcciones identificadas por las
orientaciones de 0, 45, 90 y 135 con respecto al eje horizontal. Para
cada pxel se encuentra la direccin que mejor se aproxime a la direccin
del ngulo de gradiente (14).
o Algoritmo: Obtencin de Gradiente
Entrada: imagen I
Mscara de convolucin H, con media cero y desviacin estndar .
Salida: imagen m E de la magnitud del gradiente
Imagen o E de la orientacin del gradiente
35
1. Suavizar la imagen I con H mediante un filtro gaussiano y obtener J como
imagen de salida.
2. Para cada pxel (i, j) en J, obtener la magnitud y orientacin del gradiente
basndose en las siguientes expresiones:
El gradiente de una imagen f(x,y) en un punto (x,y) se define como un
vector bidimensional dado por la ecuacin:
(1.18)
Siendo un vector perpendicular al borde, donde el vector G apunta en la
direccin de variacin mxima de f en el punto (x,y) por unidad de
distancia, con la magnitud y direccin dadas por:
(1.19)
Obtener Em a partir de la magnitud de gradiente y Eo a partir de la
orientacin, de acuerdo a las expresiones anteriores. Posteriormente se
observa si el valor de la magnitud de gradiente es ms pequeo que al
menos uno de sus dos vecinos en la direccin del ngulo obtenida en el
paso anterior. De ser as se asigna el valor 0 a dicho pxel, en caso
contrario se asigna el valor que tenga la magnitud del gradiente.
La salida de este segundo paso es la imagen In con los bordes
adelgazados, es decir, Em (i j), despus de la supresin no mxima de
puntos de borde.
36
o Contornos activos
Los contornos activos se puede clasicar en snakes (serpientes) (15),
patrones deformables y contornos dinmicos. Los snakes
12
son
mecanismos para dar cierto grado de conocimiento a priori a la
interpretacin de la imagen a bajo nivel.
En lugar de esperar que propiedades deseables de los contornos como
son continuidad y suavidad provengan de los datos de imagen, estas
propiedades son impuestas desde el principio. Se impone un modelo
elstico de curva continua y exible, que posteriormente se ajustar a los
datos de la imagen. Variando los parmetros de elasticidad de la curva
se puede controlar la cantidad de informacin a priori que se asume.
El modelado a priori se puede hacer ms especco construyendo un
conjunto de curvas exibles que formarn el contorno global, con un
conjunto de parmetros que controlen las variables cinticas de la curva,
como por ejemplo, los tamaos de las diferentes partes y los ngulos con
las que se unen. Un modelo como este recibe el nombre de 1patron
deformable y es un mecanismo muy potente para buscar estructuras
conocidas en una imagen.
En caso de que sea necesario localizar objetos en movimiento, las cosas
se complican aun ms dando lugar al problema del seguimiento de
objetos. Esto se denomina modelado dinmico, para el que es necesario
aadir inercia, fuerzas de restauracin y factor de amortiguamiento al
snake esttico. Cuando las curvas sean de seguimiento y utilicen
informacin dinmica a priori reciben el nombre de contornos dinmicos.
12
Los contornos activos, tambin llamados 'Snakes', son unas lneas curvas cerradas que van
evolucionando iterativamente hasta que se adaptan la figura buscada en una escena. Los Snakes pueden
ser internos (cuando se inicializan en el interior de la figura) externos (cuando se inicializan en el
exterior) o mixtos (cuando se inicializan cortando a la figura). Los tres problemas de estos algoritmos son:
Inicializacin, criterio de parada y coste computacional.
37
o Algoritmo de Burns
Esta tcnica de extraccin de lneas rectas est basada en dos
observaciones realizadas sobre muchos algoritmos de extraccin de
lneas (16):
1) carecen de una vista global de la estructura fundamental de la imagen
prioritaria para la toma de decisiones acerca de los sucesos de bordes
2) relegan la informacin de la orientacin de los bordes a un plano
secundario en el procesamiento.
En la mayora de los algoritmos de extraccin de bordes y lneas, el
cambio en la magnitud de la intensidad se usa de algn modo como una
medida de la importancia local del borde. Mientras que la informacin de
la orientacin de los bordes puede ser usada para modular el proceso de
agrupacin aplicado a las lneas importantes, la magnitud del borde
normalmente tiene la influencia dominante y central. Segn Burns, la
orientacin del borde transporta la informacin importante sobre la
colocacin de los pixel que participan en la variacin de intensidad que
delimitan la lnea recta, particularmente en su extensin espacial.
El gradiente de orientacin es definido como la direccin de mximo
cambio de nivel de gris medido sobre un rea pequea alrededor del
pixel, o de forma equivalente, como la direccin local de incrementos
ascendentes (o descendentes) en intensidad superficial. El modelo de
pixel tiene dos caractersticas:
a) el gradiente de magnitud local (medido sobre una pequea ventana
local) variar significativamente sobre la superficie de intensidad, por
razones citadas antes, particularmente en la direccin ortogonal a la
lnea.
38
b) el gradiente de orientacin local variar relativamente poco a lo largo
de la superficie de intensidad completa.
Estas caractersticas son ciertas en la mayora de las lneas rectas que
nosotros deseamos extraer en las imgenes digitalizadas. Por encima de
basarse en la consistencia del gradiente de orientacin local, se
desarrolla un algoritmo simple para la extraccin de regiones entorno de
lneas, que son conjuntos de pixel que se incluyen en cada superficie de
intensidad. De este modo, en un suceso de gran envergadura el paso
difcil de la extraccin de todas las lneas puede ser reducido a simples
agrupaciones y a un proceso de conexin de componentes. El beneficio
adicional de la separacin de estas regiones entorno es que otros
aspectos de la lnea, como el contraste y la anchura (o el rizado), pueden
ser medidos ms exactamente.
Sorprendentemente, las aproximaciones globales para la extraccin de
lneas rectas, como los mtodos de la transformada de Hough
13
, no
explotan la orientacin tanto como se podra pensar. Aunque los grupos
de histograma de coordenadas (r, q) codifican la orientacin de los
bordes en trminos de puntos colineales, una vez ms dominan las
magnitudes de los bordes. El proceso global para la extraccin de lneas
depende de la bsqueda de cumbres importantes en la transformada.
Todas las tcnicas de Hough usan de alguna manera la magnitud del
borde en el proceso de votacin, por un peso proporcional o por
umbralizacin de tal modo que slo acceden los bordes importantes. As,
es muy difcil extraer lneas grandes, coherentes, de bajo contraste
porque su respuesta en el espacio (r, q) se reduce por el proceso de
13
La Transformada de Hough es un algoritmo empleado en reconocimiento de patrones en imgenes
que permite encontrar ciertas formas dentro de una imagen, como lneas, crculos, etc. La versin ms
simple consiste en encontrar lneas. Su modo de operacin es principalmente estadstico y consiste en
que para cada punto que se desea averiguar si es parte de una lnea se aplica una operacin dentro de
cierto rango, con lo que se averiguan las posibles lneas de las que puede ser parte el punto.
39
votacin, pudiendo ser ocultadas por la informacin de alto contraste y
pudiendo existir presente otro tipo de ruido.
La tcnica presentada aqu fue motivada por un mtodo de extraccin de
lneas que encontrara lneas rectas en imgenes razonablemente
complejas, particularmente aquellas lneas que son grandes pero no
necesariamente de alto contraste.
Una caracterstica clave de la aproximacin que la distingue de los
trabajos previos es la organizacin global del contexto de entorno de
lneas prioritario a cualquier decisin sobre la relevancia de los cambios
locales de intensidad. Una estimacin de la orientacin local de cada uno
de los pixel es la base de este primer proceso de organizacin. La
agrupacin de pixel en regiones entorno de lneas evita el exceso de
respuesta de las mscaras de tamaos y orientaciones variables, as
como la complejidad innecesaria en la organizacin de mecanismos
subsiguientes.
Permite la extraccin de lneas rectas a pesar de las debilidades en la
claridad de la lnea debido a variaciones locales en la anchura, contraste
y orientacin. Esto traslada directamente el problema asociado con el
tamao del operador del borde y determina la extensin de entorno dada
a los bordes y lneas directamente desde de los datos fundamentales.
La aproximacin tiene su origen en el proceso de coleccin de gradientes
de Hanson, Riseman y Glazer (17). El proceso de coleccin de
gradientes utiliza un mecanismo de datos directos para organizar el
contexto completo del borde en una direccin para cada instante de
tiempo (la componente vertical y horizontal) por encima de la anchura de
una seccin de incremento o decremento montono del perfil de
intensidad contribuyente al borde (por ejemplo, donde el signo del
gradiente sea constante). El gradiente total del contraste fue entonces
40
distribuido alrededor de la localizacin del centroide del gradiente de
magnitudes local en el perfil del borde.
Este proceso organizaba la informacin del contraste de un lado al otro
de la anchura de un borde sin comprometerse con ningn tamao fijo o
con tamaos establecidos para el operador de bordes. Ambas tcnicas
capturan el gradiente de informacin global que resulta de una tasacin
ms exacta de la magnitud total del borde de un lado al otro de su
anchura. Haralick
14
tambin procesa la superficie de intensidad en el
orden de crear decisiones acerca de las lneas, pero la diferencia clave
es que sus tramos de superficie son locales, y afronta el mismo tipo de
dificultades en la organizacin de esta informacin como lo hace el
resultado de los operadores locales de bordes.
La aproximacin aqu tomada ha generalizado el proceso global de
organizacin contextual hacia dos dimensiones, agrupando los pixel de la
imagen de un lado al otro de la anchura de un borde as como
disminuyendo la longitud del borde, para formar la base para la
extraccin de una lnea recta. Todos los pixel en esas regiones entorno
de lnea contribuyen tanto a la representacin final de la lnea como a la
generacin de un conjunto de atributos descriptivos que son tiles para
procesamientos posteriores de los datos de la lnea. Las regiones
entorno de lnea podran tambin ser usadas en la separacin de lneas
rectas en imgenes intrnsecas representando bordes y lneas de
diferentes tipos, tal como iluminacin, textura, reflejo, orientacin, etc.
o Representacin y proceso para la extraccin de lneas rectas
La aproximacin general para la extraccin de lneas rectas es agrupar
los pixel en regiones entono de lneas basadas en el gradiente de
14
HARALICK es miembro del IEEE por sus contribuciones en visin por computador y procesamiento de
imgenes y un miembro de la Asociacin Internacional para el Reconocimiento de Patrones (IAPR) por
sus contribuciones en el reconocimiento de patrones , procesamiento de imgenes, y para el servicio de
IAPR
41
orientacin, y ms tarde extraer de cada regin un segmento de lnea
recta. Hay que ver que cada una de las variaciones de intensidad,
incluyendo los cambios de baja magnitud, inicialmente ser extrada
como segmentos de lneas dbiles (a menudo de gran anchura). Durante
la interpretacin de estas lneas, las regiones entorno adyacentes de bajo
contraste pueden ser agrupadas en regiones homogneas y filtradas
para que no sean vistas como lneas rectas dbiles.
Hay cuatro pasos bsicos en la extraccin de lneas rectas:
1) Agrupacin de pixel en regiones entorno de lneas
Basadas en la similitud del gradiente de orientacin. Esto permite una
organizacin directa de los datos de contexto de borde sin
comprometerse a ningn tamao particular de mscara.
2) Aproximacin de la superficie de intensidades por una superficie
plana.
La aproximacin plana es ponderada por el gradiente de magnitud
asociado con los pixel de modo que dominar la intensidad en las partes
ms empinadas.
3) Extraccin de atributos
De las regiones de entorno de lneas y aproximacin plana. Los atributos
extrados incluyen la lnea representativa y su longitud, contraste,
anchura, colocacin, orientacin y rectitud.
4) Filtrado de lneas
sobre los atributos para aislar los variados sucesos de la imagen como
grandes lneas rectas de cualquier contraste, lneas pequeas de bajo
contraste (textura pesada), lneas cortas de bajo contraste (textura
ligera), regiones homogneas de lneas adyacentes de muy bajo
contraste, y lneas en posiciones y orientaciones particulares.
42
1.1.4 Proceso de alto nivel
Reconocimiento de patrones
Un patrn es un arreglo de descriptores obtenidos de los objetos. La palabra
caracterstica es comnmente usada en la literatura de reconocimiento de
patrones para denotar a un descriptor. Una clase de patrn en una familia de
patrones que comparten propiedades comunes. Las clases de patrones son
denotadas como w
1
, w
2
,, w
W
, donde W es el numero de clases. El
reconocimiento de patrones realizado por computadora involucra diversas
tcnicas para realizar la asignacin de los patrones a sus respectivas clases
automticamente y con la mnima intervencin posible por parte del ser
humano (18).
Los patrones pueden ser representados como vectores denotados por la letra
x de la misma manera como se muestra en la figura 15 (19)
Figura 1.15. Extraccin de objetos
43
(1.20)
Donde cada componente xi representa el i-esimo descriptor y n es el
nmero total de descriptores asociados con el patrn. Los vectores de
patrones son representados como columnas (matrices de n1). As, un
patrn puede ser expresado en la forma mostrada en (1.20) o en la forma
equivalente x = (x1, x2, . . . , xn)
T
, donde T indica transposicin.
o Momentos invariantes de Hu
El reconocimiento visual de patrones y caracteres independientes de la
posicin, tamao y orientacin, es uno de los objetivos en las muchas de
las investigaciones. Para alcanzar este objetivo, se deben utilizar
mtodos insensibles a las transformaciones geomtricas.
Una tcnica muy utilizada en la extraccin de caractersticas es la de
momentos invariantes
15
.
Considrese un objeto geomtrico S en el espacio X. Se supone la
existencia de un grupo de transformaciones admisibles G que acta en el
espacio X. Un invariante escalar de un objeto S es una cantidad que no
cambia su valor cuando el objeto S sufre cualquiera de las
transformaciones admisibles, tales como rotacin, traslacin o
escalamiento. Supngase que el objeto S tiene invariantes escalares
I1, I2,. . ., In. Considrese que se obtiene el objeto S al transformar
apropiadamente el objeto S usando transformaciones admisibles, los
valores de estos invariantes escalares deben ser idnticos (20).
15
La teora de los momentos invariantes para el reconocimiento de patrones fue introducida por Ming-
Kuei Hu (19), por medio del teorema fundamental de momentos invariantes.
44
El uso de los momentos invariantes en imgenes de dos dimensiones es
muy utilizado en el reconocimiento de patrones, ya que son muy tiles
dado que se puede realizar el reconocimiento de un objeto an sin
importar si ha sufrido transformaciones geomtricas como rotacin,
traslacin y/o escalamiento. Los momentos invariantes han sido
aplicados ampliamente en el reconocimiento de patrones, por ejemplo,
en la localizacin automtica de objetos 2D y 3D (21), en la autenticacin
de imgenes digitales (22), entre otros.
Hu (19) propone un conjunto de momentos invariantes a las
transformaciones geomtricas como la rotacin, traslacin y
escalamiento. Este conjunto est formado por siete funciones denotadas
por . Una vez que se han obtenido los momentos se puede establecer
la clase para este tipo de patrones.
o Clasificador de mnima distancia
Las tcnicas de reconocimiento basadas en coincidencias representan a
cada clase por un vector de patrones prototipo. Un patrn desconocido
es asignado a la clase que se encuentre ms cerca en trminos de una
mtrica predefinida. La forma ms simple es el clasificador de mnima
distancia, lo cual implica el clculo de la distancia Euclideana entre el
patrn desconocido y cada uno de los vectores prototipos. Est
clasificada toma la distancia ms corta como decisin.
Reconocimiento ptico de caracteres (OCR)
Cuando se dispone de informacin en forma de documento impreso y se
desea procesarla mediante un computador, existen dos opciones: una
primera consistira en introducirla a travs del teclado, labor larga y
tediosa. Otra posibilidad es automatizar esta operacin por medio de un
sistema de OCR compuesto de un software y hardware adecuado que
reducira considerablemente el tiempo de entrada de datos.
45
La tecnologa de reconocimiento de caracteres, OCR (Optical Character
Recognition) engloba a un conjunto de tcnicas basadas en estadsticas,
en las formas de los caracteres, transformadas y en comparaciones, que
complementndose entre s, se emplean para distinguir de forma
automtica entre los diferentes caracteres alfanumricos existentes. En
realidad no se reconocen exactamente los caracteres de un determinado
alfabeto, sino que es posible distinguir entre cualquier conjunto de formas
o smbolos. Sin embargo, se debe tener en cuenta que la precisin que
se obtiene en la prctica al intentar distinguir entre un conjunto de
smbolos no es del 100%. Por lo tanto, es fcil deducir que cuanto ms
numeroso es el conjunto de smbolos entre los que se debe decidir,
mayor es la probabilidad de que se produzca un fallo de clasificacin
(23).
En todo sistema de reconocimiento ptico de caracteres (OCR) se
distinguen al menos estas 4 etapas:
- Adecuacin de la imagen (pre proceso).
- Seleccin de la zona de inters (segmentacin).
- Representacin digital de la imagen (extraccin de caractersticas).
- Distincin del carcter contenido en la imagen (reconocimiento).
Para cada una de las cuatro etapas es posible aplicar multitud de
tcnicas ya existentes o desarrollar alguna especfica en funcin de las
condiciones en las que se presentan los datos de entrada, que en el caso
de OCR se puede traducir por las imgenes de entrada.
Uno de los pasos ms difciles es la extraccin de las caractersticas, ya
que es de gran dificultad elegir un conjunto ptimo de caractersticas. En
general para que una caracterstica sea buena debe tener:
46
a) Discriminacin: Deben ser caractersticas que diferencien
suficientemente una clase de otra.
b) Deben tener igual valor para mismas clases.
c) Independencia: Las caractersticas deben estar incorreladas unas de
otras.
d) Pequeo espacio para caractersticas: El nmero de caractersticas
debe ser pequeo para la rapidez y facilidad de clasificacin.
Adems las caractersticas deben contar con otros requerimientos como
son que tengan un bajo gasto computacional, tanto en tiempo como en
complejidad. Debido a estos motivos es muy difcil conseguir unas
caractersticas ptimas.
Normalmente, las tcnicas de OCR son tiles para digitalizar textos de
algn libro (caracteres impresos) o formularios rellenados manualmente
(caracteres manuscritos). Tanto en un caso como en el otro el desglose
de los caracteres individuales es mucho ms sencillo que en el caso de
texto manuscrito continuo, para el que es necesario la aplicacin de
tcnicas de pre proceso y segmentacin ms complejas que en el caso
de OCR (24).
En esta fase de pre procesamiento (o adecuacin de la imagen) el
objetivo que se persigue es eliminar de la imagen de cualquier tipo de
ruido o imperfeccin que no pertenezca al carcter, as como normalizar
el tamao del mismo. Adems, para el caso de OCR, la normalizacin de
la imagen tambin puede implicar un binarizado de la misma.
Para la eliminacin del ruido que puede aparecer en una imagen digital,
bien provocada por manchas reales o grafas imperfectas, o bien por
defectos tcnicos en la adquisicin o binarizado de la imagen, se utilizan
diversos algoritmos:
47
- Etiquetado: para la divisin de la imagen en regiones de
componentes conectadas.
- Erosin / expansin: para la eliminacin de pequeos grupos de
pxeles.
- Umbralizado de histograma: para eliminar/seleccionar los objetos
ms brillantes o ms oscuros de la imagen.
o Esquema bsico de un algoritmo de Reconocimiento ptico de
Caracteres
Todos los algoritmos de Reconocimiento ptico de Caracteres tienen la
finalidad de poder diferenciar un texto de una imagen cualquiera. Para
hacerlo se basan en 4 etapas: Binarizacin, fragmentacin o
segmentacin de la imagen, Adelgazamiento de los
componentes y Comparacin con patrones.
o KNN
Para OCR, existe un mtodo muy conveniente, no paramtrico y
supervisado, que proporciona resultados muy adecuados para la
aplicacin que se est tratando, El algoritmo K-NN (K vecinos ms
prximos). Este mtodo es muy popular debido a su sencillez y a cierto
nmero de propiedades estadsticas bien conocidas que le proporcionan
un buen comportamiento para afrontar diversos tipos de problemas de
clasificacin, siendo uno de ellos el de OCR.
Dado un conjunto de objetos prototipo de los que ya se conoce su clase
(es decir, dado un conjunto de caracteres de muestra) y dado un nuevo
objeto cuya clase no conocemos (imagen de un carcter a reconocer) se
busca entre el conjunto de prototipos los k ms parecidos a nuevo
objeto.
48
o Fase de entrenamiento y fase de test.
En OCR, esta recoleccin implica disponer de una base de datos de
imgenes de los tipos de caracteres que posteriormente se esperen
reconocer. A este conjunto de datos se le denomina conjunto de
entrenamiento. Sin embargo, la fase de entrenamiento no solo consiste
en la recopilacin de estos datos, sino que, tpicamente, los datos
originales que se dedican al entrenamiento deben ser preprocesados
adecuadamente para obtener representaciones compactas y coherentes.
En el ejemplo de OCR, esto quiere decir que las imgenes deben ser
segmentadas (eliminacin de ruido y seleccin de la caja mnima de
inclusin), normalizadas y transformadas (extraccin de caractersticas)
para obtener los vectores de baja dimensionalidad que finalmente se
almacenan como conjunto de entrenamiento.
Con este conjunto de entrenamiento ya construido, el clasificador knn
ya puede ser utilizado para reconocer la clase de una nueva muestra.
Esta es la fase de test y lgicamente, tambin aqu es necesario aplicar
todo el preproceso descrito anteriormente a cada una de las nuevas
muestras. Por lo tanto, aqu se ve la necesidad de disponer de mtodos
rpidos de realizar estas tareas de preproceso, puesto que la velocidad
de reconocimiento depender, en parte, de ellos.
En la prctica se tiene que este preproceso es posible realizarlo muy
rpidamente, aunque justo a continuacin aparece la parte del proceso
de reconocimiento que normalmente ms carga computacional conlleva,
la clasificacin.
o Tcnicas de bsqueda rpida de vecinos
Se ha visto que el mtodo de clasificacin knn requiere la construccin
de un conjunto de prototipos. El tamao, entre otras cosas, de este
49
conjunto influye en la precisin del clasificador. Debido a la naturaleza
estadstica del mtodo de clasificacin, cuantos ms prototipos contiene
este conjunto mayor exactitud se consigue aunque al mismo tiempo
mayor complejidad se introduce para realizar las bsquedas,
aumentando el coste computacional. En tareas de OCR es frecuente
utilizar conjuntos de referencia de ms de 200.000 muestras. Con estos
tamaos surge la necesidad de disear estructuras de datos adecuadas
para realizar las bsquedas de forma optimizada, pues una bsqueda
exhaustiva requerira demasiado tiempo y se degradaran las
prestaciones del sistema de OCR.
En esta lnea se han desarrollado algunos algoritmos de bsqueda rpida
de vecinos y sus correspondientes estructuras de datos (voronoy
polygons, k-d-trees, r-trees, etc.), que intentar paliar el problema del
coste de realizar bsquedas en grandes conjuntos de datos
multidimensionales. Para diversas tareas que combinan tcnicas de
reconocimiento de formas y visin por computador, los k-d-trees son una
buena opcin para implementar los algoritmos de bsqueda. De hecho,
en el ITI se han empleado algoritmos de bsqueda aproximada sobre k-
d-trees con diversas tareas (reconocimiento de caras, matrculas y
caracteres) obteniendo resultados competitivos, tanto en velocidad como
en precisin.
o rboles de decisin
Los rboles de decisin, al igual que el K-NN, es una tcnica de minera
de datos que se puede aplicar en el contexto de reconocimiento ptico de
caracteres. Su aprendizaje es inductivo y no supervisado. Los patrones o
atributos que se quieren evaluar de un carcter determinado constituyen
los nodos del rbol, mientras que los resultados finales de los mismos se
almacenarn en las hojas del mismo. Tras la construccin del rbol y
dada la estructura del mismo, toda la evaluacin de caracteres se puede
tratar como una arquitectura IF-THENELSE, por lo que si el nmero de
50
parmetros a evaluar es suficientemente grande para tener capacidad
expresiva pero suficientemente pequeo para ser eficiente
computacionalmente, el rbol resulta una estructura que favorece mucho
la velocidad de clculo, no como el algoritmo K-NN que aunque muy
conveniente, puede llegar a ser muy costoso computacionalmente.
Durante el aprendizaje, el orden de evaluacin de los parmetros es
fundamental para alcanzar el ajuste ptimo del rbol. Para ello se
emplean una serie de funciones de evaluacin que a la vista de los
datos, determinan la relevancia o la correlacin de unos parmetros en
funcin de los otros, definiendo una ganancia de informacin, que al
postre es la reduccin de la entropa del sistema. La secuencia de
aprendizaje del rbol se puede resumir en el siguiente diagrama figura
16. (25):
Figura 1.16. Aprendizaje
51
Una vez se tiene construido el rbol hay que detallar como recorrerlo. En
definitiva, si durante el recorrido se llega a una hoja, esa serie de
patrones responden a un carcter reconocido y por tanto se devuelve. Si
en el recorrido y despus de evaluar todo el rbol no se llega a una hoja,
se deduce que esa caracterstica no ha sido consignada en el rbol y por
tanto se debe crear una nueva hoja para guardar el nuevo dato. Un
esquema muy ilustrativo de cmo recorrer un rbol de decisin es el
siguiente figura 17 (25):
Figura 1.17. Reconocimiento del carcter
Tras analizar los mtodos y tcnicas que se utilizan para el
reconocimiento ptico de caracteres (OCR), vamos a describir de
manera ms detallada el proceso completo haciendo alusin a los puntos
antes expuestos y centrndose en el mtodo de rboles de decisin,
aunque sin prdida de generalidad, ya que estas caractersticas se
pueden aplicar tanto a redes neuronales como a KNN.
52
- Deteccin de renglones
- Separacin de caracteres
- Extraccin de caractersticas
- Introduccin en la red de neuronas
- Reconocimiento final del texto
El esquema bsico a seguir ser (26):
Figura 1.18. Etapas del Sistema OCR desarrollado
53
CAPTULO 2: DISEO, SIMULACIN E IMPLEMENTACIN
El objetivo es implementar un sistema en el lenguaje de programacin Java en
Netbeans 7.0.1 como una aplicacin de software para un telfono mvil del cual
sea capaz de reproducir el audio que expresan denominaciones del billete en
frente de la cmara del dispositivo.
2.1 Diagrama de flujo o mapa conceptual de la investigacin
Figura 2.1: Esquema de flujo de data
Mediante la comparacin por pixeles de cada imagen en el formato JPEG.
As se ver la diferencia de cada denominacin de billetes que resalta sus
INICIO
Obtencin de la
imagen a travs
de la cmara web
Almacenamiento
en la base de datos
de comparacin
Reproduccin de
mensaje
Comparacin de la
imagen con los
patrones
guardados en la BD
Conversin de la
imagen binaria en
JPEG
No existe
el billete
Son
iguales
las
imgenes
?
Si
No
FIN
54
propias caractersticas que se exhiben en las imgenes que representa la
particularidad de un billete.
2.2 Diseo
ADQUISICION DE LA IMAGEN
Para este bloque se hace us de la API Java Media Framework (JMF) para el
manejo del dispositivo de video instalado (cmara) con la que se realizan las
funciones descritas como la visualizacin y obtencin de la imagen para el
procesamiento.
Para lograr este objetivo existe una api especializada diseada por Sun, que no
se proporciona en el paquete del jdk, llamada JMF (Java Media Framework, en
espaol Entorno de Trabajo Multimedia de Java), actualmente en la
versin 2.1.1e, que permite la programacin de tareas multimedia, es decir que
puede capturar, reproducir, transferir y codificar varios formatos de medios, as
como la retransmisin en tiempo real de vdeo y envi a la base de datos.
En el cdigo al detectar la cmara se verifica primero los formatos disponibles
de ordenadores donde se tuvieran cmaras con soporte de color RGB y YUV
(en este caso la cmara es YUV). As como las resoluciones permitidas y
agregarlas a un men, en el cual se puede seleccionar dinmicamente el
tamao preferido, y guardar la imagen en formato JPEG en el archivo que se
prefiera o tambin y para este caso en particular enviar a la base de datos que
ser creada despus de la adquisicin de datos.
Se crea un proyecto con el nombre de ``TomaFoto, despus aadir un
paquete dentro de source packages con el mismo nombre de ``estudiandojmf
y crear dentro del mismo, 8 clases (java class) con los nombres de :
- JmenuFormato
- Conexin
55
- Eventos
- GuardaComo
- JDispositivos
- Mensajero
- MiPlayer
- PanelCamara
Ahora se crea la interfaz de usuario, para ello se da un clic derecho en el
paquete interfaz y se selecciona New -> JFrame Form, se le da por nombre
'Camara'.
Se agrega un panel llamado ``Camarita como se muestra en la imagen y luego
se crea un Menu Bar (JMenuBar) y dentro de este crear tres MenuItem
``Capturar , ``Dispositivo y ``Otros como se muestra a continuacin:
Figura 2.2. Tablero del panel central
Seguidamente se le aade en cada MenuItem dos JMenu en Capturar (En
Archivo y En Base de Datos) y tambin en Otros (Salir y Acerca) de manera que
queden como las figuras siguientes:
56
Figura 2.3. Menu de Capturar
Figura 2.4 Menu de dispositivos con los diferentes formatos
Figura 2.5 Menu de Otros
57
BASE DE DATOS
Se crea una base de datos en MySQL utilizando el software Appserver que
permite el manejo de MySQL y el lenguaje PHP .
Para acceder a Panel Plesk, loguearse en su rea de cliente (27) y seleccionar:
alojamiento > administracin. Entre todas las opciones disponibles, en la parte
de derecha en Aplicaciones y Servicios encuentra bases de datos luego
selecciona la base de datos que va a exportar y con Webadmin acceda a la
administracin de la base de datos conPHPMyAdmin.
Dentro de PHPMyAdmin seleccione Exportar base de datos:
Figura 2.6. Ventana inicial del localHost
phpMyAdmin es una herramienta escrita en PHP con la intencin de manejar la
administracin de MySQL a travs de pginas web, utilizando Internet.
Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y
alterartablas, borrar, editar y aadir campos, ejecutar cualquier sentencia SQL,
administrar claves en campos, administrar privilegios, exportar datos en varios
formatos y est disponible en 62 idiomas.
58
Para acceder a la administracin de las bases de datos (28) en el cual se cre
el usuario y la contrasea:
Usuario: root
Contrasea: idat
De inmediato aparecer la pagina de la base de datos de los billetes para
almacenar los patrones que luego se necesitara para la comparacin con la
imagen capturada.
Figura 2.7 base de datos de los billetes
Como se ve en la figura existen 5 Blobs donde se subieron las imgenes de los
billetes que serviran de patrones. BLOB viene a ser un tipo de datos para
almacenar un objeto en binario en una tabla de la base de datos.
En PHP se cre las clases para la configuracin del mysql
59
- Billetes
- Insertar
- Formulario
- Listar imgenes
- Ver
En la clase formulario se crea el panel donde se va subir las imgenes a la base
de datos como se muestra en la figura:
Figura 2.8 Ventana de la claseInsertar
Despus de subir los archivos de JPEG se colocaran automticamente los blob
en la tabla de la base de datos como esta en la siguiente figura.
60
Figura 2.9 Tabla en la base de datos de las
Imgenes de billetes almacenados
COMPARACION DE IMGENES
Una comparacin es un objeto extrado de la diferencia de dos Estados. se
tiene una nueva serie de nmeros que representan la diferencia entre las
imgenes en este paquete se trabaja en matrices donde se resta las lineas de
los bordes desde un patrn.
Continuamente se puede leer de un streaming de la webcam y desmantelar la
imagen en los datos ms flexible.
Un BufferedImage (es una clase que se utiliza para crear imgenes en la
memoria). Esta imagen se convierte en lo que se llama un objeto del Estado. Un
Estado no es ms que una matriz 2D de enteros. Por el momento este conjunto
representa el brillo de los pxeles de la imagen. (se tiene la intencin de
incorporar de alguna manera la diferencia en este tono y en el futuro.) A partir
de aqu que en parte se debe olvidar que se est trabajando con imgenes, sino
ms bien conjuntos de nmeros, por lo que desde aqu el cdigo podra ser
utilizado para cualquiera de los mapas de los nmeros. A continuacin, un
61
objeto EdgeDetector primitivo puede procesar el cambio de mapa para resaltar
los bordes de las lneas.
Se utiliza el paquete JMF en la librera para el proceso de las imgenes. Para
el proceso se de comparacin se configura en el netbeans colocando el nombre
de la aplicacin como comparacionimagen luego se crea un paquete con el
mismo nombre y dentro de este se agrega dos clases con los nombres de
ImageCompare y Main, el ultimo es creado por defecto.
Especificamos las imgenes que deseamos comparar.
ImageCompare ic = new ImageCompare("I:\\test1.jpg", "I:\\test2.jpg");
En los constructores:
Constructor 1. utilizan nombres de archivos
Constructor 2. utilizar imgenes de awt.
Constructor 3. utilizar imgenes de bfer. todos los caminos conducen al
mismo lugar.
setParameters establece los parmetros para el uso en la deteccin de
cambios. El cdigo compare() compara las dos imgenes en este objeto y
GrayFilter convierte las imgenes en gris.
Se aplica un for para el bucle que travs de toda la imagen compara los
distintos bloques de imgenes. En el If se establece la diferencia en una
determinada regin ha pasado el umbral defactor A que luego se colocara un
indicador dibujando el cambio en la imagen para mostrarque el cambio se ha
detectado. getChangeIndicator indica si en caso existen cambios de deteccin
de regiones de la imagen comparada y getAverageBrightness devuelve un valor
que especifica un tipo de brillo medio de la imagen.
Para escribir una imagen de bfer en un archivo jpeg se coloca un saveJPG y
loadJPG para leer un archivo jpeg en una imagen del buffer.
62
Tambien se debe especificar el lugar donde se encuentran las imgenes a
comparar en este caso la imagen se guardo en C:\\ y colocar los parametros de:
numero de regiones verticales, numero de regiones horizontales, sensibilidad y
estabilizador en este caso se puso de manera aleatoria los numeros por
ejemplo (8, 6, 5, 10) considerando que a menor sensibilidad mayor seran los
puntos de diferencias de ambas imgenes.
si las imagenes son distintas se crear una nueva imagen con nombre
changes.jpg en la que se muestre las regiones que son distintas pues
sobrepasan la sensibilidad.
2.3 Simulaciones
El siguiente cdigo muestra el procedimiento de deteccin de la cmara para
capturar la imagen y posteriormente almacenar en la base de datos como
segundo paso.
En la clase de JmenuFormato agregamos los siguientes cdigos con sus
respectivos imports vase en anexo A. Ya que tenemos lo anterior nos vamos a
la vista de cdigo y agregamos los siguientes objetos en el anexo B. Para la
configuracin de los tems de la cmara nos ubicamos en la clase eventos
anexo D.
Para guardar la imagen en un archivo cualquiera donde se pueda guardar en el
formato JPEG nos situamos en la clase guardarComo Anexo E.
63
CAPTULO 3: RESULTADOS
3.1 Resultados
Se dispone a correr el programa y de inmediato aparece la pantalla principal,
as como se muestra en la imagen siguiente.
Figura 3.1 Pantalla principal
En el men de Dispositivos se puede configurar el tamao de la imagen segn
se prefiera para la captura de la imagen desde 160x144 hasta 640x480 en la
seal RGB de la misma manera tambin se aprecia en la seal YUV.
Figura 3.2 Formatos de seal de la cmara
64
Figura 3.3 Imagen captada desde la webcam
Se captura la imagen dando click en la parte Archivo para guardar la imagen
donde se prefiera almacenar.
Figura 3.4 Archivo de almacenamiento de la imagen
La imagen puede guardarse en el archivo que se prefiera con extensin JPEG
sin embargo para este caso se guardara en la base de datos que es la otra
opcin dentro del menu de capturar.
65
Luego se corre el programa de comparacin de imgenes en este como
ejemplo se coloca dos imgenes de billetes de 10 y 20 soles como las
imgenes siguientes:
Figura 3.5 Billete nmero 1 para la prueba
Figura 3.6 Billete nmero 2 para la prueba
Ambas imgenes almacenadas en c: al correr el programa detecta que son
distintas por el rostro del personaje dibujado en el billete. Como se muestra a
continuacin diferencias de matrices es alta entonces lo declara falso que
quiere decir que son distintas si fueran iguales el mensaje de resultado dira
true de verdadero.
66
Figura 3.7 Simulacin de comparacin en el Netbeans
En la comparacin con el tomafoto no se pudo hallar el enlace porque la base
de datos convierte las imgenes tomadas desde la cmara en jpg sin embargo
la base de datos trabajo en imgenes binarios y hasta ahora no se hallo la
frmula para cambiar de binario a jpg para que pueda hacer la comparaciones
por eso que la figura 3.7 muestra una comparacin de dos imgenes guardadas
en la unidad c//.
MANUAL DEL USUARIO DEL SISTEMA
El presente manual persigue el objetivo de hacer un estudio breve del
dispositivo mvil que se utilizar para las pruebas ya que el programa presenta
limitaciones del diseo.
67
REQUERIMIENTOS
Como el sistema es una aplicacin de software diseada para trabajar en
un telfono celular mvil. En la presente versin el dispositivo mvil debe
cumplir con los siguientes requerimientos mnimos:
Cmara de video
Sistema operativo : Symbian OS
Versin : 9.1, 9.2
Plataforma : S60 3 edicin
Feature Pack : initial Realease o Feacture Pack 1
Memoria RAM necesaria : 2MB
Capacidad de disco : 1.6 MB
Para la instalacin de la aplicacin, se requiere adems una PC con
conectividad bluetooth 2.0 o el software de comunicacin del dispositivo
mvil a una PC segn el tipo de conectividad de cada modelo de celular
(para el fabricante Nokia, el software de comunicacin es el Nokia PC
Suite). Sin embargo para este proyecto se utiliz un dispositivo
electrnico donde se coloca la memoria externa del celular ya que dicho
dispositivo es un lector y grabador de tarjetas multimedia mviles de
Siyoteam como un usb que se conecta directamente en el puerto usb de
la PC. Lo suficientemente ligero y compacto como para llevarlo en el
bolsillo o la bolsa del porttil, este lector y grabador de tarjetas de
memoria y tarjetas *SIM es compatible con la mayora de tarjetas de
almacenamiento del mercado, sobre todo, las nuevas tarjetas SD de alta
capacidad, miniSD y microSD y Transflash. Este lector es un accesorio
obligatorio para transferir y hacer copias de seguridad de los archivos del
mvil y de los contactos de la *SIM se recomienda visitar la pgina web
para mayores informaciones (29).
68
La versin es USB 2.0 de alta velocidad, la velocidad de transmisin de
hasta 480Mbps puede, 4 ranura de la tarjeta, puede leer-escribir las
siguientes series de tarjetas de memoria:
SD
SDHC
DV
T-Flash
Micro SD
Mini SD
M2
Sony Memory Stick de largo y palo corto sin adaptado
ESPECIFICACIONES DEL EQUIPO
Se presenta en esta seccin a manera de ejemplo de los requerimientos
de funcionamiento del sistema el modelo es:
Nokia 5800 / 5800d-1 XpressMusic
Pantalla : 360 x 640 (230400 pxeles)
Cmara de video : 2048 x1536 pixeles (3.15MP)
Sistema operativo : Symbian OS 9.4 Series 60 5th Edition (Symbian ^1)
CPU : ARMv6 @ 369 MHz
Memoria RAM : 128 MiB, 73MiB accesibles
69
Figura 3.8 modelo del celular Nokia
CONTENIDO DEL SISTEMA
El sistema es guardada con el nombre de Proyecto.sisx consta del
siguiente contenido:
Archivo Proyecto.sisx es una carpeta de la aplcacion a
instalarse en el dispositivo mvil.
La carpeta con los archivos necesarios para el funcionamiento de
la aplicacin.
Proyecto.sisx
70
GUIA DE INSTALACION
Introducir la carpeta del Proyecto que ser introducida con .sisx para el
momento de la aplicacin, luego subirla carpeta portable para la
instalacin en el celular.
En el dispositivo, entrar al men de las funciones del celular y dirigirse a
gestor de archivos. Seleccionar la memoria externa del dispositivo donde
se encontrara la carpeta Proyecto.
Figura 3.9 instalacin de la carpeta proyecto en el celular
Cabe aadir que en el proceso de llevar el toma foto que fue simulado
en el Netbeans se propuso introducir directamente en el celular con
extensin de .jar sin embargo el archivo no fue reconocido por el mvil
ya que el celular trabaja con otro tipo de resolucin ms alto que la
cmara por ser de la PC as como se observa en la imagen siguiente
como tambin antes de introducir una aplicacin se realiza los cdigos
en el mismo sistema operativo del Nokia que viene a ser el Symbian.
71
Figura 3.10 seleccin de la carpeta Capturefoto
Figure 3.11 resultado de la operacin que no reconoci el celular
72
Entonces como se pens despus hacer el cambio de los cdigos que
se realizaron en un principio del tomafoto se utiliz un programa llamado
i-nigma para poder utilizar la cmara del celular; este programa realiza
una aplicacin que sirve para leer con suma facilidad cdigos BIDI
desde un terminal mvil. En este caso para el sistema se utiliz como
plataforma para hacer recin la comparacin y obtener resultados.
Se procede a hacer click en la carpeta de proyecto y despus saldr un
mensaje de aplicacin del programa como se muestra en la figura 3.12
Figura 3.12 programa de instalacin del proyecto
Seguidamente una vez instalado el programa se realiza la prueba como
se observa en la siguiente figura 3.13
73
Figura 3.13 instalando el programa
Figura 3.14 activacin de la cmara
Como se observa en la figura anterior 3.14 se activa la cmara del
celular donde se procede a tomar las fotos.
74
Figura 3.15 captura de un billete de 100 soles
Dirigirse a Menu donde se encontrara la carpeta de compareimagen y
realizar la comparacin en el anexo F, se encuentra el resumen de los
cdigos de comparacin de imgenes realizados en Symbian. Por ser un
sistema operativo no se puede realizar la simulacin sino es ir
directamente al celular y observar los resultados; sin embargo al probar
en otro celular Nokia de origen chino se observo las fallas del programa
ya que la memoria interna del celular no soporta el algoritmo de todos
las diferentes denominaciones que se pens realizar en esta tesis es por
eso que tal hecho llevo ha malograr el sistema interno del celular que
hasta hoy est en reparacin.
75
CONCLUSIN
Conclusiones
En la primera prueba el dispositivo no fue detectado por jmf por lo que en la
parte de la informacin deca: Sin dispositivos detectados, al parecer era
porqu cuando se ejecuta desde el jar directamente sin abrirlo desde
Netbeans NO detecta ningn dispositivos esto se da porque el programa no
puede encontrar el archivo jmf.properties, el archivo se encuentra en la
carpeta libs dentro de la carpeta donde se instalo el JMF, se debe copiar este
archivo a la raz de la aplicacin.
Se pudo obtener la imagen desde la cmara web y almacenarlo en la base de
datos, sin embargo para el llamado de la comparacin de imagen no reconoce
el archivo almacenado y es porque el archivo de la imagen esta en formato
binario ya que la base de datos cambia automtica en el blob la imagen en
binario todo archivo JPEG que se suba. Se tendra que cambiar el archivo
binario en JPEG para hacer el llamado para la comparacin de imgenes ya
que la programacin de comparacionimagen solo compara en formatos JPEG.
De no encontrar la manera de cambiar los formatos de binario a JPEG se
tomara la opcin de guardar la imagen En Archivos de la ventana principal de
la captura de fotos. As se podr almacenar temporalmente en C: o para el
futuro en la memoria interna del celular y hacer el llamado con su misma
extensin y posteriormente comparar las imgenes.
El archivo de tomafoto solo se pudo simular en Netbeans ya que este sistema
trabaja para PC con su respectiva resolucin sin embargo para la cmara
aunque se hizo lo posible por introducir el programa no se logro porque el
archivo jar es mas para juegos que son extrados de internet o ventas en
servicio autorizados que viene ya con su sistema de instalacin automtica por
este motivo se realizo en bajar un programa de internet i-nigma para obtener
76
desde una carpeta ir directamente a la cmara del celular y despus colocar en
el mismo i-nigma el archivo de la comparacin de la imagen.
Al realizar el proyecto de la comparacin en i-nigma el archivo no fue
reconocido por el sistema del celular, al buscar ayuda externa por este punto se
llego a la conclusin que el programa no es soportado por el celular ya que se
pens hacer la comparacin con 4 patrones que se encuentran en la base de
datos del programa como un gestor de base de datos, pese a insistir en colocar
el programa en el celular; lamentablemente el sistema se quedaba esttico y se
tena que reiniciar constantemente hasta llegar a malograr el sistema interno
por eso se recomienda no insistir en colocar un sistema que el archivo no
reconozca el celular sino se podra malograr el sistema como paso en esta
prueba.
Trabajos Futuros
Como las pruebas no salieron como se deseaban en un principio se debe hacer
mejoras en el estudio de la comparacin de la imagen ya que es un tema
complejo al tratarse de imgenes capturadas por la cmara, porque podran
situarse en diferentes condiciones tanto como el billete segn su conservacin
como tambin la posicin de la cmara al tomar la imagen, esto podra tener
muchas limitaciones al momento de comparar desde el mismo celular.
Se podra colocar un segundo algoritmo para poder implantar los 4 patrones
guardados en la base de datos para realizar la comparacin con diferentes
denominaciones del billete.
Para realizar un mejor acabado se tendra que programar botones en teclado
del celular que conduzcan mejor la entrada del programa para la persona
invidente.
77
El programa se podra girar a otro sentido ms complejo como reconocer la
validez del billete si es falso o verdadero y esto no solo servira para personas
con este tipo de discapacidad mencionada sino tambin el pblico en general
utilizando el carbide c++ como plataforma de comparacin de caracteres y
eigeimages como algoritmo de comparacin de imgenes as como tambin
PCA que hace una comparacin numricamente enlazada en lenguaje C++
utilizando el video cmara con frame.
78
REFERENCIAS
1. GONZALES, Rafael y WOODS, Richard. Digital Imagen Procecessing. segunda edicin.
New Jersey : editorial Prentice Hall, 2002. pgs. 11-14.
2. PAJARES Gonzalo, De la Cruz Jess M. y otros. Imgenes Digitales, Procesamiento
prctico con Java. Segunda edicion. Madrid : AlfaOmega, 2004. pg. 67. ISBN:
8478975632 ISBN-13: 9788478975631.
3. SNCHEZ, Jos Andrs Somolinos. Avances en robotica y vision por computador.
primera edicion. espaa : universidad de Castilla- La Mancha, 2002. pgs. 33-34.
ISBN 84-8427-199-4.
4. MathWorks. Accelerating the pace of engineering and science. [En lnea] 26 de Junio
de 2009. [Citado el: 10 de Abril de 2011.]
http://www.mathworks.es/support/solutions/en/data/1-
1ASCU/index.html?product=IP&solution=1-1ASCU.
5. ROHS, Michael. Recognition of 2-dimensional visual codes with the Nokia 7650. [En
lnea] 2003. [Citado el: 10 de Abril de 2011.]
http://www.mics.ch/SumIntU03/BGfeller.pdf.
6. BART, Evgeniy y Shimon Ullman. Image normalization by mutual information. [En
lnea] 2004. [Citado el: 14 de Abril de 2011.]
http://www.comp.leeds.ac.uk/bmvc2008/proceedings/2004/papers/paper_125.pdf.
7. HUANG, Shi. Adaptive image watermar kingscheme based on visual masking. s.l. :
IEEE Electronics letters, 1998. pg. 749. Vol. 34.
8. MANUEL C., Mariko Nakano Miyatake, Hctor Prez Meana. A robust watermarking
technique based on. [En lnea] 29 de Agosto de 2008. [Citado el: 15 de Abril de
2011.] http://jaibana.udea.edu.co/grupos/revista/revistas/nro052/Articulo13.pdf.
9. Fu, Mui J.y K. A survey on image segmentation. s.l. : Pattern Recognition, 1981. pgs.
3-16. Vol. Vol. 13.
10. RAFAEL C. Gonzales, Richard E. Woods. Digital Imagen Processing. Wilmington :
Addison- Wesley Iberoamericana S.A., 1996. pg. 481. ISBN: 0-201-62576-8.
79
11. MARTIN, Marcos. Tcnicas Clsicas de Segmentacin de Imagen. [En lnea] 21 de
mayo de 2002. [Citado el: 15 de Abril de 2011.]
http://poseidon.tel.uva.es/~carlos/ltif10001/segmenclasica.pdf.
12. F. Escolano, O. Colomina, M.A.Cazorla. Visin Artificial: Extraccin de
Caractersticas I. 2006.
13. HILL, green. Canny Edge Detection Tutorial. 2002.
14. JORGE, Valverde Rebaza. Deteccin de bordes mediante el algoritmo de Canny. [En
lnea] Noviembre de 2007. [Citado el: 22 de Abril de 2011.]
http://www.seccperu.org/files/Detecci%C3%B3ndeBordes-Canny.pdf.
15. KASS, M., Witkin, A., and Terzopoulos D. Snakes Active Contour Models. Londres :
Proceedings of the First International Conference on Computer Vision, 1987. pgs.
259-268.
16. Burns, M. Arithmetic: The Last Holdout. [aut. libro] Margaret J. Kenney Lorna J.
Morrow. The teaching and learning of algorithms in school mathematics. s.l. : Phi,
Delta, Kappan, 1994, pgs. 471-476.
17. RAUL, Varas Martnez. Extraccin de contornos rectos. [En lnea] 1999. [Citado el:
25 de Abril de 2011.]
http://www.elai.upm.es:8009/spain/Investiga/GCII/publicaciones/pub00/DOC005_0
0.pdf.
18. EIRIK, Eng. This GUI toolkit makes porting graphics to multiple platforms a snap. [En
lnea] 01 de Noviembre de 1996. [Citado el: 25 de Abril de 2011.]
http://www.linuxjournal.com/article/201.
19. MING, Hu Kuei-. Visual Pattern Recognition by Moment Invariants. s.l. : IRE
Transactions on Information Theory, 1962.
20. HERMILIO, Snchez. Optimizacin de una medida de semejanza para objetos
tridimensionales a partir de invariantes y transformaciones. Mxico : IIMAS, 2000.
21. RAUL, Pinto Elias and Humberto Sossa. Localizacin automtica de objetos 2d y 3d
en imagenes. s.l. : Computacin y Sistemas, 2002. pgs. 26-34.
22. MARIANA Vonzoy Villuendas, Aarn Ruiz Ziga, Mariko Nakano Miyatake, and
Hctor Prez Meana. Marca de agua semifril para autenticacn de imgenes
digitales. Mxico. : SEPI-ESIME, 2001.
80
23. FERNANDO, Martos Navarro. Tecnicos de Soporte Informatico de la Comunidad de
Castilla Y Len. Primera editcin. Sevilla : MAD, S.L., 2005. pg. 166. Vol. I, Temario
comun y test. Grupos III y IV de la comunidad Autnoma de Castilla y Len. ISBN: 84-
565-5098-4.
24. Snchez, CARLOS J. y Fernndez, Vctor. Reconocimiento ptico de Caracteres
(OCR). [En lnea] 2009. [Citado el: 26 de Abril de 2011.]
http://www.it.uc3m.es/jvillena/irc/practicas/08-09/09.pdf.
25. JOSE R. Rodn, Javier Rez R., Ismael Vargas P. OCR para caracteres impresos
basados en rboles Binarios. [En lnea] 2004. [Citado el: 25 de Abril de 2011.]
http://alojamientos.us.es/gtocoma/pid/pid10/OCRarbolbinario.htm.
26. JOSE R. Hilera Gonzlez, Juan P. Romero Villaverde, Jose A. Gutirrez de Mesa.
SISTEMA DE RECONOCIMIENTO PTICO DE CARACTERES (OCR) CON REDES
NEURONALES. [En lnea] 1996. [Citado el: 23 de Abril de 2011.]
http://www.cc.uah.es/hilera/docs/1996/c_jiacse1/c_jiacse1.htm.
27. COMALIS. ELB Web Hosting SL. Comalis soluciones web. [En lnea] Registro
Mercantil de Sevilla, 2005. [Citado el: 10 de diciembre de 2011.]
http://www.comalis.com/ayuda/alias-de-dominio.php.
28. phpMyAdmin. SourceForge.net. phpMyAdmin. [En lnea] 2001. [Citado el: 21 de
Diciembre de 2011.] http://localhost:8080/phpMyAdmin/.
29. MOBIHAUS. Siyoteam SY-630 CITAC Kartica. Powered by Interspire Shopping Cart.
[En lnea] 2012. [Citado el: 23 de Febrero de 2012.]
http://www.mobihaus.net/products/Siyoteam-SY%252d630-%C4%8Cita%C4%8D-
Kartica.html.
30. NOKIA. Carbide C++ tutorial 1 Helloworld. [En lnea] 23 de Setiembre de 2009.
[Citado el: 20 de febrero de 2011.]
http://wiki.forum.nokia.com/index.php/Carbide.c%2B%2B_Tutorial_1_-_Helloworld.
31. POULTON. Using Soun whit Symbian. [En lnea] 6 de octubre de 2003. [Citado el:
10 de febrero de 2011.] http://symbian.newlc.com/Using-Sound-with-Symbian.html.
32. Informtica-Hoy, Spivok. Informtica Hoy. Un servicio de OCR online. [En lnea]
Anuncios google, 2010. [Citado el: 25 de Abril de 2011.] http://www.informatica-
hoy.com.ar/aplicaciones-web/Un-servicio-de-OCR-online.php.
81
33. HOMERO V. Rios, Antonio Marn, Martn Acosta, Joaqun Pea y Nora E. Cancela.
Extraccin de contornos en tomografas y visualizacin 3D. Veracruz : s.n., 2005.
34. EFE. Cuba Out. Ciencia y Tecnologia. [En lnea] El Nacional, 26 de Enero de 2011.
[Citado el: 23 de Abril de 2011.]
http://cubaout.wordpress.com/2011/01/27/reconocimiento-optico-de-caracteres-
ocr-en-el-museo-del-holocausto-de-jerusalen/.
35. BRADLEY, Dereck y ROTH, Gerhard. Adaptive Thresholding Using the Integral
Image. [En lnea] 2007. [Citado el: 21 de Abril de 2011.]
http://people.scs.carleton.ca/~roth/iit-publications-iti/docs/gerh-50002.pdf.
36. VIOL, P y JONES, M.J. Robuste real-time face detection. Vancouver : International
Journal of Computer Vision, 2004. pgs. 137-154. Vol. 57.
37. CANNY, J. A Computational Approach to Edge Detection. s.l. : IEEE Transactions on
Pattern Analysis and Machine Intelligence, 1986. Vol. VIII.
82
A N E X O S
83
ANEXO A: MENU DEL FORMATO
package estudiandojmf;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class JMenuFormato extends JMenuItem implements Action Listener{
private int ancho;
private int alto;
private JPanel modificable;
private Camara padre;
private String dispositivo;
private int ordinal;
public JMenuFormato(String dispositivo,String etiqueta,int ordinal,int ancho,int
alto,Camara Padre,JPanel modificable)
{
super(etiqueta);
this.modificable=modificable;
this.ancho=ancho;
this.alto=alto;
this.addActionListener(this);
this.padre=Padre;
this.dispositivo=dispositivo;
this.ordinal=ordinal;
}
/*
* Retorna el nombre del dispositivo que representa
*/
public String getDispositivo()
{
return dispositivo;
}
public void actionPerformed(ActionEvent e) {
if(padre.getPlayer()==null)
panelCamara.estableceCamara(padre, dispositivo, ordinal);
else
jDispositivos.cambiaResolucion(dispositivo, padre.getPlayer(), ordinal);
padre.setSize(ancho+200, alto+200);
padre.setLocationRelativeTo(padre);
}
}
84
ANEXO B: CAMARA
package estudiandojmf;
import javax.media.Player;
import javax.swing.JPanel;
public class Camara extends javax.swing.JFrame
{
private Player p1;
/** Creates new form Camara */
public Camara(){
initComponents();
initComponents2();
}
public Player getPlayer()
{
return p1;
}
public void setPlayer(Player pin)
{
p1=pin;
}
public JPanel getCamara()
{
return panelCam;
}
private void initComponents2()
{
//registramos los Oyentes de eventos
eventos e=new eventos(this);
addWindowListener(e);
jmCArchivo.addActionListener(e);
jmCBD.addActionListener(e);
jmSalir.addActionListener(e);
jmAcerca.addActionListener(e);
//Cargamos en el menu los Dispositivos detectados
jDispositivos.menuDispositivos(this,jmDispositivos);
setLocationRelativeTo(this); //centramos el formulario
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
panelCam = new javax.swing.JPanel();
85
jMenuBar1 = new javax.swing.JMenuBar();
jmCapturar = new javax.swing.JMenu();
jmCArchivo = new javax.swing.JMenuItem();
jmCBD = new javax.swing.JMenuItem();
jmDispositivos = new javax.swing.JMenu();
jmOtros = new javax.swing.JMenu();
jmSalir = new javax.swing.JMenuItem();
jmAcerca = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Toma una Foto");
panelCam.setBorder(javax.swing.BorderFactory.createTitledBorder("Camarita"))
;
panelCam.setPreferredSize(new java.awt.Dimension(640, 480));
panelCam.setLayout(new java.awt.BorderLayout());
jmCapturar.setText("Capturar");
jmCArchivo.setText("En Archivo");
jmCapturar.add(jmCArchivo);
jmCBD.setText("En Base de Datos");
jmCapturar.add(jmCBD);
jMenuBar1.add(jmCapturar);
jmDispositivos.setText("Dispositivos");
jMenuBar1.add(jmDispositivos);
jmOtros.setText("Otros");
jmSalir.setText("Salir");
jmOtros.add(jmSalir);
jmAcerca.setText("Acerca");
jmOtros.add(jmAcerca);
jMenuBar1.add(jmOtros);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
86
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(panelCam,
javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
layout.createSequentialGroup()
.addContainerGap()
.addComponent(panelCam,
javax.swing.GroupLayout.DEFAULT_SIZE, 120, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Camara().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jmAcerca;
private javax.swing.JMenuItem jmCArchivo;
private javax.swing.JMenuItem jmCBD;
private javax.swing.JMenu jmCapturar;
private javax.swing.JMenu jmDispositivos;
private javax.swing.JMenu jmOtros;
private javax.swing.JMenuItem jmSalir;
private javax.swing.JPanel panelCam;
// End of variables declaration
}
87
ANEXO C: CONEXION
package estudiandojmf;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class conexion {
public static Connection iniciaConexion()
{
Connection conexion=null;
try
{
Class.forName("org.gjt.mm.mysql.Driver");
conexion = DriverManager.getConnection
("jdbc:mysql://localhost/billetes","root","idat");
}
catch (Exception e){mensajero.mensajeError(null, "Fallo al Conectar a
SGBD");}
return conexion;
}
public static void cerrarConexion(Connection con)
{
try {
con.close();
} catch (SQLException ex) {}
}
}
88
ANEXO D: EVENTOS
package estudiandojmf;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class eventos implements WindowListener,ActionListener{
private Camara padre;
public eventos(Camara padre){this.padre=padre;}
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
miPlayer.detenerPlayer(padre.getPlayer());
}
public void windowClosed(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("En Archivo"))
{
miPlayer.guardaImagenEnFichero(miPlayer.capturaFoto(padre.getPlayer()),gua
rdaComo.verDialogo(padre));
}
else if(e.getActionCommand().equals("En Base de Datos"))
{
miPlayer.guardaImagenEnBD(miPlayer.capturaFoto(padre.getPlayer()));
}
else if(e.getActionCommand().equals("Salir"))
{
miPlayer.detenerPlayer(padre.getPlayer());
System.exit(0);
}
}
}
89
ANEXO E: GUARDARCOMO
package estudiandojmf;
import java.awt.Component;
import java.io.File;
import javax.swing.JFileChooser;
public class guardaComo {
public static File verDialogo(Component padre)
{
File rpta=null;
String imagen="";
JFileChooser f = new JFileChooser();
f.setDialogTitle("Guardar Captura como...");
f.showSaveDialog(padre);
if(f.getSelectedFile()!=null)
{
imagen= f.getSelectedFile().getAbsolutePath();
if (imagen.lastIndexOf(".") > 0)
imagen = imagen.substring(0,imagen.lastIndexOf("."));
imagen = imagen+".JPG";
rpta = new File(imagen);
}
return rpta;
}
}
90
ANEXO F: COMPARACIN DE BILLETES
Algoritmo comparacin de imagen
Entorno:
entero dinero /* esta variable almacenar la cantidad de pesos que el usuario
solicita al cajero*/
entero billetes200, billetes100, billetes50, billetes20, billetes10
/* variables que almacenarn la cantidad de billetes de cada cantidad que el
cajero deber de dispensar */
INICIO
/* PRIMERO: Solicitud de la cantidad al usuario */
ESCRIBIR . \n\n Bienvenido programa de comparacin de billetes \n\n
ESCRIBIR .\n \t Introduzca una cantidad de soles y seguidamente pulse la tecla
INTRO:
LEER .%d. dinero
/* SEGUNDO Operaciones para averiguar de cuantos billetes de cada tipo se
necesitan */
* Recordad que tambin se puede poner como dinero = dinero-billetes100*100
*/
billetes100 = dinero/100;
dinero = dinero%100;
billetes50 = dinero/50;
dinero = dinero%50;
billetes20 = dinero/20;
dinero = dinero%20;
billetes10 = dinero/10;
dinero = dinero%10;
/* TERCERO : Impresin de toda la informacin */
ESCRIBIR . \n \n Se le dar los siguientes billetes:\n .
ESCRIBIR .\n \t\t%d billetes de 100, \n \t\t%d billetes de 50, \n \t\t%d billetes de
20., billetes10,
ESCRIBIR .\n \t\t%d billetes de 100, \n \t\t%d billetes de 50, \n \t\t%d billetes de
20., billetes10,
91
ESCRIBIR .\n \t\t%d billetes de 100., billetes50 billetes de 20., billetes de10,
FIN
$% ,('&(+A cdigo entero
(Proxy)para comparar el cdigo binario
/* Este programa trata de simular el comportamiento de un programa de
comparacin de billetes en soles*/
/* ENTRADA: una cantidad positiva entera y mltiplo de 10*/
/* SALIDA: un numero de billetes de cada cantidad en soles*/n/t/
/* **** BIBLIOTECAS NECESARIAS **/
#include <comparacion.h>
/* esta biblioteca es necesaria cuando se necesita llevar a cabo n y t */
/* ** DEFINICIN DE CONSTANTES ***/
/* No hay ninguna*/
/* Comienza el programa*/
main() { /*INICIO*/
/* DECLARACIN DE VARIABLES*/
int dinero ;
/* esta variable almacenar la cantidad de soles que el usuario solicita al
programa*/
int billetes100, billetes50, billetes20, billetes10;
/* Variables que almacenarn la cantidad de billetes de cada cantidad que
el programa deber de comparar */
/* UNA VEZ QUE SE HAN DECLARADO TODAS LAS VARIABLES,
COMIENZAN LAS INSTRUCCIONES */
/* PRIMERO: Solicitud de la cantidad al usuario */
printf( \n\n Bienvenido al comparador de billetes\n\n);
printf( \n \t Introduzca una cantidad de soles y seguidamente pulse la tecla
INTRO: );
scanf( %d, &dinero)
/* SEGUNDO Operaciones para averiguar de cuantos billetes de cada tipo se
necesitan */ para realizar la comparacin
92
billetes100 = dinero/100;
dinero = dinero%100;
billetes50 = dinero/50;
dinero = dinero%50;
billetes20 = dinero/20;
dinero = dinero%20;
billetes10 = dinero/10;
dinero = dinero%10;
/* TERCERO : Impresin de toda la informacin */
printf( \n \n Se le dar los siguientes billetes:\n );
printf( \n \t\t%d billetes de 100, \n \t\t%d billetes de 50, \n \t\t%d billetes de 20,\n
\t\t%d billetes de 10;
mesagge(/* No hay ninguna*/)
printf( \n \t\t%d billetes de 100, \n \t\t%d billetes de 50, \n \t\t%d billetes de 20,
billetes10);
mesagge(/* No hay ninguna*/)
printf( \n \t\t%d billetes de 10, billetes5 );
mesagge(/* No hay ninguna*/)