Tengo que capturar el color de la piel independientemente de la iluminación. Usé los siguientes criterios (usando hsv y rgb) pero no funciona:
int h = get_hue(...);
int s = get_saturation(...);
int r = get_red_component(...);
int g = get_green_component(...);
int b = get_blue_component(...);
if ((h<38)&&(h>6)&&(s>0.23)&&(s<0.68)){
// skin color
}
else if ((r>95) && (g>40) && (b>20) &&
((maximum(r,g,b)-minimum(r,g,b))>15) &&
(abs(r-g)>15)&&(r>g)&&(r>b)){
// also skin color
}
Funciona por la mañana cuando mi piel está iluminada, pero por la noche no funciona.
Cualquier ayuda será apreciada. Gracias por adelantado. (PD: mi piel no es blanca).
image-processing
opencv
object-recognition
Isla Roney
fuente
fuente
Respuestas:
En mi experiencia, el mejor método para esto es convertirlo al espacio de color Lab. L representa la luz, y a y b son independientes de la luz. OpenCV admite la conversión de escala de color de laboratorio.
fuente
Para este caso especial, recomiendo leer sobre el modelo LAB Color.
Y con respecto al modelo LAB Color, lea sobre Delta E. La distancia entre 2 colores. Más detalles sobre el espacio de color se pueden encontrar aquí: http://www.codeproject.com/Articles/613798/Colorspaces-and-Conversions
Nunca he intentado el modelo de color LAB a través de OpenCV, ya que es una molestia convertir de RGB a LAB y viceversa (requiere un paso inmediato).
Pero he explorado Delta E en MatLab con gran éxito. Primero debe seleccionar la máscara, dibujar un pequeño ROI en el video / imagen y el programa encontrará exactamente el mismo tono de color que la máscara que seleccionó a través del ROI.
Otra opción es también mirar en la textura. A short here here: http://books.google.com.sg/books?id=bRlk_WjfITIC&pg=PA598&lpg=PA598&dq=skin+thresholding+from+texture&source=bl&ots=28fE0livyh&sig=8EeQTLFC-AAAAA = 0CDUQ6AEwAQ # v = onepage & q = skin% 20th umbraling% 20from% 20texture & f = false
Esto es básicamente entrenar una base de datos de imágenes. Comente aquí si necesita ayuda para entrenar la base de datos de imágenes o la conversión de ColorSpace. Un poco ocupado, por lo que la respuesta son solo sugerencias que puede hacer. Salud.
fuente
prueba esto:
fuente