Peux-tu dévoiler le principe de ton filtre miracle. Je suppose que tu calcules le niveau de bruit de fond de l'image. Ensuite peut-être que tu filtres le signal selon une méthode de traitement par région. C'est à dire que si les pixels entourant un pixel sont aussi inférieur ou égal au niveau du bruit, tu remplaces la valeur de ce pixel par ZERO. Il y a peut-être même une fonction dans openCV qui réalise cette opération.
j'ai interrogé Mme irma. Elle donne une autre version
La suppression de la pollution lumineuse d'une image astro avec OpenCV implique plusieurs étapes:
1. Préparation de l'image:
Chargement de l'image : Commencez par charger l'image astro dans OpenCV. Vous pouvez utiliser la fonction cv2.imread() pour cela.
Conversion en niveaux de gris : La plupart des techniques de suppression de la pollution lumineuse fonctionnent mieux sur des images en niveaux de gris. Vous pouvez convertir l'image en niveaux de gris en utilisant la fonction cv2.cvtColor().
2. Estimation de la pollution lumineuse:
Filtre flou : Appliquez un filtre flou, comme un filtre gaussien, pour lisser l'image et atténuer les détails fins. Cela permet d'estimer la composante de fond de la pollution lumineuse.(ceci permet d'obtention un niveau par région de l'image)
Soustraction de l'image floue : Soustrayez l'image floue de l'image d'origine pour obtenir une estimation de la pollution lumineuse résiduelle.
3. Suppression de la pollution lumineuse:
Filtre médian : Appliquez un filtre médian pour éliminer le bruit restant dans l'estimation de la pollution lumineuse.
Soustraction du filtre médian : Soustrayez le filtre médian de l'image d'origine pour obtenir l'image finale sans pollution lumineuse.
4. Amélioration de l'image (optionnel):
Ajustement du contraste et de la luminosité : Vous pouvez ajuster le contraste et la luminosité de l'image finale pour améliorer son apparence.
Affûtage d'image : Appliquez un filtre d'affûtage pour améliorer la netteté de l'image.
Voici un exemple de code OpenCV pour la suppression de la pollution lumineuse d'une image astro :
Python
import cv2
import numpy as np
# Charger l'image
image = cv2.imread('image_astro.jpg')
# Conversion en niveaux de gris
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Filtre flou gaussien
kernel_size = 5
blur = cv2.GaussianBlur(image_gray, (kernel_size, kernel_size), 0)
# Estimation de la pollution lumineuse
pollution_light = image_gray - blur
# Filtre médian
median = cv2.medianBlur(pollution_light, 5)
# Image finale sans pollution lumineuse
final_image = image_gray - median
# Amélioration de l'image (optionnel)
final_image = cv2.addWeighted(final_image, 2, image_gray, 1 - 2, 0)
# Afficher l'image finale
cv2.imshow('Image finale', final_image)
cv2.waitKey(0)