Sei sulla pagina 1di 8

Taller 4

Jaime Andrs Vallejo Avellaneda Cdigo N.o 200710050035* e o Jhon Jaime Ram Ochoa Cdigo N.o 20071005029** rez o 1 de mayo de 2012

Resumen El taller realizado presenta la deteccin de distintas guras geomtricas e intensidades de gris incluo e yendo el proceso realizado para llegar al resultado nal. A partir de este se dan las recomendaciones para trabajos similares en los que se desee detectar ms de una gura o en donde cambien las condiciones de a iluminacin lo cual puede afectar los resultados aqu presentados. o Palabras clave:Color, Deteccin, Figuras, Histograma, Intensidad. o

* Estudiante de Ingenier a Electrnica de la Universidad Distrital Francisco Jose de Caldas. Correo Electrnico: javalleo o joa@correo.udistrital.edu.co ** Estudiante de Ingenier a Electrnica de la Universidad Distrital Francisco Jose de Caldas Correo Electrnico: jjramireo o zo@correo.udistrital.edu.co

1.

Introduccin o

La deteccin de formas e intensidades en imgenes es uno o a de los procedimientos ms utiles dentro del procesamiento for n=1:460 a digital de imgenes puesto que su campo de accin es muy a o if(disable==1) break; vasto. Areas como la seguridad, la generacin de miles de o productos, y la investigacin cient o ca son algunos de los end; for m=1:819 campos que se han visto beneciados por este tipo de anlia if(im1(n,m)==1) sis que cada d toma an ms fuerza y que se ha vuelto a u a muy amigable para cualquier persona. x1=m; y1=n; Para llevar a cabo este tipo de anlisis son muchas las a herramientas utilizadas pero se destaca MATLAB por su m1=m; precisin y su facilidad de uso. En el taller presentado a o while(im1(n,m1)==1) m1=m1+1; continuacin se realiza un breve paso por este tipo de anlio a sis llevando a cabo la deteccin de las 3 guras geomtricas o e end disable=1; principales (tringulo, cuadrado, c a rculo) y la discriminacin o break; de intensidades de distintas guras incluyendo los algoritmos desarrollados para cada uno de estos procesos end; end; end;

A continuacin se muestra el cdigo implementado a paro o tir de lo dicho anteriormente.

2.

Formulacin y desarrollo del proo blema


Ejercicio 1

dis1 = y2-y1;

2.1.

Ahora se proponen las formas de evaluar si dicha gura es un c rculo. Como ya se conoce el dimetro del circulo es a DETECCION DE FORMAS fcil hallar el centro del circulo, ahora se eval a si la misma a u Para detectar en una imagen la forma de la gura (tringu- distancia vertical con respecto al centro es igual a la distana los, cuadrados o c rculos),se plantea el siguiente algoritmo: cia horizontal con respecto al centro, de no ser as se des En primer lugar para detectar si la gura es o no un carta inmediatamente como c rculo, si resulta ser correcta c rculo, se realiza un barrido descendente por las, barrien- la prueba se han hallado 4 puntos de la gura, (que pueden do las columnas de izquierda a derecha. Inmediatamente ser de un c rculo o de un cuadrado), entonces se procede a se detecte un pixel blanco se ha localizado la gura y se evaluar una ultima condicin la cual plantea que los puntos o ha hallado el punto superior de la misma (y1,x1), despus diagonales con respecto al centro deben tener la misma dise de tener dicho pixel se hace un barrido vertical descenden- tancia (radio), los cuales se observan en la gura 2. Como te manteniendo constante el valor de la columna, ahora se estos ultimos son los puntos frontera se debe vericar si es evala el punto en el que la intensidad del pixel vuelva a ser tos tienen puntos vecinos de intensidades negro para los que u negro(y2,x1), a esta distancia la denotaremos como dis1. Si estn fuera de la gura y vecinos blancos para los que estn a a las pruebas posteriormente realizadas resultan coherentes dentro de la gura, si esta ultima condicin no se cumple o con las caracter sticas de un c rculo dis1 ser el dimetro no satisface las condiciones del c a a rculo. del c rculo.

Figura 2: Puntos de prueba para el c rculo. Figura 1: Barrido para el c rculo.

El cdigo que implementa las condiciones anteriores es el o siguiente, donde prueba 1 corresponde a la evaluacin de los o 2

