ALGORITMO PARA DETECCIN DE BORDES Y ULTERIOR
DETERMINACIN DE OBJETOS EN IMGENES DIGITALES
Ledda I. Larcher
a
, Enrique M. Biasoni
a
, Carlos A. Cattaneo
a
, Ana I. Ruggeri
b
, A.
Cecilia Herrera
a
a
Facultad de Agronoma y Agroindustrias, Universidad Nacional de Santiago del Estero, Av.
Belgrano Sud 1927, G4200ABT Santiago del Estero, Argentina,
[email protected],
http://faa.unse.edu.ar
b
Facultad de Ciencias Exactas y Tecnologa, Universidad Nacional de Santiago del Estero, Av.
Belgrano Sud 1927, G4200ABT Santiago del Estero, Argentina, http://fce.unse.edu.ar
Palabras clave: procesamiento de imgenes, segmentacin
Resumen. Utilizando el concepto de conectividad se elabor un algoritmo para reconocer objetos en
una imagen digital binaria.
El algoritmo desarrollado inspecciona una imagen pxel a pxel, examinando aquellos que no hayan
sido asignados a ningn objeto. Se realiza un recorrido secuencial de la matriz imagen y, para cada
pxel con valor 1, se agregan sus coordenadas a una lista. Usando el concepto de 8-vecindad, se
inspeccionarn los vecinos buscando aquellos con valor 1 para agregarlos a la lista, al terminar de
verificar los pxeles conectados al originalmente encontrado, se han almacenado las coordenadas de
cada uno de los pxeles que forman un objeto. De esta manera, cada elemento de la lista es un objeto.
El programa desarrollado result robusto, demostrando alta eficiencia en distintas aplicaciones, siendo
el tiempo computacional directamente proporcional al tamao de los objetos y con bajo consumo de
memoria. Actualmente se trabaja en la relacin rea permetro para evitar contar como nico dos
objetos solapados.
Mecnica Computacional Vol XXX, pgs. 2841-2852 (artculo completo)
Oscar Mller, Javier W. Signorelli, Mario A. Storti (Eds.)
Rosario, Argentina, 1-4 Noviembre 2011
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
1 INTRODUCCIN
La visin artificial tiene como finalidad la extraccin de informacin del mundo fsico a
partir de imgenes, utilizando para ello una computadora.
Un sistema de visin artificial acta sobre una representacin de una realidad que le
proporciona informacin sobre brillo, colores, formas, etctera. Estas representaciones suelen
estar en forma de imgenes estticas, escenas tridimensionales o imgenes en movimiento. Se
trabajar sobre imgenes estticas.
La digitalizacin, es el proceso de paso del mundo continuo (o analgico) al mundo
discreto (o digital) mediante el cual se genera una imagen bidimensional, que es una funcin
que a cada par de coordenadas (x, y) asocia un valor relativo a alguna propiedad del punto que
representa (por ejemplo su brillo o su matiz).
2 ETAPAS DE UN SISTEMA DE VISIN ARTIFICIAL
Se sabe que el ser humano captura la luz a travs de los ojos, y que esta informacin
circula a travs del nervio ptico hasta el cerebro, donde se procesa. Existen razones para
creer que el primer paso de este procesado consiste en encontrar elementos ms simples en los
que descomponer la imagen (como segmentos y arcos). Despus el cerebro interpreta la
escena y por ltimo acta en consecuencia. La visin artificial, en un intento de reproducir
este comportamiento, define tradicionalmente cuatro fases principales:
La primera fase, que es puramente sensorial, consiste en la captura o adquisicin de
las imgenes digitales mediante algn tipo de sensor.
La segunda etapa consiste en el tratamiento digital de las imgenes, con objeto de
facilitar las etapas posteriores. En esta etapa de procesamiento previo es donde,
mediante filtros y transformaciones geomtricas, se eliminan partes indeseables de
la imagen o se realzan las partes de inters.
La siguiente fase, conocida como segmentacin, consiste en aislar los elementos
que interesan de una escena para comprenderla.
Por ltimo se encuentra la etapa de reconocimiento o clasificacin, en la que se
pretende distinguir los objetos segmentados, gracias al anlisis de ciertas
caractersticas que se establecen previamente para diferenciarlos.
Estas cuatro fases no se siguen siempre de manera secuencial sino que, en ocasiones,
suelen retroalimentarse (Figura 1). As, puede ser necesario volver a la etapa de segmentacin
si falla la etapa de reconocimiento, o a la de preproceso, o incluso a la de captura.
captura
preproceso
Segmentacin
Reconocimiento
Figura 1. Fases de un sistema de visin artificial
Las imgenes digitales son seales discretas, que suelen tener origen en una seal
continua.
En el proceso de obtencin de imgenes digitales se distinguen dos etapas. La primera,
conocida como captura, utiliza un dispositivo, generalmente ptico, con el que obtiene
informacin relativa a una escena. En la segunda etapa, que se conoce como digitalizacin, se
transforma esa informacin, que es una seal con una o varias componentes continuas, en la
imagen digital, que es una seal con todas sus componentes discretas.
L. LARCHER, E. BIASONI, C. CATTANEO, A. RUGGERI, A. HERRERA 2842
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
2.1 Muestreo
La obtencin de una imagen digital se realiza mediante un proceso denominado muestreo.
De esta manera se convierte una imagen
C
I , que es algo continuo, en una matriz discreta
D
I de NxM pxeles. El nmero de muestras por unidad de espacio sobre el objeto original
lleva al concepto de resolucin espacial de la imagen, definida como la distancia entre dos
pxeles adyacentes, sobre el objeto original.
De esta forma, el proceso de muestreo para una imagen, que asocia a cada punto un valor
real, cambia una imagen del formato (ecuacin 1):
R y x I
C
e ) , ( donde R y x e , (1)
al formato:
R y x I
D
e ) , ( donde N y x e , y 1 0 , 1 0 s s s s M y N x
que se puede representar en forma matricial (ecuacin 2):
|
|
|
|
|
.
|
\
|
=
) 1 , 1 (
) 1 , 2 (
) 1 , 1 ( ...
) 1 , 1 (
) 1 , 2 (
) 1 , 1 (
) 0 , 1 (
...
) 0 , 2 (
) 0 , 1 (
) , (
M N I
M I
M I
N I
I
I
N I
I
I
y x I
D
D
D
D
D
D
D
D
D
D
(2)
3 RELACIONES BSICAS ENTRE PXELES
Dependiendo de la situacin de los pxeles y de los valores que tienen, se definen ciertas
relaciones de vecindad y conectividad.
3.1 Vecindad
Para todo punto p de coordenadas (x, y) se dice que un pxel q pertenece a sus 4-vecinos y
se escribe ) (
4
p N qe si y slo si q tiene las coordenadas indicadas en la ecuacin 3:
) , 1 ( y x o ) 1 , ( y x o ) , 1 ( y x + o ) 1 , ( + y x (3)
Para todo punto p de coordenadas (x, y) se dice que un pxel q pertenece a sus 8-vecinos y
se escribe ) (
8
p N qe si y slo si q tiene coordenadas (ecuacin 4):
) , 1 ( y x o ) 1 , ( y x o ) , 1 ( y x + o ) 1 , ( + y x o ) 1 , 1 ( y x o ) 1 , 1 ( + y x
o ) 1 , 1 ( + y x o ) 1 , 1 ( + + y x (4)
Las figuras 2 y 3 muestran lo enunciado:
2
4 5
7
Figura 2. Un pxel y sus 4 vecinos
1 2 3
4 5
6 7 8
Figura 3. Un pxel y sus 8 vecinos
Mecnica Computacional Vol XXX, pgs. 2841-2852 (2011) 2843
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
3.2 Conectividad
Se ha visto que una imagen se asimila a una matriz, cada uno de cuyos elementos es un
pxel. Entre los pxeles de esta matriz se puede definir una relacin que define dos pxeles
como conectados cuando son vecinos y sus valores son similares desde algn punto de vista.
Formalmente (ecuacin 5), se define un conjunto V que representa los valores compatibles
para que dos pxeles que sean vecinos se diga que estn conectados:
V ={Valores de los pxeles que definen conectividad} (5)
Se dice que dos pxeles p y q con valores en V estn 4-conectados si ) (
4
p N qe .
Se dice que dos pxeles p y q con valores en V estn 8-conectados si ) (
8
p N qe .
El uso de la 8 conectividad puede dar lugar a ciertas ambigedades en ciertos anlisis de
conectividad. Para eliminar esta ambigedad se define la m-conectividad.
Se dice que dos pxeles p y q con valores en V estn m-conectados si | | ) (
4
p N qe o
| | ( ) ) ( ) ( / ) (
4 4 8
p N q N x x y p N q e e x no tiene valores en V. Es decir estn m-conectados si
estn cuatro conectados o si estn 8 conectados y no tienen ningn 4 vecino comn 4
conectado.
3.3 Camino
Un camino desde el pxel p, de coordenadas (x, y), al pxel q, de coordenadas (s, t), es una
secuencia de pxeles distintos de coordenadas (ecuacin 6):
(x
0
, y
0
), (x
1
, y
1
), ... , (x
n
, y
n
) (6)
donde (x
0
, y
0
)=(x, y) y (x
n
, y
n
)=(s, t) y (x
i
, y
i
) est conectado a (x
i-1
, y
i-1
), siendo n la longitud
del camino. Se puede hablar de 4, 8 y m-caminos dependiendo del tipo de conexin
involucrada.
3.4 Componente conexa
Para todo pxel p de una imagen, el conjunto de los pxeles hasta los que hay un camino
desdep se dice que forman su componente conexa. Adems se cumple que dos componentes
conexas distintas tienen conjuntos de pxeles disjuntos (Vlez Serrano et al., 2003).
4 SEGMENTACIN
El fin ltimo de la mayora de las aplicaciones computarizadas es la identificacin de
objetos nicos en la imagen que sean relevantes para la aplicacin especfica. La
segmentacin se refiere al proceso de separar los objetos de inters del fondo de la imagen.
Pueden usarse varias tcnicas, que varan desde lo ms simple (como umbralizado y
mscaras) a lo ms complejo (como la deteccin de bordes). La literatura contiene cientos de
tcnicas de segmentacin pero no existe un mtodo nico que pueda considerarse ptimo para
todo tipo de imgenes (Bovik, 2009) Los mtodos de segmentacin varan dependiendo de la
modalidad de la imagen, el dominio de aplicacin y otros factores especficos. Mientras que
algunos mtodos emplean tcnicas de reconocimiento de patrones basadas en intensidad pura,
tales como el umbralizado seguido del anlisis de componentes conectados (Higgins et al.
1989, Niki et al. 1993), otros mtodos aplican modelos especficos para extraer informacin
(Molina et al. 1998, Klein et al., 1997). Dependiendo de la calidad de la imagen y de factores
generales como -por ejemplo- el ruido, algunos mtodos de segmentacin podran requerir un
pre procesamiento de la imagen antes de aplicar el algoritmo de segmentacin (Guo y
Richardson, 1998, Sato et al., 1998). Por otra parte, algunos mtodos aplican post
L. LARCHER, E. BIASONI, C. CATTANEO, A. RUGGERI, A. HERRERA 2844
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
procesamiento para resolver problemas que surgieran de una sobre-segmentacin. Sobre todo,
los mtodos de segmentacin pueden ser ampliamente categorizados en basados en un punto,
basados en bordes y basados en regiones (Bovik, 2009)
La segmentacin es el proceso que divide una imagen digital en regiones homogneas con
respecto a una o ms caractersticas (como, por ejemplo, el brillo o el color) con el fin de
facilitar un posterior anlisis o reconocimiento automtico. Localizar la cara de una persona
dentro de la imagen de una fotografa o encontrar los lmites de una palabra dentro de una
imagen de un texto, son ejemplos de problemas de segmentacin.
De acuerdo a Baxes (1994), la segmentacin debe verse como un proceso que, a partir de
una imagen, produce otra en la que cada pxel tiene asociada una etiqueta distintiva del objeto
al que pertenece. As, una vez segmentada una imagen, se podra formar una lista de objetos
consistentes en las agrupaciones de los pxeles que tengan la misma etiqueta.
La segmentacin termina cuando los objetos extrados de la imagen se corresponden
unvocamente con las distintas regiones disjuntas a localizar en la misma. En este caso se
habla de segmentacin completa de la escena o imagen y en el caso contrario, de
segmentacin parcial. En una escena compleja, el resultado de la segmentacin podra ser un
conjunto de regiones homogneas superpuestas y en este caso, la imagen parcialmente
segmentada deber ser sometida despus a un tratamiento posterior con el fin de conseguir
una segmentacin completa.
El proceso de segmentacin de una imagen depende del problema que se desee resolver.
Por ejemplo, sobre una imagen de una pgina de texto se pueden segmentar las palabras y los
caracteres que las forman (si se desea hacer OCR de los mismos), o los logotipos y
membretes (si se desea clasificar el documento), etc. Por ello, dentro de una misma imagen
pueden realizarse diferentes segmentaciones.
5 ALGORITMO
Utilizando el concepto de componente conexa, se puede plantear el detectar los objetos
presentes en una imagen al encontrar las componentes conexas de la misma. Esto ocurre
cuando los objetos tienen un color uniforme y distinto del fondo, lo que permite asegurar que
los contornos del objeto se corresponden con los bordes de la componente conexa. En el caso
de imgenes en blanco y negro las componentes conexas suelen corresponder a los objetos
directamente.
Se usa una matriz O, cuyo tamao cambiar a lo largo de la ejecucin del programa. En
ella se almacenarn las coordenadas de los pxeles que componen a los diferentes objetos.
Se toma una imagen digital binarizada, representada en una matriz I de NxM pxeles, y se
recorre de izquierda a derecha, de arriba hacia abajo.
La inspeccin de vecinos se realiza tomando como casos especiales las esquinas superiores
derecha e izquierda, los bordes izquierdo y derecho, las esquinas inferiores izquierda y
derecha y el borde inferior.
Se recorre la matriz I elemento a elemento.
Para cada pxel p(i, j) =1 se anotan sus coordenadas en una lista y se buscan entre sus 8
vecinos aquellos que estn conectados.
Cada vecino v(k, l) que se encuentra con el valor 1, es agregado a la matriz O, a
continuacin del pxel p(i,j). En este momento, el inters se centrar en el pxel v(k, l) para
quien se buscarn los vecinos distintos de cero. A medida que se los encuentre, se chequea
que no hayan sido previamente seleccionados y se los agrega a la matriz O pasando a ser el
nuevo pxel de inters.
Mecnica Computacional Vol XXX, pgs. 2841-2852 (2011) 2845
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
A efectos de no agregar pxeles repetidos (con el consecuente consumo de memoria) ni
inspeccionar pxeles ya chequeados (lo que insumira tiempo computacional), cada uno es
anulado en el momento de agregarlo a la lista.
El proceso se repite hasta no encontrar ms vecinos conectados. En este momento se
incrementa el ndice fila de la matriz O que, de esta manera, almacena un trayecto por fila,
cada uno de stos ser considera un objeto de la imagen.
El algoritmo retorna el control al recorrido general de la matriz, pasando p(i, j+1) a ser el
nuevo pxel de inters y se contina el recorrido secuencial sobre I.
La figura 4 muestra el diagrama de bloques del proceso descrito y puede observarse en la
figura 5 un ejemplo prctico
L. LARCHER, E. BIASONI, C. CATTANEO, A. RUGGERI, A. HERRERA 2846
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
Mecnica Computacional Vol XXX, pgs. 2841-2852 (2011) 2847
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
Figura 4. Diagramas de los diferentes procesos. Slo se presenta la rutina vec5 ya que slo deben cambiarse los ndices
L. LARCHER, E. BIASONI, C. CATTANEO, A. RUGGERI, A. HERRERA 2848
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
Figura 5. Matriz I con la lista de objetos encontrados. Por cada objeto se listan las coordenadas de cada
elemento
6 RESULTADOS
El algoritmo presentado se program usando Matlab utilizando una PC con procesador
Intel Core2 Quad Q8200 con 2 Gigabytes de RAM.
Para realizar el conteo de objetos se utilizaron imgenes color, que fueron sometidas a un
pre-procesamiento usando algoritmos de umbralizado por entropas de Shannon y el mtodo
de Otsu con el objetivo de obtener imgenes binarizadas.
Las imgenes en formato jpg se transforman a matrices para su procesamiento.
A partir de imgenes generadas por simulacin de crecimiento de granos (Cattaneo y
Silvetti, 2009), se obtuvo la figura 6, que representa un crecimiento de granos en aluminio a
773 K con 20 orientaciones cristalogrficas distintas en un tiempo de simulacin de 480 lazos.
En la Figura 7 puede observarse el resultado del pre procesamiento. Por ltimo, la Figura 8 se
muestra el conteo manual, que coincide con el nmero de granos encontrados por el programa
(44 objetos). La imagen es de 300 x 300 y el tiempo de procesamiento fue de 31 minutos
Al 773 K - 20 orientaciones - t=480
50 100 150 200 250 300
50
100
150
200
250
300
Figura 6. Crecimiento de granos en aluminio a 773 K con 20 orientaciones cristalogrficas distintas en un tiempo
de simulacin de 480 lazos
(1,2) (1,3) (2,3) (2,4) (1,5) (2,5)
(4,6) (4,7)
(6,3) (6,4) (7,2) (6,5) (7,5)
Cantidad de
objetos
encontrados
Cantidad de elementos en cada
objeto
Mecnica Computacional Vol XXX, pgs. 2841-2852 (2011) 2849
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
Figura 7. Imagen binarizada Figura 8. Conteo manual de objetos
A los fines de probar la eficacia se utiliz la Figura 9 que tiene como dimensiones 440x231
pxeles. Los resultados entre el conteo usando el programa y el realizado manualmente
coincidieron (12 objetos) y fue realizado en 173 segundos.
Figura 9
A continuacin se prob utilizando la Figura 10 en la que, no slo vara la cantidad de
objetos, sino tambin el tamao de los mismos. Los resultados obtenidos no coincidieron con
el conteo manual, aunque una verificacin posterior permiti determinar que se deba a
defectos en la conexin de los pxeles, como se muestra en la Figura 11. El tiempo de
procesamiento fue de 442 segundos para una imagen de 450x470 pxeles.
L. LARCHER, E. BIASONI, C. CATTANEO, A. RUGGERI, A. HERRERA 2850
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
Figura 10
7 CONCLUSIONES
El programa demostr alta eficiencia en distintas aplicaciones, siendo el tiempo
computacional directamente proporcional al tamao de los objetos.
El proceso es altamente dependiente de una correcta umbralizacin como pudo
comprobarse al usar la figura 10 sin realizar umbralizado. En la Figura 11 se muestra la
distorsin y diferentes tonos de gris para que el ojo humano perciba al grupo de pxeles como
una curva; durante el procesamiento, los niveles de gris muy claros eran tomados como
blanco, los oscuros como negro resultando as pequeos objetos separados, por lo que el
conteo era incorrecto.
Figura 11. Imagen sin umbralizar y detalle de uno de los objetos
Al probar el funcionamiento del programa, con una matriz cuadrada con la diagonal
principal de valor 1 (uno) el resultado es correcto; sin embargo si la situacin fuera al
Mecnica Computacional Vol XXX, pgs. 2841-2852 (2011) 2851
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar
contrario (que la diagonal principal se encuentre en cero dividiendo la matriz en dos objetos),
el conteo obtenido es incorrecto debido a la comprobacin del vecino 6, con lo que se
contabiliza como si fuera un objeto nico. (Ver Figura 12). Sin embargo, situaciones de este
tipo (objetos con slo un pxel de separacin entre los mismos) son muy poco probables en
imgenes reales.
El equipo de investigacin se encuentra en este momento trabajando en la resolucin del
problema antes mencionado, as como en la relacin rea permetro para evitar contar como
nico dos objetos solapados.
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
0 1 1 1
1 0 1 1
1 1 0 1
1 1 1 0
Figura 12. Situacin problemtica al comprobar los vecinos
REFERENCIAS
Baxes, G.A., Digital Image Processing: Principles and Applications, J. Wiley & Sons, 1994.
Bovik A., The essential guide to image processing. Academic Press, 2009.
Cattaneo, C. A., Silvetti, S. P., Efectos de la difusin en borde de grano en el crecimiento
anormal de grano. Mecnica Computacional XXVIII: 2425-2433, 2009.
Guo, D. and Richardson, P., Automatic vessel extraction from angiogram images. IEEE
Comput. Cardiol., 25:441444, 1998.
Higgins, W. E., Spyra, W. J. T., Ritman, E. L., Kim, Y., and Spelman, F. A., Automatic
extraction of the arterial tree from 3-D angiograms. IEEE Conf. Eng. Med. Biol., 2:563
564, 1989.
Klein, A. K., Lee, F., and Amini, A. A., Quantitative coronary angiography with deformable
spline models. IEEE Trans. Med. Imaging, 16:468482, 1997.
Molina, C., Prause, G., Radeva, P., and Sonka M., 3-D catheter path reconstruction from
biplane angiograms. SPIE, 3338:504512, 1998.
Niki, N., Kawata, Y., Satoh, H., and Kumazaki T., 3D imaging of blood vessels using x-ray
rotational angiographic system. IEEE Med. Imaging Conf., 3:18731877, 1993.
Sato, Y., Nakajima, S., Shiraga, N., Atsumi, H., Yoshida, S., Koller, T., Gerig, G., and
Kikinis, R., 3Dmultiscale line filter for segmentation and visualization of curvilinear
structures in medical images. IEEE Med. Image Anal., 2:143168, 1998.
Vlez Serrano, J. F., Moreno Daz, A. B., Snchez Calle, ., Esteban Snchez-Marn J. L.,
Visin por computador. Editorial Dykinson, 2003.
L. LARCHER, E. BIASONI, C. CATTANEO, A. RUGGERI, A. HERRERA 2852
Copyright 2011 Asociacin Argentina de Mecnica Computacional http://www.amcaonline.org.ar