Détection de flash d'impacts planétaires avec le logiciel DeTeCt

méthode d'utilisation proposée

par Marc Delcroix
le 10 décembre 2012



Nouveautés (historique détaillé des modifications dans le fichier README)
Nouveautés de la version
2.0.5 (29 juin 2016)  :
(v2.0.5) nouveau detect_scandir.bat pour scanner en permanence un répertoire pour traiter tout nouveau fichier
support pour OpenSkyImager, migration vers openCV 2.4.13
bugs corrigés (gestion du mot-clé FITS DATE-OBS, utilisation de dark, temps de fin manquant/temps local dans FireCapture log)
(v2.0.4) Bugs corrigés (Genika: temps de milieu/fin de cature lors d'un changement de jour, vieilles version Firecapture: format de date)

(v2.0.3) Bug sur la gestion des darks corrigé
(v2.0.2) Version executable plus petite et statique, ne nécessitant pas le MSVC2013 redistribuable ou les DLLs Open CV
(v2.0.1) PLx capture: support des noms de fichiers log plus long que celui de la capture (X.Dupont)
(v2.0.1) Firecapture: gestion de l'option de format de date MMM (A.Coffelt)
(v2.0) Meilleure robustesse (plus de crashes) compilé sous Visual Studio avec les estimations de candidats
(v2.0) Support pour tous les logs des dernières versions de Firecapture 2.4, Genika 2.7.x, Sharpcap 2.1 et PLXCapture 2.3
(v2.0) Meilleur calcul de durée et de datation (FITS, Firecapture, ...)


Sommaire

Nouveautés
Introduction
Téléchargement

Utilisation en mode batch
Résultats
Fichier log avec datations, utilisation pour WinJupos
Comment analyser les résultats : les images
Communiquez vos résultats positifs et aussi négatifs!!!

Annexe
Utilisation en mode commande


Introduction

L'équipe de l'International Outer Planets Watch propose depuis octobre 2012 deux outils logiciels permettant de tester des acquisitions planétaires (joviennes) a posteriori à la recherche d'impacts.
Le premier, "JID" est un logiciel Window (avec interface graphique) permettant de travailler sur une acquisition en changeant les paramètres de détection.
Le second, "DeTeCt", est un outil utilisable en mode commande, ce qui permet d'enchaîner l'analyse de plusieurs acquisitions en une seule fois sans interaction avec l'utilisateur.
Il supporte les formats SER, FITS, avi, wmv,bmp, jpg, tif, ... Il implémente deux algorithmes de détection exécutés en même temps:
- le premier "classique", analyse après alignement des images chaque zone de chaque trame pour voir si il y a apparition d'une brillance suspecte. Il affiche alors à l'écran la zone de trames ou un impact à peut-être été detecté.
- le second analyse globalement le film et génère une simple image à analyser visuellement simplement pour détecter si il y a un candidat impact sur le film.

Nous allons voir ici ce second outil "DeTeCt", pour plusieurs raisons:
    - il permet d'analyser toutes ces anciennes acquisitions en une seule fois sans interaction utilisateur (j'ai par exemple gardé environ un millier de films sur Jupiter depuis que je l'image - impossible à traiter simplement avec "JID", qui lui est interactif avec interface graphique)
    - il implémente, en plus de l'algorithme classique qui génère pas mal de faux positifs qu'il faut étudier en détail après coup, mon algorithme qui me paraît plus simple, beaucoup plus rapide et plus efficace: après alignement des images, une image représentant les valeurs maximales de chaque pixel aligné de l'image, moins la moyenne de chaque pixel aligné est générée. Cela permet après une analyse visuelle d'une ou deux secondes de savoir si un flash temporaire a eu lieu pendant l'acquisition. Cette méthode a aussi une meilleure sensibilité permettant potentiellement de détecter des flashs plus faibles.
    - une fois la première version sortie, j'ai repris son développement pour corriger des bugs, améliorer la robustesse, rajouter des fonctionnalités qui me paraissaient intéressantes très orientées amateur, et permettant de lancer un plus facilement projet d'analyse statistique de fréquence d'impact avec une participation simple de tout amateur interessé
    - un plus de l'outil est que dans son fichier log, pour chaque acquisition il indique le temps de milieu d'acquisition au format winjupos, pour utilisation par simple
copier-coller dans la fonction mesure si par exemple utiliser la dérotation WinJupos

Téléchargement

J'ai donc développé une nouvelle version de DeTeCt, avec laquelle j'ai testée avec succès plus d'un millier d'acquisitions (les miennes).
Si vous voulez tester
sur vos acquisitions téléchargez DeTeCt version 2.0.5 ici.

Envoyez-moi vos résultats (fichier DeTeCt.log) à delcroix.marc@free.fr.

Contactez-moi toute question d'utilisation, toute erreur rencontrée, toute suggestion de modification, demande de support d'une nouvelle version des logs de vos logiciels d'acquisition si ils ne sont pas encore supportés (après vérification du DeTeCt.log - cf. ci-dessous


Voici le principe d'utilisation de DeTeCt :


Utilisation en mode batch

 j'ai créé un fichier "detect_batch.bat" qui analyse automatiquement tout les sous-répertoires du répertoire où il se trouve, pour :
- trouver les fichiers au format ser, avi et wmv (et fichier fits si vous définissez la racine du nm des fichiers fits dans detect_batch, cf. ci-dessous)
- lancer DeTeCt pour chacun d'entre eux avec les options "-ADUdtcdetail -minframe 32 -ignore -ADUdtcdetail"
- sauver le log et les images dans un répertoire "Impact_detection"
Vous pouvez éditer ce fichier pour y définir vos propres paramètres.


Pour le faire, télécharger le .zip du lien ci-dessus et décompressez le dans votre répertoire où sont stockées les sous-répertoires d'acquisition (jupiter_20120804 et jupiter_20121003 dans l'exemple à gauche)