puntos horizontales y prueba 2 corresponde a la evaluacin barrido se realiza de forma horizontal (izquierda a derecha) o de los puntos diagonales de prueba. barriendo las las de forma descendente, el tercer barrido se realiza de forma horizontal (derecha a izquierda) barriendo if(im1(centro(1),p1+error)==1 & im1(centro(1) las las de forma ascendente y el ultimo barrido se realiza ,p2-error)==1) de forma vertical ascendente barriendo las columnas de izprueba1=0; quierda a derecha. Los barridos se generaron en MATLAB else de la siguiente forma: if(im1(centro(1),p1-error)==1 & im1(centro(1) ,p2+error)==1) % barrido 1 prueba1=1; else disable=0; prueba1=0; end for n=1:460 end if(disable==1) p3 = round(radio*sin(45)); p4 = round(radio*cos(45)); break; end; for m=1:819 if(im1(n,820-m)==1) x1=820-m; %punto 1 y1=n; punto1=[y1 x1]; disable=1;

if( (im1(centro(1)-p3+error,centro(2)-p4+error)==1) & (im1(centro(1)-p3+error,centro(2)+p4-error)==1) & (im1(centro(1)+p3-error,centro(2)+p4-error)==1) & (im1(centro(1)+p3-error,centro(2)-p4+error)==1) & (im1(centro(1)-p3-error,centro(2)-p4-error)==0) break; & (im1(centro(1)-p3-error,centro(2)+p4+error)==0) end; & (im1(centro(1)+p3+error,centro(2)+p4+error)==0) end; & (im1(centro(1)+p3+error,centro(2)-p4-error)==0)) end; prueba2=1; else % barrido 2 prueba2=0; end for m=1:819 Si las pruebas dan positivas se arroja que la gura es un c rculo, el valor del dimetro del c a rculo y el centro en el que se encuentra. Ahora bien si las pruebas realizadas anteriormente dan negativas, querr decir que la gura no es a c rculo, por lo tanto habr que proseguir con la evaluacin a o de un cuadrado o un tringulo. Para esto se propone un a algoritmo que contempla 4 barridos como se aprecian en la Figura 3.

if(disable==1) break; end; for n=1:460 if(im1(n,m)==1) x2=m; %punto 2 y2=n; punto2=[y2 x2]; disable=1; break; end; end; end; % barrido 3

for m=1:819 if(disable==1) break; end; for n=1:460 if(im1(461-n,820-m)==1) x3=820-m; %punto 3 Figura 3: Puntos de prueba para el cuadrado. y3=461-n; punto3=[y3 x3]; El primer barrido se realiza de forma vertical descendendisable=1; te barriendo las columnas de derecha a izquierda, el segundo 3

break; end; end; end; end % barrido 4 for n=1:460 if(disable==1) break; end; for m=1:819 if(im1(461-n,m)==1) x4=m; %punto 4 y4=461-n; punto4=[y4 x4]; disable=1; break; end; end;

triangulo=1; pa=p1; pb=p3; pc=p4;

if (abs(p1-p3)<9) triangulo=1; pa=p1; pb=p2; pc=p4; end if (abs(p4-p2)<9) triangulo=1; pa=p1; pb=p3; pc=p4; end

if (abs(p4-p3)<9) triangulo=1; pa=p1; La idea es que aplicar cada uno de los barridos, inmediapb=p2; tamente se detecte un pixel blanco se guarda dicha posicin o pc=p4; sobre la imagen indicando que es un vrtice de la gura , end e de esta manera como son 4 barridos se generan 4 puntos que podr ser los 4 vrtices, sin embargo si la gura es un an e En el cdigo las posiciones de cada pixel se expresaron o triangulo 2 puntos de estos sern el mismo, como se muestra como nmeros complejos para facilitar clculos de magnia u a en la Figura 4. tud. En cada condicin se eval a si la magnitud de la resta o u entre los puntos es menor a 9, si es as querr decir que los a puntos son el mismo. Idealmente la resta entre los puntos debiese ser cero, sin embargo como se muestra en la gura 5, cada vrtice comparte ms de un pixel lo cual genera un e a margen de error que debe ser tenido a la hora del clculo de a dichos puntos. end;

Figura 4: Localizacin de puntos (vrtices) para el tringulo. o e a

Entonces para diferenciar si existen 3 puntos o 4 puntos vrtices sobre la gura, se debe hacer la debida comparae cin entre los mismos. A continuacin se muestra como se o o implement en MATLAB: o
Figura 5: Margen de error que debe ser contemplado en los vrtices. e

