2009-12-09 17 views
9

¿Cuál es la mejor manera de determinar automáticamente el mejor umbral para convertir una imagen en escala de grises a blanco y negro? Puedo calcular valores de umbral bastante buenos a mano, pero me gustaría automatizar la elección del valor umbral.Mejor umbral para convertir escala de grises a blanco y negro

Editar: He estado leyendo un poco sobre este problema, y ​​al mirar el histograma de la imagen puede ayudar, p. si la imagen tiene un histograma bi-modal, la elección de un umbral entre los modos parece ser razonable. Sin embargo, para histogramas multimodales o planos, parece más complicado. Entonces creo que tengo algo más que leer. ¡Gracias a todos los que respondieron!

Respuesta

5

0.5 generalmente termina perdiendo mucha información a menos que la imagen original sea extremadamente brillante. De hecho, cualquier umbral absoluto arruinará un tipo de imágenes u otro.

Un mejor método sería hacer un histograma de luminosidades y elegir un umbral cerca del modo. Esto debería funcionar mejor en la mayoría de las imágenes que cualquier umbral absoluto.

+0

Lo sentimos, pero ¿puede explicar, qué quiere decir cuando dice: "elegir un umbral cerca del modo"? – maximus

+0

El modo es la luminosidad que ocurre con mayor frecuencia en la imagen. –

+0

Para referencia futura, el modo es el promedio. – cxdf

1

¿Cuáles son sus criterios para un "buen" umbral? Es posible que desee comenzar con la intensidad de escala de grises promedio de la imagen ...

1

Creo que el umbral dependerá de la oscuridad promedio (o distribución de colores) en cada imagen de forma independiente. Si opta por un valor arbitrario, terminará perdiendo una gran cantidad de datos si la imagen comenzó muy borrosa.

Además, puede emular algunas de las escalas de grises ocupando escasamente un área con blanco y negro. 50% gris es un tablero de ajedrez, 75% colorea en la mitad de los cuadrados blancos restantes, 25% invierte en blanco y negro, etc.

No creo que haya una respuesta fija para esta pregunta sin considerar cada imagen individualmente

1

El uso de medios tonos basados ​​en umbrales suele dar lugar a una gran pérdida de información. Dependiendo del propósito, es posible que desee considerar dithering.

Me gusta el aspecto del filtro Stucki, ya que es nítido y conserva los detalles. Here's a C# project que implementa el algoritmo. Puedes descargar la fuente si estabas interesado.

3

Me gustaría investigar un algoritmo de umbral adaptativo. Uno de ellos, que no es muy difícil de implementar es Otsus method.

Funciona suponiendo que tiene píxeles de primer plano y píxeles de fondo e intenta encontrar la mejor separación entre ellos.

3

El K-Means Clustering Method funciona muy bien si hace lo siguiente:

  1. La partición de la imagen en sub-bloques.
  2. Aplicar K-Means Clustering en cada subbloque. El resultado es una imagen binaria (supongamos que lo que quiere es '1' y el resto '0').
  3. Realice el paso 2 de nuevo, esta vez en bloques superpuestos.
  4. Aplicar el operador 'AND' en las imágenes secundarias (para superponer bloques secundarios).

Es muy fácil de hacer en Matlab.
Si es necesario, puedo compartir el código.

Cuestiones relacionadas