Cómo detectar que los píxeles de una imagen están en foco en comparación con los borrosas. Algo así como el 'Focus Peaking' cuentan con una gran cantidad de cámaras tienen?
La idea es dar color a los píxeles que están en el foco de modo que ayuda al usuario mientras hace clic en una imagen. En busca de una aplicación a través de Python.
Puede encontrar los bordes, que son agudas o de alto contraste y luego superponerlos sobre la imagen original.
Así, a partir de esta imagen:
Crédito: Rita Kochmarjova - Fotolia
Tu puedes hacer:
#!/usr/bin/env python3
import numpy as np
from PIL import Image, ImageFilter, ImageChops
# Open input image and make greyscale copy
image = Image.open('bulldog.jpg')
grey = image.copy().convert('L')
# Find the edges
edges = grey.filter(ImageFilter.FIND_EDGES)
edges.save('edges.png')
# Draw the sharp edges in white over original
RGBedges = Image.merge('RGB',(edges,edges,edges))
image.paste(RGBedges, mask=edges)
# Save
image.save('result.png')
Se puede ver el efecto más claramente en las piedras en la orilla del agua.
Aquí está el intermedio edges.png
. Se podía dilatar los píxeles blancos algo, o el umbral para que el que tiene el foco partes más fuertemente definidos.
Aquí está con los bordes dilataron un poco para hacerlos más obvia:
#!/usr/bin/env python3
import numpy as np
from PIL import Image, ImageFilter
from skimage.morphology import dilation, square
# Open input image and make greyscale copy
image = Image.open('bulldog.jpg')
grey = image.copy().convert('L')
# Find the edges
edges = grey.filter(ImageFilter.FIND_EDGES)
# Define a structuring element for dilation
selem = square(3)
fatedges = dilation(np.array(edges),selem)
fatedges = Image.fromarray(fatedges)
fatedges.save('edges.png')
# Draw the sharp edges in white over original
RGBedges = Image.merge('RGB',(fatedges,fatedges,fatedges))
image.paste(RGBedges, mask=fatedges)
# Save
image.save('result.png')
También puede hacerlo en la Terminal con ImageMagick sin necesidad de escribir código:
magick bulldog.jpg \( +clone -canny 0x1+10%+30% \) -compose overlay -composite result.png
O esto, que es más similar a la de Python:
magick bulldog.jpg \( +clone -canny 0x1+10%+30% \) -compose lighten -composite result.png