Ouvrez l'explorateur et double-cliquez sur "detect_batch.bat"

NB: si vous en avez besoin vous pouver éditer avec le bloc-notes par exemple le fichier detect_batch.bat, pour modifier:
- la ligne "set OPT=" qui définit les options de DeTeCt.exe
- la ligne "set DARKFILE=" qui définit le nom du fichier dark


Une fenêtre de commande s'ouvre,

le traitement se lance pour chacune des acquisitions trouvées,

Lorsque le travail est terminé (explications détaillées plus bas):
- une fenêtre s'ouvre pour voir le contenu du fichier DeTeCt.log à m'envoyer
- un explorateur s'ouvre sur le répertoire Impact_detection dans lequel il faut examiner les images
-  vous voyez apparaitre "Appuyez sur une touche pour continuer"

Et voilà, tout est fait, il ne vous reste plus qu'à inspecter les images générées pour chaque film, simple, non ?


Résultats
Les résultats sont les suivants:

- dans le répertoire "Impact_detection", vous trouverez pour chaque acquisition, avec un nom créé automatiquement à partir du nom de la vidéo "nom_dtc_max.jpg", qui l'image de luminosité maximale pour chaque pixel moins l'image moyenne. C'est cette image qui sert à détecter visuellement si il y a eu un flash d'impact, cf. chapitre décrivant comment analyser les images

- dans le répertoire "Impact_detection\details", vous trouverez pour chaque acquisition, avec un nom créé automatiquement à partir du nom de la vidéo:
1. "nom.log", qui contient la sortie du fichier DeTeCt. C'est là que vous trouverez le chemin complet et le nom de l'acquisition, les infos individuelles sur les trames si vous avez utilisé l'option -v, ou le texte indiquant si un impact a été trouvé par l'algorithme classique.
2. "nom_dtc_max.jpg", (cf. ci-dessus)
3. "nom.jpg", la même image que la précédente, mais dont l'histogramme n'a pas été étiré (elle est donc plus sombre et moins "lisible")
4. "nom_mean.jpg", moyenne des images alignées - elle permet de vérifier l'aspect "normal" de l'acquisition, par exemple la présence de satellites ou de poussières pouvant générer des faux-positifs

