Empecé a experimentar con c ++ y opencv porque quiero aprender el procesamiento de imágenes.
Ahora, mi primer ejercicio es crear un detector de piel con calcHist y calcBackProject .
Pero no entiendo algunas cosas:
- la interpretación estadística del proyecto anterior, y por qué se llama "proyecto posterior"
- Tengo una buena comprensión de en qué rango se encuentra el parámetro
calcBackProject
. Pero estoy realmente atascado con los parámetros de rangos encalcHist
función. - Para una mayor precisión de detección, creo que podría ser algo bueno, use la backgrojection en más niveles: en cada canal de rgb y en cada canal de hsv. Pero no sé cómo puedo combinar los diferentes resultados de
calcBackProject
canales separados de rgb y hsv.
Y creo que mi mala comprensión está causada por la falta de teoría de lo que estoy haciendo con esos 2 métodos (ver el primer punto). Así que explícame en inglés sencillo.
Respuestas:
Vea Qué es la retroproyección en los tutoriales de openCV
Un histograma de imagen mide la distribución de color (y brillo) de los píxeles en una imagen.
Si toma una imagen e identifica una región de interés, por ejemplo. una mano y calcule el histograma de los píxeles en ese objeto.
Luego tome ese histograma y una segunda imagen y esencialmente invierta el proceso: elige los píxeles en la segunda imagen que coinciden con el histograma de la primera. Es este proceso inverso el que le da el nombre de retroproyección.
Luego supone que las áreas de la imagen en la segunda imagen que tienen la misma distribución de color que un objeto en la primera imagen son una imagen del mismo objeto (o similar).
fuente