p1=x1+1i*y1; p2=x2+1i*y2; p3=x3+1i*y3; p4=x4+1i*y4; if (abs(p1-p2)<9) 4

Si de la evaluacin resulta que es un tringulo, se calcula o a el per metro de la siguiente forma: distancia2=abs(pb-pc); distancia3=abs(pa-pc);

perimetro_triangulo=distancia1+distancia2+distancia3; Donde pa, pb y pc son los puntos vrtices del tringulo. e a Si la evaluacin arroja que es un cuadrado el per o metro se calcula de la siguiente forma: distancia1=abs(p1-p2); distancia2=abs(p1-p3); distancia3=abs(p4-p2); distancia4=abs(p4-p3); perimetro_cuadrado=distancia1+distancia2 +distancia3+distancia4; DETECCION DE COLORES Para detectar el color de las guras se debe realizar un anlisis de la intensidad de gris en cada una de las mismas a a partir del histograma de la imagen. Si la imagen se encuentra originalmente a color debe llevarse primero a escala de grises y posteriormente convertirla a uint8 para que pueda realizarse el histograma. Una vez cargada la imagen se realiza el histograma y posteriormente se gracar mediante las siguientes instruca ciones. im2=imhist(im1); figure,stem(im2,.) A partir de este histograma se determinarn los rangos a para cada color y se gracarn sobre la gura original de la a siguiente forma.

Figura 6: C rculo de prueba.

Figura 7: Tringulo de prueba. a

[fil, col]=find(im1>=x&im1<=y); %x=valor minimo del rango la figura es un triangulo %y=valor maximo del rango los vertices son : plot(col,fil,r.) 733 209 %el valor de r se cambia de acuerdo al rango seleccionado 801 303 620 392 el valor del perimetro es : 3. Resultados 532.7918

3.1.

Ejercicio 1

DETECCION DE FORMAS Despus de implementado el algoritmo se ejecutar para e a comprobar su funcionamiento. En primer lugar se trabajar con un c a rculo de prueba que se observa en la Figura 6. Arrojando como resultado: la figura es un crculo el diametro del circulo es : 114 el centro del circulo es : 389 722 Para el tringulo de prueba de la Figura 7 se obtiene: a

Para el cuadrado de prueba de la Figura 8 se obtiene:

Figura 8: Cuadrado de prueba.

colores de las guras y los restantes 2 muy probablemente harn referencia a un solo color que presenta variacin en a o su intensidad. Para comprobar esto se seleccionan los rangos de colores incluyendo cada pico en cada uno de ellos. El fondo no se tendr en cuenta ya que no es el motivo de anlisis. a a El primer rango a establecer ser el correspondiente a a los alrededores del ultimo pico en el histograma. Puesto que est ms cerca de los colores claros, este se establecer como a a a Como se pudo observar anteriormente los resultados ob- amarillo tenidos son satisfactorios. DETECCION DE COLORES 4000 En nuestro caso la imagen seleccionada se encontraba en 3500 intensidad de gris por lo cual no fue necesario pasarla a esta 3000 escala. La imagen utilizada se presenta en la Figura 9 y su 2500 histograma en la Figura 10. la figura es un cuadrado los vertices son : 69 555 69 252 383 555 383 252 el valor del perimetro es : 1234
2000 1500 1000 500 0

X= 178 Y= 40

160

170

180

190

200

210

220

230

Figura 11: Rango de color amarillo.

Este rango se graca de la siguiente forma [fil, col]=find(im1>=178&im1<=201); plot(col,fil,y.) y se obtiene la siguiente imagen
16000 14000 12000 10000 8000 6000 4000 2000 0

Figura 9: Imagen original.

50

100

150

200

250

300

Figura 10: Histograma de la imagen original.

Figura 12: Figuras de color amarillo.

Se puede apreciar en la Figura 9 que se tienen distintas guras geomtricas con distintas intensidades de gris. De e igual forma se puede ver que se tienen 3 grupos de a 4 guras con intensidades muy similares, lo cual indica que solo existen 3 colores en la imagen original aparte del fondo. De otra parte, de acuerdo al histograma se aprecian 3 picos sobresalientes y 2 ms similares y cercanos entre ellos. a El pico grande es fcil determinar que hace referencia al a fondo de la imagen puesto que es el color ms repetido y a as mismo est del lado de los colores ms oscuros. Los dos a a picos que le siguen en amplitud harn referencia a 2 de los a 6

