thresholding skimage scikit recognition pil book array python image-processing

skimage - Determine la altura del café en la olla utilizando imágenes de Python



skimage python install (7)

Esta es una pregunta un poco graciosa, pero ...

Tenemos una cámara web en la cocina de nuestra oficina enfocada en nuestra cafetera. La cafetera es claramente visible. Tanto la ubicación de la cafetera como la cámara son estáticas. ¿Es posible calcular la altura del café en la olla usando el reconocimiento de imagen? He visto el reconocimiento de imágenes utilizado para cosas bastante complejas como el reconocimiento facial. En comparación con esos proyectos, esta parece ser una tarea trivial de medir la altura.

(Esa es mi mejor suposición y no tengo idea de las complejidades subyacentes).

¿Cómo voy a hacer esto? ¿Esto se consideraría un trabajo muy complejo para participar? FYI, nunca he hecho ningún tipo de trabajo relacionado con imágenes.

Gracias


Como la posición de la cafetera es estacionaria, obtenga un marco de muestra y ubique una sola columna de píxeles donde se puedan ver fácilmente las cantidades mínimas y máximas de café, en un lugar donde no haya reflejos. Verifique el segmento de línea vertical verde en la siguiente imagen:

http://imagepaste.nullnetwork.net/img/1278948944coffee_maker.jpg

La manera más fácil es tener dos marcos, uno con el recipiente vacío, uno con el recipiente lleno (obviamente bajo las mismas condiciones de iluminación, que normalmente sería el caso), convertir a escala de grises ( colorsys.rgb_to_hsv cada píxel RGB y conservar solo el v (3º) componente) y suma la luminosidad de todos los píxeles en el segmento de línea elegido. Digamos que el caso de pot-empty alcanza una suma de 550 y el caso de pot-full una suma de 220 (café es oscuro). Al comparar una suma de cuadro de entrada con estas dos sumas, puede obtener una estimación aproximada del porcentaje de café en el bote.

Sin embargo, no apostaría mi vida por la precisión de este método, y las fluctuaciones incluso del segundo al segundo podrían ser salvajes :)

NB: en mi ejemplo, la columna verde de píxeles debe extenderse hasta el fondo de la olla; Acabo de proporcionar un ejemplo de lo que quise decir.


Debe convertir esta pregunta en una tarea escolar para un estudiante de TI. La mayoría de las escuelas de informática enseñan Computer Vision . Hacer la pregunta aquí es gracioso, conseguir que un estudiante y un profesor que investiga el tema sean divertidos.


Está buscando detección de bordes . Pero solo tiene que hacerlo entre el marrón / negro del café y el color del fondo detrás de la olla.



Pasos que probaría:

  1. Convierte la imagen en grayscale de grayscale .
  2. Binarize la imagen y deje solo el café. Puede descubrir un buen umbral manualmente a través de la experimentación.
  3. Extracción de gotas El área de Blob (número de píxeles) es una forma de calcular la altura, es decir, área / ancho.

Primero haga el umbral, luego la segmentación. Entonces puedes detectar bordes más fácilmente.


  • hacer fotos de la olla con diferentes niveles de café en ella.
  • reducir la resolución de la imagen hasta 4 * 10 píxeles.
  • haga lo mismo en un ciclo para cada nueva imagen en vivo.
  • calcule la diferencia de cada valor de píxeles en comparación con las imágenes de referencia.
  • toma la imagen de referencia con la suma de diferencia mínima y obtienes el estado de tu máquina de café.

Es posible que experimente si una versión en escala de grises o solo roja o verde puede dar mejores resultados.

si da problemas con diferentes configuraciones de luz, este enfoque es inútil. simplemente compre un reflector para la cafetera, o aligere, o oscurezca cada imagen hasta que la suma de todos los píxeles alcance un valor de referencia.