Obtener en el foco píxeles de una imagen

prateek:

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.

Marcos Setchell:

Puede encontrar los bordes, que son agudas o de alto contraste y luego superponerlos sobre la imagen original.

Así, a partir de esta imagen:

introducir descripción de la imagen aquí 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')

introducir descripción de la imagen aquí

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.

introducir descripción de la imagen aquí


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')

introducir descripción de la imagen aquí


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

introducir descripción de la imagen aquí

O esto, que es más similar a la de Python:

magick bulldog.jpg \( +clone -canny 0x1+10%+30% \) -compose lighten -composite  result.png

introducir descripción de la imagen aquí

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=373001&siteId=1
Recomendado
Clasificación