El siguente rango corresponde a la unin de los 2 picos o de menor amplitud, los cuales, continuando con la escala de color se tomarn como color verde. La seccin del histograa o ma correspondiente se presenta en la Figura 13. Y al gracar el rango establecido se obtiene la imagen presentada en la Figura 14. En esta ultima gura se puede ver que el color verde est presente en 4 guras y de igual forma en los bordes a de algunas de las mismas. Adicionalmente se puede ver que uno de los c rculos tiene gran parte de este color lo cual se debe a la iluminacin sobre la imagen la cual hace que la o intensidad de gris var e.

4000 3500 3000 2500 2000 1500 1000


X= 87 Y= 458

500 0

70

80

90

100

110

120

130

140

Figura 16: Figuras de color amarillo, verde y azul. Figura 13: Rango de color verde.

4.

Discusin o

El algoritmo que fue desarrollado para identicar la forma de la gura que se presenta en la imagen funciona adecuadamente bajo ciertas condiciones, por ejemplo que el fondo sea totalmente negro y que solo haya una gura en la imagen. Para la gura F igurasGeometricasGrandes habr que realizar unas peque as modicaciones al algoa n ritmo para detectar las formas de dichas guras, en primer lugar se debe discriminar cual es fondo y cuales son guras de tal manera que se coloque un umbral para dejar el fondo negro. Posteriormente enmascarar cada gura de tal forma Figura 14: Figuras de color amarillo y verde. que solo que quede una gura en la imagen y en este instante si aplicar el algoritmo desarrollado, y as con todas las guras que se encuentren en la imagen. Por ultimo se dene el rango del pico restante el cual Por su parte la deteccin de colores, o mejor, de intensio en este caso se tomar como color azul por su cercan a a a dades debe realizarse para cada imagen en particular puesto los colores ms oscuros. La seccin del histograma para este que para diferentes imgenes, distintos colores pueden tomar a o a pico se presenta en la Figura 15. las mismas intensidades utilizadas en el ejercicio presentado. As mismo el color denido puede verse afectado por las 2000 variaciones en la luz que incida sobre cada gura por lo que 1800 no se puede dar un concepto unico e irremplazable del color 1600 asignado.
1400 1200 1000 800 600 400

5.
X= 53 Y= 119

Conclusiones

La deteccin de formas es un proceso un poco complejo en o el que se tienen que tener en cuenta la caracter sticas de 200 0 cada gura as como las posible posiciones en las que puede 50 55 60 65 70 75 80 85 encontrarse. En este punto se hace muy importante la lgio ca que se tenga a la hora de implementar el algoritmo pues no siempre el programa se enfrentar a los mismos escenaa Figura 15: Rango de color azul. rios. As mismo la deteccin de las intensidades aunque es o a Y la imagen obtenida al gracar este nuevo rango se un proceso ms sencillo puede llegar a realizarse de forma errnea si no se tienen en cuenta las condiciones de ilumio aprecia en la Figura 16. nacin de la imagen y los distintos rangos escogidos ya que o En este ultimo caso se puede ver que las 4 guras res para imgenes ms complejas estos variarn mucho ms y a a a a tantes son de color azul al igual que parte de los bordes de se har ms dif la seleccin de picos. a a cil o algunas de las mismas. Finalmente, el c rculo que presenNo obstante, los resultados obtenidos en las secciones taba una seccin en color verde se ha rellenado de azul, lo o anteriores permiten establecer que se cumpli con las exo cual indica que la gura originalmente es de color azul pepectativas iniciales. Tanto la deteccin de formas como de o ro la iluminacin que incide sobre ella hace que al verse en o intensidad de gris este valor se acerque al rango del verde. intensidades se efectuaron de forma correcta para los esce7

narios seleccionados.

Referencias bibliogrcas a
[1] Procesamiento de Imagenes con MatLab http://es.scribd.com/doc/23371/Procesamientode-imagenescon- Matlab [2] Modicacin del histograma de una imagen. Xavier Feo lip Len, Alfonso M. Moya Cataln, Antonio J. Pea o a n Monferrer, Daniel Segarra Felis [3] MATLAB: Introduccin al procesamiento de imgenes. o a http://informatica.uv.es/iiguia/VC/tutorial.pdf

Potrebbero piacerti anche