Désaturation de nuit par approche multi-échelle de la lumière atmosphérique

Cet article présente une méthode innovante de désaturation d'images de nuit, conçue pour surmonter les défis spécifiques tels que les sources lumineuses artificielles, la répartition inégale de la lumière ambiante et le bruit prononcé. L'approche repose sur une estimation multi-échelle de la lumière atmosphérique et une optimisation adaptatvie du coefficient de transmission.

Modules Clés

Estimation Multi-Échelle de la Lumière Ambiante

L'image est décomposée en différentes résolutions à l'aide de la transformée en ondelettes pyramidale. Cette séparation permet de distinguer les composantes de basse fréquence (lumière globale), de moyenne fréquence (diffusion de la lumière) et de haute fréquence (détails et bruit).


% Exemple simplifié de décomposition multi-échelle (conceptuel)
coeffs = wavedec2(image_entree, 3, 'haar'); % Décomposition à 3 niveaux
cA = appcoef2(coeffs, 3); % Approximation (basse fréquence)
[cH, cV, cD] = detcoef2([1 2 3], coeffs, size(image_entree), 3); % Détails (moyenne/haute fréquence)
   

Fusion Adaptative de la Lumière Atmosphérique

Une stratégie de fusion pondérée est employée pour combiner les informations des différentes échelles. Cette combinaison est ensuite affinée à l'aide d'un filtre de moyenne non-locale pour réduire le bruit tout en préservant les structures importantes.


% Fusion pondérée et débruitage (conceptuel)
lumiere_fusionnee = 0.5 * cA + 0.3 * cH + 0.2 * cV; % Poids ajustables
lumiere_nettoyee = medfilt2(lumiere_fusionnee, [7 7]); % Filtre médian
   

Estimation Multi-Échelle du Coefficient de Transmission

Le coefficient de transmission est estimé en améliorant la méthode du canal sombre. Une étape de rehaussement des contours est appliquée pour mieux capturer les détails fins.


% Estimation du canal sombre et de la transmission (conceptuel)
canal_sombre = min(image_entree(:,:,1:3), [], 3);
transmission = 1 - 0.9 * (canal_sombre / max(canal_sombre(:)));

% Amélioration des contours
kernel_aiguisage = fspecial('unsharp', 0.5);
transmission_amelioree = imfilter(transmission, kernel_aiguisage, 'replicate');
   

Optimisation du Modèle de Restauration

Le modèle de restauration est adapté pour la scène nocturne, en tenant compte de la lumière atmosphérique fusionnée. Une correction colorimétrique est ensuite appliquée dans l'espace colorimétrique Lab pour améliorer la fidélité des couleurs.


% Modèle de restauration et correction colorimétrique (conceptuel)
epsilon = 1e-6; % Petite valeur pour éviter la division par zéro
image_restauree = (image_entree - lumiere_nettoyee) ./ (transmission_amelioree + epsilon) + lumiere_nettoyee;

% Correction colorimétrique dans l'espace Lab
image_lab = rgb2lab(image_restauree);
% ... ajustements dans l'espace Lab ...
image_corrige_couleur = lab2rgb(image_lab);
   

Innovations Principales

Modélisation Dynamique de la Lumière Ambianet

L'attribution dynamique des poids aux différentes échelles, basée sur la concentration de brouillard estimée, permet une adaptation plus fine. L'identification de la direction des sources lumineuses principales contribue à améliorer la modélisation.

Stratégie de Filtrage Hybride

L'utilisation combinée du filtrage guidé dans le domaine spatial et de l'optimisation par seuillage dans le domaine fréquentiel permet de préserver les bords tout en supprimant efficacement le bruit du coefficient de transmission.

Mécanisme de Restauration des Couleurs

Une adaptation de la théorie Retinex est utilisée pour séparer les composantes d'illumination et de réflectance. L'ajustement adaptatif de la saturation dans l'espace HSV améliore l'éclat des couleurs sans introduire d'artefacts.

Implémentation MATLAB


function [image_desaturee] = denoise_night_multi_scale(img_input)
   % Paramètres
   nb_niveaux = 3;
   beta = 0.05;

   % Décomposition multi-échelle
   [cA, cH, cV, cD] = wdenoise2(img_input, nb_niveaux);

   % Estimation lumière atmosphérique
   A_basse_freq = imgaussfilt(cA, 2);
   A_moyenne_freq = wiener2(cH, [5 5]);
   A_haute_freq = medfilt2(cD, [3 3]);

   % Fusion adaptative
   poids_fusion = [0.6, 0.25, 0.15];
   A_fusionnee = poids_fusion(1)*A_basse_freq + poids_fusion(2)*A_moyenne_freq + poids_fusion(3)*A_haute_freq;

   % Estimation transmission
   canal_sombre_estime = min(img_input(:,:,1:3), [], 3);
   t_estime = 1 - 0.98*(canal_sombre_estime / max(canal_sombre_estime(:)));
   t_final = imguidedfilter(img_input, t_estime, 'NeighborhoodSize', [7 7], 'DegreeOfSmoothing', 0.008);

   % Restauration
   seuil_t = 0.1; % Seuil pour éviter division par zéro
   img_restauree = (img_input - A_fusionnee) ./ max(t_final, seuil_t) + A_fusionnee;

   % Correction couleur et ajustement final
   img_rgb_hsv = rgb2hsv(img_restauree);
   img_rgb_hsv(:,:,2) = imadjust(img_rgb_hsv(:,:,2)); % Ajustement de la saturation
   image_desaturee = hsv2rgb(img_rgb_hsv);
   image_desaturee = imadjust(image_desaturee, [], []); % Ajustement global
end
   

Optimisation pour Scénarios Spécifiques

Surveillance Faible Visibilité

Extension de la plage dynamique pour gérer des niveaux d'éclairement variés et optimisation pour un traitement en temps réel sur des plateformes embarquées.

Systèmes de Conduite Autonome

Intégration avec des algorithmes de détection d'objets (ex: YOLO) pour améliorer la rceonnaissance dans des conditions de visibilité réduite et compensation des erreurs de diffusion atmosphérique pour l'estimation de profondeur.

Photogrammétrie Aérienne

Amélioration de la précision de la reconstruction du terrain par fusion avec des algorithmes de Structure from Motion (SfM) et optimisation des trajectoires d'objets dynamiques.

Étiquettes: désaturation d'image traitement d'image de nuit ondelettes lumière atmosphérique filtrage guidé

Publié le 10 juillet à 00h34