Brunoprog64′s Blog

Un blog de Opinión, Software y demás cosas…

Tratamiento de Imágenes – Parte 1

Publicado por brunoprog64 en marzo 17, 2009

Esta es una serie de artículos que hablarán un poco de tratamiento de Imágenes, en especial la detección de bordes, por una duda que me ha carcomido siempre.

¿Podemos convertir imágenes en sus bordes, como si fuésemos a colorearlas?

Bueno, para empezar responder a esa duda y empezar esta serie de artículos, imaginemos que tenemos esta imagen:

Imagen original sin modificar

Imagen original sin modificar

(Para el que le interese, es la serie de Disney: Phineas y Ferb)

Ya está en colores, así que nos sirve perfectamente para nuestros propósitos.

El Reconocimiento de Bordes es una parte importante del proceso de observar. Gracias a los bordes podemos delimitar objetos y saber, por ejemplo, que en la imagen vemos una tabla de surf, a 2 hermanos, a un ornitorrinco, una ola. También nos daremos cuenta de las irregulares formas de los personajes. (Triángulo y Rectángulo).

Veamos, la misma imagen después de procesarla mediante un Algoritmo de Detección de Bordes.

Imagen con bordes detectados

Imagen con bordes detectados

El objetivo de esta serie de artículos es mostrar como convertir una imagen completa como la primera, en una imagen donde solo tenemos los bordes, es decir, lo más básico de toda imagen.

Para los impacientes, vamos a dar una lista de lo que trataremos.

  • Cargar imágenes JPG, BMP y demás usando Python Imaging Library.
  • El Reconocimiento de Bordes según el método de Prewitt.
  • Algo de detalles internos del formato BMP.

Veamos algunas cosas que hay que tener en cuenta antes de comenzar a explicarlo todo.

  • Una imagen a color solo aporta ruido en detección de bordes.
  • Toda imagen puede ser expresada como una gigantesca matriz de números (O datos), los cuales expresan ciertos valores en la imagen.
  • En el mundo de los colores, en lugar de números usamos una estructura de datos que indica R, G, B.
  • La detección de bordes es más sencilla si convertimos la imagen a escala de grises primero.

Pero a todo esto, ¿Qué es un borde?, se preguntarán algunos. Las definiciones y modelos matemáticos varían, pero en general podemos decir que son áreas donde hay contraste entre las intensidades de los píxeles. Es decir que donde veamos una intensidad “n” y en el siguiente píxel veamos una intensidad “z”, totalmente diferente a “n”, ahí podremos decir que hay un borde.

¿Y cómo detectamos diferencias entre intensidad? Fácil… mediante Luminancia. En las imágenes en escala de grises, los valores de la matrix de píxeles ya son datos de luminancia. Sin embargo tenemos que convertir el color a datos de Luminancia. Para eso hay funciones en la Python Imaging Library… pero como nos interesa el tema, mencionaremos una forma sencilla:

Y = 0.2126 R + 0.7152 G + 0.0722 B

(Donde ‘Y’ es luminancia y ‘R’, ‘G’, ‘B’ son los valores de Rojo, Verde y Azul de la imagen a colores)

Obtener los valores de R, G, B depende de cada librería que usemos. En nuestro caso la Python Imaging Library tiene funciones para obtener dicha información. Normalmente los datos estan “seguidos” en la estructura de la imagen.

Bueno, eso es todo por este artículo. En el próximo…

  • Cargando imágenes con Python Imaging Library.
  • Definiciones básicas de Prewitt.

Espero sus comentarios y demás.

Advertisement

3 comentarios hacia “Tratamiento de Imágenes – Parte 1”

  1. admin escribió

    Me interesa mucho tu trabajo. me lo podrias pasar ?

  2. [...] 2¿Educación Universitaria Gratuita?Contador de Tiempo en PythonLas Competencias de un ProgramadorTratamiento de Imágenes – Parte 1¿127 razones para no consumir azúcar o 127 razones para mentir?Contenido del iPod / Mp3 de una [...]

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

 
Seguir

Get every new post delivered to your Inbox.