- dans le même répertoire que le fichier DeTeCt.exe, un fichier DeTeCt.log qui pour chaque vidéo analysée va ajouter une ligne avec les informations de dates, durée, etc ... à partir des informations de la vidéo ou d'un éventuel fichier log tiré de Lucam Recorder, Genika, Firecapture, PLxCapture, Avi felopaul ou Genicap. A m'envoyer 
à delcroix.marc@free.fr pour un travail sur la fréquence des impacts svp.

Voyons maintenant ce fichier log dans le détail:

Fichier log avec datations, utilisation pour WinJupos

A chaque lancement de DeTeCt.exe (et donc de detect_batch.bat), un fichier log appelé "DeTeCt.log" (ouvert automatiquement en fin de traitement) se trouvant dans le même répertoire que DeTeCt.exe sera enrichi d'une ligne par vidéo traitée contenant les informations suivantes:

DeTeCt; jovian impact detection software
PLEASE SEND THIS FILE to Marc Delcroix - delcroix.marc@free.fr - for work on impact frequency (participants will be named if work is published) - NO DETECTION MATTERS!
Rating;    Start;                      End;                        Mid;                       Duration (s);  fps (fr/s);  File;                        DeTeCt version and comment
  0       ; 2014/12/03 11:41,071083 UT; 2014/12/03 11:41,903900 UT; 2014/12/03 11:41,487491 UT;   49.9690 s;  23.000 fr/s; 031214_114104.avi; detect v2.0(Dec.1,2014) (Firecapture 2.3)
  0       ; 2014/12/03 11:41,907800 UT; 2014/12/03 11:42,741667 UT; 2014/12/03 11:42,324733 UT;   50.0320 s;  23.485 fr/s; 031214_114154.avi; detect v2.0(Dec.1,2014) (Firecapture 2.3, fps calculated)
  0       ; 2014/12/03 11:42,742967 UT; 2014/12/03 11:43,063800 UT; 2014/12/03 11:42,903384 UT;   19.2500 s;  23.000 fr/s; 031214_114244.avi; detect v2.0(Dec.1,2014) (Firecapture 2.3)

Pour chaque film il y a colonne par colonne:
- Rating:                                "0"; si l'option -ADUdtconly n'est pas activée :Nombre de candidats detectés par l'algorithme classique
- Start:                                   la date de début d'acquisition, avec indication si il s'agit de temps local "LT", universel "UT" ou inconnu "xx"
- End:                                    la date de fin d'acquisition, avec indication si il s'agit de temps local "LT", universel "UT" ou inconnu "xx"
- Mid:                                    la date calculée de milieu d'acquisition utilisable par simple copier-coller dans les champs "date" et "UT" de la fonction mesure de WinJupos (attention si il doit s'agit de temps universel "UT")
- Duration:                              la durée d'acquisition
- fps:                                      le nombre d'images par seconde
- File:                                     le nom complet du fichier traité
- DeTeCt version and comment:      la version de DeTeCt utilisée, et un commentaire sur comment ont été estimée les informations de datation, durée:
        - par les informations système sur le fichier "Date from file info")
        - par les informations de datation inclues dans le fichier ser ("Date from ser file info")
        - par les informations de datation inclues dans le fichier log du logiciel d'acquisition ("Date from Lucam Recorder log"), les logiciels supportés étant Lucam Recorder, Genika, Firecapture, PLxCapture, Avi felopaul, Genicap. Pour tout support d'un autre type de fichier log (autre logiciel, ou une version de fichier d'acquisition d'un des logiciels cités non supportés - malheureusement les formats changent avec les versions), merci de m'envoyer le fichier log et je l'implémenterai rapidement.
        - par les informations de date et éventuellement de nombre d'images par seconde ou  si la durée n'a pu qu'être estimée (non tirée d'une information directe comment dans les fichiers log) ("Duration estimated")
        - si une date a été estimée à partir d'une autre et de la durée d'acquisition ("start date estimated" ou "end date estimated")


