En general, este es un problema de segmentación de imagen ( http://en.wikipedia.org/wiki/Image_segmentation ) en el que intentaría aislar las regiones enfocadas de las no enfocadas de la imagen.
Las lentes ópticas son equivalentes a los filtros de paso bajo de todos modos y el efecto de un filtro de paso bajo en una señal es suavizarlo limitando el contenido de frecuencia más alta.
En el procesamiento de imágenes digitales, las frecuencias bajas corresponden a objetos grandes (forma general) y las frecuencias más altas corresponden a objetos pequeños (detalles).
Por lo tanto, para aislar la región enfocada, podría estar buscando áreas que tengan una desviación estándar más alta en relación con las áreas borrosas que estarían en una desviación estándar más baja debido a la operación de suavizado de la lente desenfocada.
METRO× N
METRO× N
En el caso de la imagen en su publicación, es probable que el histograma muestre dos modos. Uno correspondiente a valores relativamente altos de desviación estándar (área enfocada) y uno correspondiente a valores relativamente bajos de desviación estándar (áreas borrosas).
Luego puede colocar un umbral, por ejemplo, solo entre los dos modos para establecer un criterio entre sus regiones enfocadas y desenfocadas y luego seleccionar todos los "parches" (o áreas de ventana MxN) cuya desviación estándar es mayor que su umbral. (Para obtener más información, consulte: http://en.wikipedia.org/wiki/Thresholding_%28image_processing%29 )
Esto aislará las partes enfocadas de la imagen para usted.
Espero que esto ayude.
Aquí hay un enfoque más fácil, que no implica análisis de ventana deslizante.
Convierta su imagen a escala de grises (esto no es obligatorio, pero supondré que solo tiene un canal en aras de la claridad)
Calcule el gradiente en ambas direcciones.
Calcule la magnitud (o simplemente cuadre el gradiente)
Suma ambas imágenes de gradiente en ambas direcciones
Como ya se dijo, la parte enfocada de la imagen tendrá frecuencias más altas que el área no enfocada. A partir de la suma, terminará con dos proyecciones, donde hay mucha variación (valores más altos) en esa parte donde el objeto enfocado se coloca a lo largo de esta dirección. Ahora puede hacer lo siguiente:
Determine el punto inicial y final de estos valores más altos. Puede usar un umbral simple (por ejemplo, 0.7 * valor_máximo) o suavizar los perfiles, tomar la segunda derivada y verificar los valores más altos allí.
Las posiciones de Inicio / Detención del paso anterior le dan las posiciones de píxeles a lo largo de ambas direcciones donde colocar su rectángulo indicador de área de nitidez.
fuente