Bonjour,
Pour ceux et celles qui aiment « bidouiller » un peu de code ![]()
inspiré de :
https://github.com/Tschucker/Python-Automatic-Sensor-Dust-Removal/blob/main/ocv_dust_inpainting_example/ocv_sensor_dust_inpainting.ipynb
photo originale traitée avec docteur néga dt :
création d’un masque avec dt à base de masque paramétrique seuil des détails et coloriser en noir les zone blanches à ne pas corriger:
Code Python sur ces 2 images:
[code]#!/usr/bin/env python3
‹ ›’
inspiré de
https://github.com/Tschucker/Python-Automatic-Sensor-Dust-Removal/blob/main/ocv_dust_inpainting_example/ocv_sensor_dust_inpainting.ipynb
@author: coelb
‹ ›’
import numpy as np
import cv2
sourcename=« im.png »
maskname = « mask.png »
image = cv2.imread(sourcename, cv2.IMREAD_UNCHANGED)
luminance
select = np.array([[0.114, 0.587, 0.299 ]])
image16gray = cv2.transform(image, select)
#-------------------------- traitement du masque 8 bits
mask8 = cv2.imread(maskname)
#cv2.imwrite(‹ sourcegray.png ›, image16gray)
maskgray = cv2.transform(mask8, select)
#cv2.imwrite(‹ maskgray.png ›, maskgray)
#--------------------seuillage entre 2 valeurs 8 bits à ajuster
global_thresh = cv2.threshold(maskgray,185,240,cv2.THRESH_BINARY)[1]
cv2.imwrite(‹ global_threshold.png ›, global_thresh)
#-----------Filter
grossisement des zones de corrections à ajuster
KERNEL = np.ones((10,10), dtype=int)*10
mask_filt = cv2.filter2D(global_thresh,-1 ,KERNEL)
cv2.imwrite(‹ filter.png ›, mask_filt)
#-----------------------------corrections image
rayon à ajuster
radius = 10
flags = cv2.INPAINT_NS # cv2.INPAINT_NS ou cv2.INPAINT_TELEA
cimg_inpaint = cv2.inpaint(image16gray, mask_filt, radius, flags=flags)
cv2.imwrite(‹ auto_dust_inpainting.png ›, cimg_inpaint)
[/code]
Photo dépoussiérée :
Avec quelques 10 retouches supplémentaires dans dt pour peaufiner. (peux mieux faire)
Cordialement
PS: je n’arrive pas à faire marcher Gimp resynthetizer sur ma machine alors…










