Estoy tratando de desarrollar un algoritmo de enfoque de imagen para algunos trabajos de automatización de pruebas. Elegí usar AForge.net, ya que parece un buen sistema maduro de .net.cálculo de foco de imagen
Por desgracia, me parece que no puede encontrar información sobre la construcción de algoritmos de enfoque automático a partir de cero, por lo que he dado mi mejor intento:
imagen toma. aplique el filtro de detección de borde sobel, que genera un contorno de borde en escala de grises. generar un histograma y guardar el dev. estándar mueva la cámara un paso más cerca del sujeto y tome otra fotografía. si el desarrollador estándar es más pequeño que el anterior, estamos enfocando más. de lo contrario, hemos pasado la distancia óptima para tomar fotografías.
¿hay una manera mejor?
actualización: gran defecto en esto, por cierto. cuando obtengo pasado el punto de enfoque óptimo, mi valor de "imagen en foco" continúa creciendo. esperarías una función parabólica ish mirando a la distancia/valor de foco, pero en realidad obtienes algo que es más logarítmico
actualización 2: está bien, así que volví a esto y el método actual que estamos explorando es dado algunos bordes conocidos (está bien, entonces sé exactamente cuáles son los objetos en la imagen), hago una comparación manual de intensidad de píxeles. a medida que el gráfico resultante se hace más pronunciado, me enfoco más. Voy a publicar el código una vez que el algoritmo central se transporta desde matlab a C# (sí, matlab ..: S)
actualización 3: yay actualización final. volvimos a esto de nuevo. el código final es el siguiente:
Paso 1: imagen de la lista de imágenes (Tomé un centenar de fotos a través del punto enfocado)
Paso 2: encontrar una ventaja para el objeto que estoy de enfoque (En mi caso es un objeto rectangular que siempre está en el mismo lugar, así que recorto un rectángulo ALTO y ESTRECHO de un borde)
paso 3: obtenga la HorizontalIntensityStatistics (clase Aforge.net) para esa imagen recortada.
paso 4: obtener el histograma (gris, en mi caso)
paso 5: encontrar la derivada de los valores del histograma
paso 6: cuando la pendiente es el más grande, es cuando se está en el punto más centrado.
creo que son, al menos en el camino correcto. Si recuerdo correctamente el enfoque automático en cámaras digitales, haga algo similar. –
Me di cuenta de eso anoche cuando en realidad estaba jugando con una cámara que hace AF. el que está en el trabajo es esencialmente un tonto. cuando AF está activado, por lo general puede escuchar zumbidos. esa es la cámara que toma muestras a diferentes distancias y adivina la mejor distancia. –