Descomponer los colores de una imagen
Para convertir una imagen en color, como la capturada por su cámara, en una imagen binaria, con el objetivo como el «primer plano», necesitamos poner el umbral de la imagen usando el tono, saturación y valor de cada píxel.
El Modelo HSV
A diferencia de RGB, HSV le permite no sólo filtrar según los colores de los píxeles, sino también por la intensidad del color y el brillo.
Tono: mide el color del píxel.
Saturación: mide la intensidad del color del píxel.
Value: Measures the brightness of the pixel.
Puede usar OpenCV para convertir una matriz de imagen BGR a HSV.
hsv_img = cv2.cvtColor(input_img, cv2.COLOR_BGR2HSV)
Nota
El rango de tono de OpenCV es de 1 ° a 180 ° en lugar del común de 1 ° a 360 °. A fin de que convierta un valor de tono común a OpenCV, dividir por 2.
Descomponer los colores
Utilizaremos esta imagen de campo como ejemplo para todo el proceso de procesamiento de imágenes.
Al descomponer en colores la imagen usando HSV, usted puede separar la imagen en: objetivo de visión (primer plano) y todo lo demás (segundo plano). El siguiente código de ejemplo convierte una imagen HSV a una imagen binaria al descomponer en colores con valores HSV.
binary_img = cv2.inRange(hsv_img, (min_hue, min_sat, min_val), (max_hue, max_sat, max_val))
Nota
Es posible que estos valores tengan que ajustarse según el lugar, ya que la iluminación ambiental puede diferir según los lugares. Se recomienda permitir la edición de estos valores a través de NetworkTables para facilitar la edición sobre la marcha.
Después de la descomposición, su imagen debería verse así.
Como puede ver, el proceso de descomposición puede no ser 100% limpio. Puedes usar operaciones morfológicas para lidiar con el ruido.