Précédent   Forum des professionnels en informatique > Autres langages > Algorithmes > Traitement d'images
Traitement d'images Forum d'entraide sur le traitement d'images et l'analyse d'images et de vidéos. Avant de poster : Cours de traitement d'images
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 06h46   #1
Membre éclairé
 
Avatar de TNT89
 
Inscription : juillet 2007
Messages : 288
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : juillet 2007
Messages : 288
Points : 308
Points : 308
Par défaut Alignement d'images stellaires

Bonjour à tous,

Je travaille en ce moment sur un petit projet "pour le fun" et je sèche sur le recallage des images.

Le but du traitement est de permettre à un astronome amateur de pouvoir additionner et traiter des lots d'image de façon automatique. Ces images sont des images de paysages stellaires, contenant (normalement) de nombreuses étoiles de plus ou moins faibles magnitudes (plus ou moins saturées, de différentes tailles).

Les hypothèses sur les images en entrées : il y a au moins une trentaine d'étoile utilisables, il peut y avoir des artéfacts et des défauts optiques (aberration sphérique, coma, figure de diffraction et j'en passe) mais aussi dûs au capteur (je pense cependant pouvoir facilement trouver et enlever les pixels chauds, qui ne devrait donc pas poser de problème) avec des temps de pose qui peuvent être différents et donc des occurences qui n'apparaissent que sur certaines images. Les images se recouvrent d'au moins plusieurs dizaines de pourcent (je dirais 30%) et peuvent subir des translations et des rotations. Pour les changements d'échelles et la distortion, je ne suis pas encore sûr, cela dépendra de la méthode de recallage...

Pour l'instant, le pseudo-algorithme / structure est assez simple :
  1. Détecter les étoiles qui serviront de points de contrôles.
  2. Définir la transformation à appliquer pour chaque image.
  3. Construire le repère et l'image maître en y sommant toutes les contributions.

Pour la première étape, je pense avoir un résultat propre en utilisant deux filtres simples, d'une part un seuillage qui isole les points quasi-saturés du bruit de fond, d'autre part un filtre qui vérifie le remplissage d'une zone mais pas de son environnement direct (inspiré du Top-Hat Transform, mais en une passe). En illustration vous pouvez trouver en dessous un exemple autour de la constellation d'Orion. Les images raw_zero et raw_one ont été retaillé et leur vraie dimension est celle de zero et one. Ces dernières sont issues du premier filtre.

Mais maintenant je bute sur l'algorithme de recallage pour les contraintes énoncées. Je n'arrive pas à trouver un qui convienne sans faire intervenir de FFT. (L'implémentation s'avère délicate puisque je travaille sur GPU, en essayant de ne pas toucher à OpenCL ni CUDA)

Si vous avez quelques pistes, des article à lire, etc. je suis preneur!

Vous remerciant,
Images attachées
Type de fichier : png one.png (38,2 Ko, 20 affichages)
Type de fichier : png zero.png (42,9 Ko, 16 affichages)
Type de fichier : png raw_zero.png (427,7 Ko, 17 affichages)
Type de fichier : png raw_one.png (359,4 Ko, 17 affichages)
TNT89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 12h18   #2
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
Citation:
Envoyé par TNT89 Voir le message
Pour la première étape, je pense avoir un résultat propre en utilisant deux filtres simples, d'une part un seuillage qui isole les points quasi-saturés du bruit de fond,
Ok, normal.. "cosmic ray removal"


Citation:
Envoyé par TNT89 Voir le message
d'autre part un filtre qui vérifie le remplissage d'une zone mais pas de son environnement direct (inspiré du Top-Hat Transform, mais en une passe).
Ok (si c'est bien les raw-one qu'on voit)


Citation:
Envoyé par TNT89 Voir le message
Mais maintenant je bute sur l'algorithme de recallage pour les contraintes énoncées. Je n'arrive pas à trouver un qui convienne sans faire intervenir de FFT. (L'implémentation s'avère délicate puisque je travaille sur GPU, en essayant de ne pas toucher à OpenCL ni CUDA)
Une idée :

