eroyer

logiciel pour Foucault photo

Messages recommandés

Bonjour,
comme promis dans ce fil : http://www.astrosurf.com/ubb/Forum2/HTML/036113-3.html

j'ai mis sur mon site le source du logiciel que j'ai commencé à écrire pour faire un test de Foucault à partir d'une série de photos.

Précision importante : ce code est vraiment une ébauche. Il n'est pas utilisable tel quel pour tester son miroir ou le paraboliser. Je le met à disposition sous cette forme car je n'ai pas le temps (ni l'envie) de le faire évoluer pour l'instant. Mais cela peut servir de base pour d'autres amateurs.

le lien : http://www.astrosurf.com/eroyer/CVFoucault/CVFoucault.zip

D'abord, l'interface utilisateur est réduite au strict minimum. Il faut modifier le source et recompiler pour changer des paramètres comme le diamètre ou la focale du miroir.
Ensuite, je n'ai pas eu le temps de croiser les résutats du programme avec d'autres tests. J'ai fait un seul recoupement avec du Foucaut visuel classique ce qui a donné un résultat satisafaisant, mais c'est un peu court pour faire confiance aveugle au programme.

Le principe consiste à faire une série de photos du miroir sans masque avec l'appareil de Foucault et à noter le tirage pour chacune d'entre elles (on note les noms des fichiers image et les tirages dans un fichier texte). Ensuite le logiciel charge ces données et calcule pour chaque image la zone neutre. Les données produites sont enregistrées dans un fichier lisible directement par figureXP (inclus aussi dans le .zip). D'ailleurs figureXP a une limite sur le nombre de zones (10 ou 15 je ne sais plus), ce qui fait qu'on ne peut pas utiliser autant de photos qu'on aimerait, mais on peut aussi court-circuiter figureXP et utiliser autre chose.

Au niveau du code, c'est développé sous code::blocks et compilé avec gcc. J'utilise 2 librairies qui sont incluses dans l'archive : CImg et OpenCV2.0. A la fin du source, il y a quelques commentaires a propos de l'installation de OpenCV.

J'espère que ça pourra servir à quelqu'un. Pour plus de précisions, je préfèrerais discuter sur le forum plutot que par mail, histoire que l'information circule si plusieurs personnes s'intéressent au programme.

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites
Merci Eric,

suis convaincu que c'est le genre de chose qui peuvent faire avancer le schilmblick, s'il s'avère fiable....
question : comment tu détermines la zone neutre ?
un copier coller de l'image, puis symétrie, puis différence ? ou autre chose...
les "oiseaux" du club vont gouluemet se pencher sur cela....
Amitiés

Partager ce message


Lien à poster
Partager sur d’autres sites
et quand il connait la zone il fait un miroir de celle ci et la soustrait à l'originale

Partager ce message


Lien à poster
Partager sur d’autres sites
La recherche par transformée de Hough permet de trouver la position du miroir dans l'image. Ca évite de devoir faire une sélection à la souris. l faut faire attention car c'est fait uniquement sur la première image de la série. Ca marche dans le cas où le miroir et l'appareil photo sont fixes et seul le couteau bouge. Si la caméra bouge en même temps que le couteau, il faut adapter le soft.

Pour trouver la zone neutre, voila l'algo :
- flou gaussien léger pour éliminer le bruit et les problèmes liés au filtre de bayer (cas d'un capteur couleur)
- recadrage pour ne garder que la partie miroir
- création d'une coupe du miroir : c'est un tableau qui donne la luminosité en fonction de l'abscisse. Pour limiter le bruit c'est la moyenne des niveaux de gris de plusieurs droites qui passent par le centre du miroir et qui ont des orientations de +/-10° autour de l'horizontale
- inversion gauche/droite de la coupe et différence avec la coupe originale
- recherche des zéros sur la coupe. Ici l'algo est prévu pour trouver un seul zéro ce qui est le cas sur une miroir proche de la parabole. Avec un miroir presque sphérique, ça doit poser quelques problèmes.


Eric

Partager ce message


Lien à poster
Partager sur d’autres sites
Salut,

J'ai téléchargé ton fichier, mais comme je n'y connais rien en programmation je n'ai rien pigé à la façon de faire.

Pourrais tu détailler un peu le processus ?

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites
J12, ce n'est pas vraiment utilisable si on ne mets pas les mains dans le code. Au départ je l'ai fait pour me faciliter la tache quand je finissais mes 360, mais il y a pas mal de boulot à faire pour rendre le programme utilisable par un utilisateur lambda. C'est aussi dans l'espoir de trouver un informaticien-opticien motivé que je donne le code source.

Christian, pour la prise des images en automatique, je n'ai pas vraiment réfléchi à la question. Je trouve bien plus simple de prendre les images à la main. On positionne le couteau en regardant dans le viseur de l'appareil photo (ou à l'écran) comme pour des mesures "classiques" et on enregistre les images en notant le tirage.
On pourrait bien sur mettre des moteurs pour automatiser ça, mais je trouve que ça fait usine à gaz (compliqué à construire et source de dysfonctionnements). En test manuel, déplacer le chariot ne m'a jamais posé problème. C'est plus la lecture de l'image et la comparaison du gris dans les fenêtres droite et gauche qui me semble intéressant d'informatiser.

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites
tout à fait d'accord avec ton approche Eric : pas besoin du "tout auto" d'Alexandre, un semi auto à ta sauce est un grand pas qui peut permettre d'affiner considérablement les imprecisions de mesures et surtout multiplier les incréments en AL sans que ça devienne trop pénible et ainsi, d'obtenir des profils bien plus réalistes.

La question qu'on se pose avec Pierre dans cette méthode (copier-coller/symétrie/différence), c'est si elle n'est pas sensible à la position du couteau.... OU dit autrement, pour une même position en AL, mais avec un couteau à divers niveau de coupe, obtient-on la meme mesure sur la zone Hm ????? Si oui alors c'est le cocotier. Sinon, c'est un peu chiant.....

Partager ce message


Lien à poster
Partager sur d’autres sites
Eric, je ne demande pas mieux que de mettre les mains dans le cambouis mais je ne sais pas par où commencer. Ton code c'est le fichier en .db ?
Connais-tu quelques sites internets ou bouquins qui pourraient me mettre un pied à l'étrier ?

Julien

Partager ce message


Lien à poster
Partager sur d’autres sites
J12,
je ne sais pas si tu as déjà un peu d'expérience de la programmation. Si ce n'est pas le cas, ça risque d'être un long apprentissage. Disons pour démarrer :
le code c'est le fichier main.cpp. Tout le reste, ce sont soit les librairies soit les fichiers créés par le gestionnaire de projet. En fait si tu veux pouvoir modifier le programme et le recompiler, il faut que tu installes code::blocks ( http://www.codeblocks.org/ ) et tu ouvres le fichier cvf.cbp, à partir de là tu peux lire le code, le compiler, etc...

Bon après pour comprendre le code et le modifier, il faut connaître un minimum de C/C++ (voir par exemple par ici : http://www.learncpp.com/ )

Mais dans un premier temps, tu peux d'abord essayer de le compiler et l'utiliser tel quel avec les images d'exemple que j'ai données pour voir si tout fonctionne.

Je peux aussi modifier ce qu'il faut pour l'adapter à ton miroir (diamètre et focale) si tu veux croiser ça avec d'autres tests.

Eric

Partager ce message


Lien à poster
Partager sur d’autres sites
Super, merci pour ces pistes.

Julien

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant