Está en la página 1de 12

DETECCION DE BORDES EN PDI

Jefferson Damián Enríquez Melo

Código: 1144043136

Universidad Santiago de Cali, Facultad de Ingenierías, Programa de Electrónica, Procesamiento Digital de Imágenes Cali, Valle del Cauca, Colombia Junio 7/2013
RESUMEN Durante el curso de procesamiento digital de imágenes hemos tratado temas de gran interés en la adquisición de imágenes para un análisis correspondiente, en este informe se va dar una visión acerca de cómo se puede tratar una detección de bordes en imágenes digitales. En su primera aplicación se demostrara como manejar una imagen RGB y de esta dar respuestas para cada una de las capas de la misma forma para un espacio HSV. Se pretende de esta forma estudiar la manera como se comporta un operador de desenfoque (unsharp), y por ultimo concluir el método más adecuado para la detección de bordes. Palabras clave: Procesamiento digital de imágenes, Matlab toolbox procesamiento de imágenes, umbral, mapa de bits, detector de bordes Roberts y Sobel.

ABSTRAC During the course of digital image processing we have addressed topics of great interest in acquisition of images for a corresponding analysis in this report will give an overview about how to treat an edge detection in digital images. In your first application were shown how to handle an RGB image and thus provide answers to each of the layers in the same way to HSV space. It thus aims to study how it behaves blur operator (unsharp), and finally conclude the most appropriate method for the detection of edges. Keywords: Digital image processing, Matlab image processing toolbox, threshold, bitmap, detect of edge Roberts and Sobel.

laplaciano. Es uno de los importantes metodos de segmentación.OBJETIVOS:  Realizar la demostración de los diferentes filtros aplicados a imágenes RGB. 1. operador Roberts. Para solucionar este planteamiento se verán metodologías . Hasta el día de hoy se han desarrollado numerosos algoritmos de detección de bordes como lo son:     Roberts edge detector.1 Umbralizacion (Thresholding): Crear algoritmos que sean capaces de realizar las diferentes tareas anunciadas por el docente. El interés por saber cuál es el requerido para obtener una mejor respuesta en precisión y definición de borde es el tema central en este documento.1. Canny edge detector.1. Fig(1) Umbralizacion coins. operador Sobel. etc. telecomunicaciones. Deducir las diferentes operaciones que se realizan en el procesamiento de imágenes. todo esto con la ayuda del toolbox de Matlab para PDI. como el gradiente. biología entre muchas ciencias que tienen la necesidad de distinguir figuras dentro de un plano 2D. como cartografía. ingeniería. a lo que conlleva un fuerte cambio de intensidad dentro de una imagen en particular. Prewitt edge detector.   1.1 Detección de bordes: se presentan algunos conceptos básicos relacionados a la detección de bordes en imágenes digitales. 1. medicina. Describir resultados teórico prácticos de lo que observemos en la práctica. aplicadas en clase.  1. El objetivo es convertir una imagen en escala de grises a una nueva con dos niveles.png. Sobel edge detector.2 Deteccion de Bordes (EdgeDetection): Se basan principalmente en operadores diferenciales. La detección de estos resulta útil en diversas disciplinas. INTRODUCCION El diccionario de la real academia española define borde como el extremo u orilla de algo. Fig(2) Detector de bordes ‘Sobel’. de tal manera que los objetos se separe en el fondo. estos funcionan localmente.

la derivada es un vector que apunta en la dirección de la máxima variación de f(x. Este vector se denomina gradiente y es definido como: 1. En las funciones bidimensionales f(x.1. Fig(3) Mascaras Roberts Obtiene buena respuesta en bordes diagonales.2. Sobel y Frei-Chen.2.1. Tiene pobres deteccion.3 Operadores de Prewitt.  El operador Sobel (K=2). Se formulan estos tres operadores de forma conjunta con las siguientes máscaras de convolución que se muestran a continuación: 1 2+𝐾 1 2+𝐾 1. cuanto a la de cualidades La derivada de una señal continua proporciona las variaciones locales con respecto a la variable.2 Operador de Roberts: Las máscaras que se utilizan en este operador son:  En el operador Prewitt(K=1) se involucran a los vecinos de filas/ columnas adyacentes para proporcional mayor inmunidad al ruido.1 Operadores basadas en la primera derivada: asistencias en localizacion.1.y).2. de forma que el valor de la derivada es mayor cuanto más rápidas son estas variaciones.1. ofrece tambien valiosas . se supone que es mas sensible a los bordes diagonales que el de Prewitt aunque en la practica existe poca diferencia entre ellos.y) y cuyo modulo es proporcional a dicha variación.