j'établirais un tableau des plus lumineuses aux moins lumineuses, identifiées sur la première image de la série


je bouclerais sur les images :

pour chaque étoile dans l'ordre je calculerais le "déplacement"

ensuite, éventuellement un moindre-carrés ou tout autre algo (moyenne par exemple) pour trouver les paramètres (translation,rotation) par image
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 12h39   #3
Membre éclairé
 
Doctorant en informatique
Inscription : juin 2009
Messages : 244
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Doctorant en informatique

Informations forums :
Inscription : juin 2009
Messages : 244
Points : 347
Points : 347
As-tu regardé du côté des logiciels de création de panoramiques tels que hugin. Leurs algos de recalage permettent des alignements fins et comme ils sont open source tu dois pouvoir voir comment ils font.
Alexis.M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 01h13   #4
Membre éclairé
 
Avatar de TNT89
 
Inscription : juillet 2007
Messages : 288
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : juillet 2007
Messages : 288
Points : 308
Points : 308
Merci a vous deux!

Alors, premier probleme, les deux images a aligner ne sont pas necessairement issue de prises avec les memes temps d'exposition, ce qui amene a avoir d'une part des difference entre les saturation de memes objets et de probablement de nouvelles occurences apparaissant la plus exposee des deux.

De meme, j'ai peur que l'intensite ne soit pas tout le temps un critere suffisant pour associer deux objets du fait qu'il puisse y avoir des variations entre deux cliches. Ainsi les 3 objets les plus lumineux des deux images ne sont, je pense, pas forcement dans le meme ordre suivant leur intensite.

Pour ce qui est de Hugin, il semblerait qu'ils utilisent les algorithmes SURF et RANSAC. Pour SURF, il me semble d'appliquer cela a une image stellaire du fait que la plupart des occurences vont se ressembler...
Pan-o-matic (Anael Orlinski)
Hugin/CPFind/main.cpp

Je recherche donc quelquechose qui s'approche de l'appariement de meshes en 2D selon mes donnees... meme si je vais quand meme tester les histogrammes d'intensite pour voir la repartition, voire meme la correlation des donnees (sans FFT) mais je ne vois pas comment resoudre le probleme de la rotation (tres present dans mon cas, car les photos peuvent etre realisees depuis une monture altazimutale, ne suivant pas la rotation du ciel et engendrant une rotation du champ de plusieurs degres).

Je suis toujours ouvert a toutes suggestions...
TNT89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 01h51   #5
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
Citation:
Envoyé par TNT89 Voir le message
Alors, premier probleme, les deux images a aligner ne sont pas necessairement issue de prises avec les memes temps d'exposition, ce qui amene a avoir d'une part des difference entre les saturation de memes objets et de probablement de nouvelles occurences apparaissant la plus exposee des deux.
Ceci est normal et (en astronomie) se corrige avec des images "calibrées", c'est à dire en augmentant le temps de réponse et en construisant deux images : une image (dont les pixels sont des nombres réels) contenant le "rendement" ou la "pente" de chaque pixel, et une image (dont les pixels peuvent être entiers, mais normalement réels) contenant l'offset, lezéro.

En fait, pour distinguer toutes les étoiles, il y aurait une règle assez simple : dans l'image la moins exposée tu détermines tes étoiles "de référence". Tu en prend la moins brillante, et la plus brillante, et tu calcules le rapport entre les 2.

Puis tu trouves la plus brillante dans l'image la plus exposée, tu détermines le coefficient duquel elle a augmenté par rapport à la première photo, et par une simple règle de 3 sur la moins brillante de la première tu as ton seuil pour l'image la plus exposée...


D'autre part, à moins de faire une analyse assez poussée, il te faudra éliminer plus ou moins les étoiles qui saturent.. (sinon, il faut calculer la tâche d'Airy poiur en trouver le centre et la luminosité, après avoir éliminé les bavures horizontales et verticales)

Mais les intensités relatives seront les mêmes quell que soit le cliché : les étoiles sont classées en magnitude.. Quel que soit le temps de pose, une étoile de magnitude 4 aura une intensité exp(2.5) plus forte qu'une étoile de magnitude 3... Sauf à saturation...

