Вы можете найти края, которые являются резкими или контрастными, а затем наложить их на исходное изображение.
Итак, начиная с этого изображения:
Credit: Rita Kochmarjova - Fotolia
Вы можете сделать:
#!/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')
![enter image description here](https://i.stack.imgur.com/8hXgD.jpg)
Вы можете увидеть эффект наиболее четко в камни у кромки воды.
Вот промежуточное звено edges.png
. Вы можете немного расширить белые пиксели или пороговое значение, чтобы детали в фокусе были более четко определены.
![enter image description here](https://i.stack.imgur.com/MulnM.png)
Вот это с края немного расширены, чтобы сделать их более очевидными:
#!/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')
![enter image description here](https://i.stack.imgur.com/XY46j.png)
Вы также можете сделать это в терминале с помощью ImageMagick без написания какого-либо кода:
magick bulldog.jpg \( +clone -canny 0x1+10%+30% \) -compose overlay -composite result.png
![enter image description here](https://i.stack.imgur.com/c8WbC.png)
Или это, которое больше похоже на Python:
magick bulldog.jpg \( +clone -canny 0x1+10%+30% \) -compose lighten -composite result.png
![enter image description here](https://i.stack.imgur.com/ggir6.png)