10 de enero de 2011

Umbralizar una imagen

La siguiente transformación con la que me encontre es la llamada cv.Threshold que traduce como Umbral. La funcion threshold sirve basicamente para filtrar los pixeles de una imagen teniendo en cuenta para su discriminación la intensidad de cada pixel.
En una imagen de 8 bits sin signo (IPL_DEPTH_8U en OpenCv o UINT8 en MatLab), un pixel puede tomar valores desde 0 hasta 255, siendo 0 el  negro absoluto y 255 el blanco absoluto. La funcion Threshold sirve para filtrar una imagen por medio de un umbral dado, si el valor del pixel es mayor al umbral hace algo o si el valor del pixel es menor que el umbral hace otra cosa. Lo que haga depende del tipo de umbral que se use.

Ahi 5 tipos de umbral:

- CV_THRESH_BINARY

- CV_THRESH_BINARY_INV

- CV_THRESH_TRUNC

- CV_THRESH_TOZERO_INV

- CV_THRESH_TOZERO

Los nombre son bastante obvios pero lo que me ayudo a comprender como funcionan es la imagen que muestra el libro



El ejemplo que propone el libro es tomar una imagen, dividirla en sus tres canales, sumar la intensidad de cada canal, esta suma tiene que ser una suma ponderada ya que si hacemos una suma normal al solo tener 255 valores posibles la imagen se va a ver en su mayoria blanca. Despues de sumar las imagenes aplicamos el threshold tipo truncado para que ningun pixel pase de 100 en intensidad.

Resultado:


Codigo:





























Para todos los ejemplo que estoy dando es conveniente remitirse al libro ya que obviamente ahi esta explicado todo en detalle.

2 comentarios:

  1. http://www.lpi.tel.uva.es/~nacho/docencia/ing_ond_1/trabajos_03_04/sonificacion/cabroa_archivos/umbralizacion.html

    ResponderEliminar