Quant à l'appariement, soit tu te sers d'un algo comme j'ai dit, soit tu utilises une des méthodes exposées sur ce forum
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 02h29   #6
Membre éclairé
 
Avatar de TNT89
 
Inscription : juillet 2007
Messages : 288
Détails du profil
Informations personnelles :
Âge : 22

Informations forums :
Inscription : juillet 2007
Messages : 288
Points : 308
Points : 308
Citation:
Envoyé par souviron34 Voir le message
Ceci est normal et (en astronomie) se corrige avec des images "calibrées"
Ok pour les images calibrees mais je pense qu'il y aura des etoiles de magnitudes presque identique et ne permettant pas de faire un appariemment certain en un coup (utile comme point de depart de tout les algorithmes basees sur l'Optimisation).

Citation:
Envoyé par souviron34 Voir le message
D'autre part, à moins de faire une analyse assez poussée, il te faudra éliminer plus ou moins les étoiles qui saturent.. (sinon, il faut calculer la tâche d'Airy poiur en trouver le centre et la luminosité, après avoir éliminé les bavures horizontales et verticales)
Je pense que le second filtre (celui derive du Top-Hat) fait deja une partie du travail en elevant les structures et donc les etoiles plus grandes que l'element de base (5X5 pixels). Ce qui permet d'enlever une bonne partie des grosses etoiles saturees).
Ensuite, je n'ai pas vraiment compris pourquoi etudier la tache d'Airy sachant que d'une part les instruments Astro amateur ayant un F/# inferieur a 15 (tres generalement), le diametre de la tache sera, au maximum, de l'ordre de 2.44*(lambda=550nm)*15 = 20.13 microns, donc juste au dessus de Nyquist pour un pixel de 10 microns (courant). Ce qui me parait juste pour ce soucier du barycentre de la tache. De meme cette tache est rarement atteinte sur l'integralite du champs pour nos instruments (pour moi avec un F/4, j'ai une coma qui defie les lois de la Nature... c'est dire), je ne peut donc raisonnablement me tourner vers une etude au cas par cas des instruments...
TNT89 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 13h23   #7
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
Citation:
Envoyé par TNT89 Voir le message
Ok pour les images calibrees mais je pense qu'il y aura des etoiles de magnitudes presque identique et ne permettant pas de faire un appariemment certain en un coup (utile comme point de depart de tout les algorithmes basees sur l'Optimisation).
Je ne suis pas certain de te suivre...

La calibration consiste à prendre N clichés à N temps de pose croissants (le mieux est à incrément constant), puis d'en dédure par moindres carrés la formule pour chaque pixel :

Intensité(temps de pose) = Offset + rendement*temps

(y = ax + b où x est le temps de pose)

Evidemment les étoiles qui à un certain temps de pose saturent seront éliminées de ces pas de temps par le sigma autour du moindres carrés.

En ce qui concerne les appariements, tu as pleins de méthodes ici-même

Les intervenants plus spécialisés que moi t'indiqueront...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 16h48   #8
Membre éclairé
 
Doctorant en informatique
Inscription : juin 2009
Messages : 244
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Doctorant en informatique

Informations forums :
Inscription : juin 2009
Messages : 244
Points : 347
Points : 347
Moi je continue à penser qu'une approche semblable à celle de hugin pourrait fonctionner mais en modifiant les méthodes utilisée pour la détection et l'appariement des étoiles.

Pour la détection, je ferais le même prétraitement que toi, peut-être suivi d'un amincissement morphologique pour être sur de n'avoir que des points à la fin.

Ensuite il faut pouvoir avoir pour chaque étoile un descripteur des motifs d'étoiles dans son voisinage et pour ça tu peux utiliser des descripteurs invariants par rotation et changement d'échelle basés sur la transformée de Fourrier-Mellin:

http://www.fresnel.fr/perso/derrode/...e_SDerrode.pdf

Tu trouves tes appariements à partir des distances entre les descripteurs et ensuite tu peux utiliser une approche de type RANSAC pour calculer la transformation.
Alexis.M est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h17.


 
 
 
 
Partenaires

Hébergement Web