'sobel'. b22=or(b1.title ('Sobel Horizontal'). subplot(2.1). imfilter. . subplot(2.b2). sf=fspecial('sobel').title ('Sobel').4). subplot(2. Un ejemplo particular es este ejemplo: clc clear all im=imread('jefer. sc=sf'.sc).3).subimage(b2).titl e('Imagen Original'). b3=edge(b22.2. También se puede aplicar el filtro creando una mascara con la función fspecial.2.title ('Sobel Horizontal').2.subimage(b2). BW = edge(I.thresh.'sobel'). el gradiente es el mismo para los bordes Verticales.title ('Sobel Vertical').2.jpg'). subplot(2. b1=edge(im1.2. En Matlab la función que detecta bordes se llama edge.subimage(b1). b2=imfilter(im1. El parámetro thresh indica umbral de binarizacion.jpg').'sobel'. subplot(2.b2).title ('Sobel').2.subimage(b1).'horizontal') .4). subplot(2.2). De esta forma se obtienen los bordes en escala de grises. b1=imfilter(im1.3).2.titl e('Imagen Original').2). b3=imadd(b1. veamos el código: im1=imread('jefer.subimage(im1). subplot(2. b2=edge(im1. Fig(4) Detección Bordes.sf).title ('Sobel Vertical'). subplot(2.2.subimage(b3).2 Detecta Matlab: bordes en Representación de detección de bordes con la herramienta edge. el resultado de esta sera una imagen binaria del tamaño original y esta naturalidad se dara de forma arbitraria “1” para borde y “0” para no borde.'vertical'). Frei-Chen (K=√2).1).subimage(im1).'sobel'.direction) Lo que hace esta funcion sera encontrar el cambio de intensidad prolongado. im1=rgb2gray(im). horizontales y diagonales 1.subimage(b3).

%canal green b=im(:. ¿Cómo difieren los resultados en este caso? Para darle una respuesta a este problema debemos entender que para que una imagen digital sea una imagen a color deben tener 3 canales Rojo.2).:. Observe cómo algunas de las respuestas de borde se refieren a distintos canales de color o los colores de la imagen.:.jpg' y 'peppers. De esta forma se lleva a cabo el desarrollo del plantel. ¿qué significa esto?. Mostrar los resultados tanto como para la imagen en color de tres canales y como los resultados por cada uno de los canales de .jpg').png' (ya están dentro de Matlab)). r=im(:.%canal blue im2=rgb2gray(im). También realice la repetición de esta tarea para el espacio de color HSV.1 PROBLEMA NUMERO 1 RESPUESTAS DE BORDES PARA IMÁGENES RGB Fig(6) Canales RGB.:.%canal red g=im(:. en este caso nuestro codigo en Matlab se convierte en: clc clear all im=imread('football.1).3). 1 0 -1]. las imágenes 'football. Cuando el borde es visible en color blanco en la imagen de tres canales que corresponde al borde detectado. Verde. Azul: Fig(5)Edge sin umbral 0-1. %Si queremos aplicarle mascara o si no lo dejamos %propuesto.color individuales. %Se identifican bordes con sobel %para cada una de los canales RGB. aplicar la detección de bordes a tres canales imágenes RGB y mostrar los resultados (por ejemplo. Luego de que se ha dado una breve introducción iniciamos nuestro estudio con los siguientes problemas: 2. Teniendo en cuenta los detectores de borde Roberts y Sobel observados en clase. mascara=[1 0 -1.1 0 -1.

3. imshow(im3). title('Verde'). subplot(2. Fig(9) Salida Borde blanco Lo que significa las variaciones al pasar de una zona oscura a clara o viceversa.3).2). Con este codigo nos damos cuenta como difieren los bordes para cada uno de los canales. title('Azul'). title('Rojo'). %plot de cada uno de los canales RGB. imshow(g1).b1). subplot(2. title('Suma R+G').'sobel'). Ahora si se quiere procesar una imagen con borde blanco : Fig(8) Borde blanco subplot(2. sum2=or(sum1. se pénsaba antes que el empleo de un operador para detectar bordes se aplicaba a todos los tres canales de inmediato pero se puede observar con la funcion OR que cuando se enlazan los 3 canales se observa una mejor definicion de bordes como en el resultado RG+B y de esta forma se dice que al aplicarle un rgb2gray no es tan precisa la informacion de bordes.1). imshow(b1). Al introducir esta imagen en el codigo nos resulta: Nos arrojarian estas imagenes.'sobel').3. .3.4). imshow(sum1).'sobel'). De modo si intecambiamos la imagen de borde negro obtendremos lo siguiente: Fig(7) Muestra primera de bordes. sum1=or(r1. im3=edge(im2.5).6).'sobel'). subplot(2.r1=edge(r.3. g1=edge(g. imshow(sum2). title('Borde con rgb2gray'). subplot(2. subplot(2.g1). title('Suma2 RG+B'). imshow(r1).3.3. b1=edge(b.

title('(Value)Valor').jpg para ser trabajada en HSV de tal modo que el codigo quedaria: clc clear all close all im=imread('football. aplique el uso de este operador para imágenes en color (por ejemplo.:. imshow(h1).5). subplot(2.3. PROBLEMA NUMERO 2 USO DE FILTROS PARA DETECTAR BORDES: Basándose en el ejemplo de operador de desenfoque (unsharp). subplot(2.Fig(10) Borde negro Y resulta la misma respuesta que la Fig(9).'sobel').3. title('(Saturation)Saturacion').'sobel').'sobel').1). subplot(2.jpg' y 'peppers.3).2).:.%canal V title('Imagen HSV'). h1=edge(h.6). subplot(2. imshow(sum2).4). saturación y valor. %plot de cada uno de los canales HSV.%canal H s=hsv(:.3. tal y como se observa en la salida. title('Suma2 HS+V').2. title('(Hue)Matiz').1). imshow(s1).3. sum1=or(h1. Lo que traduce como una imagen de matiz.%canal S v=hsv(:.s1). hsv= rgb2hsv(im). Fig(11) Salida de imagen HSV. imshow(v1). subplot(2. imshow(sum1).3). s1=edge(s. las imágenes 'football.:.3. Ahora se sitúa la imagen Football. %Se identifican bordes con sobel %para cada una de los canales HSV.png' (ya están dentro de Matlab)).jpg'). 2.v1). ¿Cómo son las áreas bien .2). Cuando se utiliza la deteccion de bordes nos damos cuenta que se toman muchas caracteristicas de la imagen y estas son reveladas de manera que se vean gran cantidad de marcas claras. imshow(hsv). v1=edge(v. sum2=or(sum1. title('Suma H+S'). subplot(2.3. h=hsv(:.

5). title('Verde'). g1=edge(g. title('Azul').g1).2). Se crea un código que me afila los bordes con Unsharp y de la misma forma obtengo los bordes para cada una de los canales ya procesados.1). b1=edge(b.1). % im3=rgb2gray(im2).:. im2=rgb2gray(im). Sobel. Motion. Unsharp. title('Suma2 RG+B'). sum2=or(sum1. subplot(2.png').3.3. sum1=or(r1. Disk. Fig(13) Unsharp preview. imshow(r1). imshow(b1).b1). Prewitt.'replicate'). imshow(g1).:.3. El operador de desenfoque también puede ser construido mediante el uso de un parámetro de desenfoque (unsharp) que es utilizado por Matlab a través de la función: fspecial ().'sobel'). función que trabaja en conjunto con imfilter (). imshow(sum2). realizado en el ejercicio anterior?.'sobel').2). subplot(2.%canal blue r1=edge(r. title('Rojo').3. Fig(12) Unsharp El filtro de desenfoque es un simple operador de afilar que deriva su nombre del hecho de que aumenta bordes.3). subplot(2. H = fspecial('unsharp'). im3=imfilter(im2. Toda esta categoría es explicada brevemente en el Help de Matlab. subplot(2. . imshow(sum1). bor=edge(im3.definidas de la imagen comparado con las áreas de intensidad de detección de bordes. subplot(2. Para este problema la definición de un filtro sobresale como la manera en que una imagen tiende a mejorar o agravar su aspecto de una forma porcentual. clc clear all close all im=imread('peppers.'sobel'). title('Suma R+G').3.%canal green b=im4(:. Laplacian. r=im4(:. Gaussian.3). en este caso la función Unsharp.H).4). Para esto se tiene la función fspecial en la cual nos permite aplicarle diferentes filtros.H.%canal red g=im4(:.:. tales como:          Average. Log. im4=imfilter(im.'sobel').

3. Fig(15) 100% liquido. Fig(14) Salida utilización Unsharp Cuando se han capturado estas imágenes de forma relevante el programa ha realizado todo el enfoque en las fracciones finas.  Llenado al 50%. imshow(bor). title('Unsharp-rgb2gray').6). Para esta parte se tendrá en cuenta 3 imágenes que corresponden al llenado 100%. Para la imagen Unsharp rgb2gray que se ve en la última salida de la imagen notamos una notable y empobrecida toma de bordes cosa que para esta parte es necesario aplicarle a cada uno de los canales su respectivo detector de borde y su salida la vemos en RG+B.subplot(2.3 PROBLEMA NUMERO 3 APLICACIÓN DE FILTROS PARA UNA BOTELLA CON LÍQUIDO: De acuerdo a las imágenes capturadas en la entrega de los resultados del ejercicio de detección de nivel de líquidos en botellas. con el propósito de obtener y destacar los bordes de la botella. Fig(16)50% liquido. 50% y el 0% de su capacidad de llenado. aplique los filtros Robert. Prewitt y Sobel.  Llenado al 100%. 2. Se observa que no tiene una precisión total como se esperaba ya que se utiliza dos elementos de destacar bordes. ¿Cuál de los tres filtros fue el más adecuado para realizar este tipo de detección? En la práctica del curso de PDI tuvimos la oportunidad de manejar la información del llenado de una botella. .

Prewi tt=imfilter(Prew.[]. 1 0 1]. mascaraSC=[-1 -2 -1. Fig(17)0% liquido. %H3=imfilter(H2.  Llenado al 0%.0.Roberts. subplot(1.jpg').mascaraSF). f = @(x) imadjust(x. 1 0 -1.3.mascaraPC=[-1 -1 -1. J3=roifilt2(H. Para la image al 100% Fig(18)Sobel al 100% Fig(19) Roberts al 100% . %crea el polinomio de la botella H = fspecial('unsharp'). 2 0 -2. 0 1 0.BW). BW = roipoly(I. 0 0 1.mascaraRF).title(' Roberts'). 1 2 1]. Prew=imfilter(J.title(' Sobel'). Sobe=imfilter(J.y).3. 1 0 1].mascaraPF). mascaraPF=[1 0 -1.mascaraRC). 0 -1 0].mascaraPC). y=[69 21 9 16 47 72 91 121 153 209 243 278 307 311 330 344 368 391 403 420 411 360 323 244 226 151 100].Prewitt.8). 1 0 1].[].Sobel =imfilter(Sobe..1).3. En la salida se puede observar el comportamiento de cada uno de los filtros. mascaraSF=[1 0 -1. clc clear all I1 = imread('botella1. 0 1 0. 0 0 0]. %vectores de poligono para determinar botella x=[275 277 318 356 356 354 375 382 379 379 378 374 375 378 380 383 381 378 370 327 282 253 256 263 250 253 248].title(' Prewitt'). subplot(1.x. mascaraRC=[-1 0 0. J2=roifilt2(H.mascaraSC).imshow(J1).3)..f). J1=roifilt2(H. I=rgb2gray(I1). subplot(1. %aplicacion de mascaras mascaraRF=[0 0 0.BW).mascaraSC).BW.imshow(J2). Robe=imfilter(J.BW).Rober ts=imfilter(Sobe.Sobel. Teniendo en cuenta cada uno de los filtros se crea el código necesario donde analiza cada una de las máscaras y estas las ingresa para detectar los bordes necesarios..imshow(J3). J=roifilt2(I.2). 0 1 0.

Fig(20) Prewitt al 100% Fig(23) Prewitt al 50% Para el 0% Para 50% Fig(24) Sobel al 0% Fig(21) Sobel al 50% Fig(25) Roberts al 0% Fig(22) Roberts al 50% .

es/ccwgrrom/transparen cias/pdf-vision-1-transparencias/capitulo6. ya que si observamos Roberts y Prewitt tiende a desaparecer algunos detalles notables en la imagen de esta forma se concluye que para una mejor filtración se usa Sobel por su buena definición de filos.pdf http://www. CONCLUSIONES Se tienen claro los conceptos de la detección de bordes.BIBLIOGRAFIA  JOSE JAIME ESQUEDA ELIZONDO.es/~ygonzalez/VI/Material_de l_Curso/Teoria/Tema5_Filtrado. La detección de bordes estará asociada con la interpretación de objetos dentro de un espacio 3D a 2D. http://www.uib. Gracias a ello las diferentes tareas que se pueden realizar mediante la evaluación de estas hacen que el estudiante sea capaz de tomar decisiones cuando se atraviese un problema en las áreas de ingeniería. Fundamentos para el procesamiento de imágenes UNIVERSIDAD AUTONOMA DE BAJA CALIFORNIA MATLAB-Software.ehu.sc. R2012A. Help  Fig(26) Prewitt al 0% WEBGRAFIA Notablemente se observó que entre los tres filtros existe una visible diferencia. así que es muy importante que se reevalúe algunos conceptos sobre programación.pdf .escet.pd f http://dmi. El software es uno de los principales ponentes dentro de esta área.urjc.es/~visiona/tema2.