Seleccionando el mejor rango de valores de la curva de histograma

Escenario:

Estoy tratando de rastrear dos objetos de diferentes colores. Al principio, se le pide al usuario que sostenga el primer objeto de color (por ejemplo, puede ser un ROJO) en una posición particular frente a la cámara (marcada en la pantalla con un rectángulo) y presione cualquier tecla, luego mi programa toma esa parte del marco (ROI) y analiza el color en él, para encontrar qué color seguir. Del mismo modo para el segundo objeto también. Entonces, como de costumbre, usecv.inRange Funciona en el plano de color HSV y rastrea el objeto.

Lo que se hace:

Tomé el ROI del objeto para ser rastreado, lo convertí a HSV y verifiqué el histograma Hue. Tengo dos casos como a continuación:

(aquí solo hay un pico central importante. Pero en algunos casos, obtengo dos picos de este tipo, uno es un pico más grande con un grupo de píxeles a su alrededor y un segundo pico, más pequeño que el primero, pero de tamaño significativo con un grupo pequeño alrededor . No tengo una imagen de muestra de eso ahora. Pero casi se ve como a continuación (creado en pintura))

Pregunta:

How can I get best range of hue values from these histograms?

Por mejor rango, quiero decir, puede que alrededor del 80-90% de los píxeles en el ROI se encuentren en ese rango.

¿O hay algún método mejor que este para rastrear objetos de diferentes colores?

Respuestas a la pregunta(1)

Su respuesta a la pregunta