Comment analyser les résultats : les images dans le dossier "Impact_detection"

résultats positifs
Interprétation des images résultantes par l'exemple nom_dtc_max.jpg (dans "Impact_detection")
(image de luminosité maximale pour chaque pixel moins l'image moyenne)
nom_mean.jpg (dans "Impact_detection\details")
(moyenne des images alignées)
Acquisition de Anthony Wesley le 3 juin 2010
(c) Anthony Wesley
(filtre rouge, traitement sur un extrait de 8s)

Les détails de la planète sont complètement gommées sur l'image de dtc_max, laissant apparaître le flash de l'impact extrêmement brillant.
Acquisition de Christopher Go le 3 juin 2010
(c) Christopher Go
(filtre bleu, traitement sur un extrait de 2s)
Acquisition de Kazuo Aoki le 20 août 2010
(c) Kazuo Aoki
(traitement sur un extrait de 2.7s)

Acquisition de Mazayuki Ichimaru le 20 août 2010
(c) Mazayuki Ichimaru
(traitement sur un extrait de 3.3s)

Le flash est évident sur l'image de détection dtc_max, pourtant à peine visible sur l'image moyenne, qui n'est pourtant pas le film d'acquisition complet puisque durant seulement un peu plus de 3 secondes (sur un film d'une minute il serait invisible). L'acquisition a été faite avec un petit télescope de 150mm. L'algorithme montre là son efficacité.

Acquisition de Masayuki Tachikawa le 20 août 2010
(c) Masayuki Tachikawa
(traitement sur un extrait de 3.2s)
Acquisition de George Hall le 10 septembre 2012
(c) George Hall
(
filtre luminance, traitement sur un extrait de 4s)


résultats négatifs
Acquisition de Marc Delcroix le 8 septembre 2012,
filtre IR>685nm, durée 50s
(c) Marc Delcroix

Notez comme les détails sont estompés, rien ne ressort sur l'image dtc_max. Le limbe est un peu plus brillant (effet de la turbulence ou d'un alignement pas parfait).
Acquisition de Marc Delcroix le 28 mai 2006
(c) Marc Delcroix

Aucun impact detecté:
après visionnage de la vidéo originale c'est un pixel chaud qui ressort sur l'image dtc_max. L'aspect d'un pixel unique était suspect ...
Acquisition de Marc Delcroix le 6 mai 2006
(c) Marc Delcroix

Aucun impact detecté: la zone brillante sur le limbe à droite s'avère être un satellite après vérification des éphémérides (ou sur l'image moyenne d'acquisitions de meilleure qualité): le satellite bougeant par rapport à Jupiter pendant l'acquisition, son contraste est très renforcé par rapport à la planète sur l'image "dtc_max".


Un même effet peut se voir si une poussière (sombre) est sur le capteur et que la planète pendant l'acquistion bouge peu: la zone de la planète où la poussière se sera trouvée sera très sombre sur l'image moyenne, mais si sur quelques images cette zone n'était pas cachée par la poussière elle apparaitra très contrastée - brillante sur l'image dtc_max. L'ombre d'un satellite transitant lors de l'acquisition génèrera le même effet mais sera facilement détectable sur l'image moyenne "mean".
Acquisition de Marc Delcroix le 23 juillet 2006
(c) Marc Delcroix

Ah, la bonne vieille époque des webcams ... on utilisait le mode "raw" à l'époque pour améliorer un peu la qualité des images. Problème, de temps en temps la webcam faisait un "glitch" disgracieux avec pleins de gros paquets de pixels brillants. Pas génant quand on moyenne l'image, mais pas sur l'image dtc_max présentée ici ou du coup il est difficille de voir sur une bande ce qu'il y a...


résultat faux positif
Acquisition de Marc Delcroix le 30 juillet 2011
filtre vert

(c) Marc Delcroix


Pour ne rien vous cacher, j'y ai cru ... une petite zone un peu plus brillante, plutôt circulaire, cela y ressemblait ....
Après visionnage trame par trame de la vidéo ser originale (dans le visualisateur de Genika), il s'est avéré qu'un pixel chaud est apparu pendant une centaine de trames seulement, pendant que la planète tournait un peu autour du même point sur le capteur. Résultat un pixel brillant immobile sur une centaine de trame (l'image moyenne de plusieurs milliers d'images ne montrant strictement rien), et sur l'image dtc_max un bel aspect de flash d'impact ... faux positif! Le seul sur environ un millier de vidéos analysées ....

A noter que l'algorithme classique, ainsi que JID n'ont rien detecté puisque leur algorithme étudie chaque trame contrairement à cette méthode plus globale.

Dans tous les cas, si vous voulez vérifier si il y a vraiment une détection de flash, utilisez les 3 méthodes suivantes:
- inspectez visuellement la vidéo (avec Registax, le module de lecture de Genika, Autostakkert, ...)
- vérifiez en particulier ce que l'algorithme classique a detecté (lignes type  "Impact detected: frame 89 (0h 00min 03s) to 100 (0h 100min 04s). Max lum 92 at frame 90")
- vérifiez ce que le logiciel graphique JID détecté

Communiquez vos résultats positifs et aussi négatifs!!!

Merci de m'envoyer vos fichiers DeTeCt.log (mon adresse delcroix.marc@free.fr est dans le fichier) : même si vous n'avez rien detecté sur vos fichiers d'acquisition, ces informations sont intéressantes pour estimer la fréquence des impacts sur Jupiter. Je compte faire un travail sur ce sujet en collectant un maximum d'information d'un maximum d'utilisateurs, travail qui sera présenté/réalisé en collaboration avec les professionnels - tous les contributeurs seront cités.

Si vous avez la chance de détecter un impact, prévenez moi. Envoyez les fichiers générés par DeTeCt, et préparez vous à la mise à disposition de votre fichier d'acquisition. Préparez-vous aussi à une célébrité tout temporaire, une fois annoncé à la communauté amateur internationale, la presse, les sites webs, les pros vous contacteront pour en savoir plus, c'est tout le mal que je vous souhaite!


Bonne chance dans vos recherches de flash d'impact
!!!

Annexe

Utilisation en mode commande


Sur le principe, DeTeCt s'utilise dans une fenêtre de commande DOS, en le lançant avec des options. Pour connaître ces options, il suffit de taper "DeTeCt" sans aucun paramètre (cf. à copie d'écran à gauche).

Les valeurs par défaut de ces options permettent de détecter le flash de l'impact de Juin 2010 sur les vidéos originales.

Exemple rapide:
    DeTeCt -ifile ./June_2010_Impact_Anthony_Wesley.avi

        Pour une série de fichier FITs, donner le 1er fichier:

    DeTeCt -ifile ./F00001.fit

 Resultat de l'algorithme classique:
    Impact detected: frame 89 (0h 00min 03s) to 100 (0h 100min 04s). Max lum 92 at frame 90

Exemples supplémentaires:
    Pour générer un fichier de données avec la courbe d'évolution de la luminosité et inspecter visuellement la signature d'un éventuel impact:
     DeTeCt -ifile ./June_2010_Impact_Anthony_Wesley.avi -v > luminance.dat

    Pour générer une image de détection basée sur l'algorithme de différence photométrique entre l'image moyenne et l'image de luminosité maximale pour chaque pixel:
     DeTeCt -ifile=June_2010_Impact_Anthony_Wesley.avi -ofile=WesleyADUdtc.png