2012-08-30 27 views
5

Antecedentes:C# Determinar si el objeto está presente en una imagen

Estamos planeando utilizar cámaras en un sistema de transporte para contar objetos. En este caso específico, no podemos usar sensores. Todos mis objetos son bastante consistentes y serán fáciles de detectar si están presentes en la imagen. He estado buscando en Aforge y algunas otras bibliotecas, y parece bastante fácil. This is what I want to do.

Habiendo dicho eso, tengo algunas preocupaciones. El proceso de filtrado, debe especificar el color que está buscando. Mi objetivo es un color sólido, pero todos sabemos que podría haber más de 100 valores diferentes de rgb en el punto específico que miro.

¿Hay alguna manera de buscar una gama de colores, o para ver si un color es "como" un color específico?

Esta es mi primera vez en cualquier tipo de procesamiento de imágenes. No he intentado nada todavía, estoy a punto de comenzar y esta era una preocupación incluso antes de comenzar.

Cualquier ayuda sería muy apreciada.

+3

en el primer ejemplo de código en el enlace que es lo que el 'radius' es. Imagine el espacio de color RGB como un cubo. El enlace está filtrando los colores que caen dentro de una esfera en ese cubo definido por el centro y el radio. –

+0

¿Están los objetos en el interior en un entorno constante y uniforme? Buen enlace por cierto. – Jodrell

+0

@GeorgeDuckett sí Estoy leyendo más y estoy empezando a entenderlo más. Entonces, para mí, parece que puedo lograr lo que quiero con esto. – CSharpDev

Respuesta

2

En lugar de utilizar el modelo de color RGB, se puede utilizar la HSL uno (Tono Saturación de luz) donde se puede ignorar la saturación y la luz y sólo comprobar el parámetro de tonalidad:

http://en.wikipedia.org/wiki/HSL_and_HSV

Aquí es una manera de hacerlo usando C# (gracias a how to change rgb color to hsv):

System.Drawing.Color color = System.Drawing.Color.FromArgb(red, green, blue); 
float hue = color.GetHue(); 
float saturation = color.GetSaturation(); 
float lightness = color.GetBrightness(); 
+0

muy útil ... Creo que este es el método que debería usar. Gracias – CSharpDev

Cuestiones relacionadas