Aller au contenu

Programme de pretraitement : HELP methode calcul BiasMaster,FlatMaster, Dark


Laphroaig

Messages recommandés

Bonjour,

 

Cela fait 2/3 semaines que je développe un Programme sous windows en C/C++ avec openCV permettant de faire le pré-traitrement de manière automatique.

 

J'ai pas trouvé de methodes assez detaillée

Une idée detaillé pour calculer biasMaster, darkMaster, et flatMaster ?

 

Voila le topo de l'etat de mon programme :

 

Bias Master : Pour le moment je fait simple, mais je pense que pour le biasMaster il faut

Moyenne des bias (ou Median au choix)

 

Dark Master : Pour le moment je fait simple : je suis un peu pommer ...

pour le sigma/clipper chepas quoi : j'ai calcule esperance, variance et eType de mes images

Soustraction du BiasMaster

Constuction du Dark Master par la moyenne ou median (au choix) des darks

 

Flat Master : Je pense que pour ce calcul je suis bien (Merci Fred_76 et Eric S)

Soustraction Bias Master et DarkFlatMaster

Trouver le niveau Median des flats et normaliser au niveau Median

Constuction du Flat Master par la valeur mediane des flats

 

Traitement Brutes :

Soustraction BiasMaster et FlatMaster

et division par le FlatMaster

 

Construction Image Finale : Recalage image -> Moyenne des brutes traites -> Bayer Image Couleur

 

Pour Recaler l'image :

methode de translation, grace a un template (découpage d'un bout de l'image qui servira de reference)

 

Pour Bayer : je pense que opencv fait une interpolation basique

(il faudra que je la fasse moi meme

pour ca j'ai trouvé des méthodes, le super pixel peut être sympa d'ailleurs ... )

 

Pour le calcul des biasMaster, darkMaster et flatMaster :

Toutes la pile d'images(flats,darks,bias) est stockée en RAM et liberer juste apres le calcul

 

Pour la chaine de traitement des brutes (Problematique de taille)

2 possibilités :

"-" 500Mo de brute : Chargement de toutes les brutes en RAM et execution de la chaine (optimal)

"+" 500Mo de brute : Ou écriture des résultat temporaires (plus lent mais aucune problematique de taille)

 

Le but final est de pouvoir constuire une chaine de traitement automatique en ligne de commande.

 

A terme les Avantages

- Possibilite d'avoir un calcul rapide si les données brutes ne depasse pas une certaine taille

- Faire une chaine de traitement spécifique avec par ex application d'un empilement Median ou Moyen

- Empiler plusieurs chaines de traitement : les exécuter et aller au lit ;) et avoir de la place sur le disque dur

- Des outils nous permettant de sauvegarder des résultats pour les visualiser ou éviter de recalculer

 

A terme les inconvenients

- Pas d interface graphique permettant de visualiser les donnees temporaire stockees lors du calcul

- Programme sous windows : Systeme de creation d'arborescence coder pour windows (à porter ...)

- C/C++ non portable : Mes compilations sont sous windows 64bits

- Lors de l'execution, impossibilité d'interagir : il faudra executer plusieur programme

- Lecture uniquement de Fits 8 - 16 bits : je pourrait etendre a d'autre format libre (.dng ? . ? ...)

 

Bien sur mon code est disponible pour ceux qui le souhaite

Merci a ceux qui ont eu le courage de lire

Et merci au réponses futur

 

Je mettrai a jour sur fil au fur et a mesure de mes avancées.

 

Rémi

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

Salut Rémi,

 

c'est exactement le genre de projet que je voulais me donner en challenge. Et je ne connaissais pas openCV.

Je développe personnellement en C à l'aide de GCC. Je ne me lance pas dans les interfaces graphiques et je préfère me concentrer sur l'algorithmique.

Recherche mathématique, Raytracing, Jeux d'Echecs (Stockfish)

Depuis 30 ans à présent. Pfiou, le temps passe vite.

 

Je n'ai pas eu le temps de voir le code. C'est du C++ pur ? (aïe). Mon idée était de créer un ensemble d'outils portables en C pur. Opencv est-il si rapide (prise en charge des GPU ?)

Lien vers le commentaire
Partager sur d’autres sites

Je trouve opencv assez performant y a pas mal de "C" derrière.

Et au vu de la reputation du "C" ...

 

Apres j'ai deja vu des super truc en java : par exemple ImageJ

 

J'utilise pas le GPU ... je me suis jamais penché sur ce genre de programmation pour le traitement d'image

Par contre a une époque lointaine en utilisant OpenGL pour la 3D, j'utilisais le GPU

 

Je mixe C/C++

Pour les acces fichier j'ai prefere optimiser en C avec des fread et fwrite malloc et tout le bordel ...

 

En tout cas si tu as des idée mathematique pour le dark master

Je veux bien les coder ;)

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

N'ayant pas de réponse pour le Dark Master

J'ai developper un decodeur pour lire un fichier texte qui permmetra de constuire la chaine de traitement est de l'executer

Plus besoin de recompiler ...

 

Voila un exemple

 

#Operation_______Output__________Affect_____Classe______________input__________parametres

CHAIN__________BiasMaster_______=_______ChainBiasMaster_____INPUT/OFFSET/

CHAIN__________DarkMaster_______= ______ChainDarkMaster_____INPUT/DARK/ __________BiasMaster,EMPILEMENT_MEDIAN

CHAIN_________ FlatMaster________= ______ChainFlatMaster_____ INPUT/FLAT/__________BiasMaster,DarkMaster,1.0

 

OPER__________ShowFlat__________= ______ShowImage__________FlatMaster__________title,0,65535

 

EXEC__________BiasMaster

EXEC__________DarkMaster

EXEC__________FlatMaster

 

EXEC__________ShowFlat

 

[ Pour une meilleur visibilite "_" = espace autant qu on veut]

Cet exemple :

Chaine BiasMaster => classe utilise ChainBiasMaster et input : dossier contenant la liste des bias

 

Chaine DarkMaster=> classe utilise ChainDarkMaster, input :dossier contenant la liste des darks

et parametres biasMiaster(resultat ci dessus) et l'empilement souhaite

 

Chaine FlatMaster=> classe utilise ChainFlatMaster, input :dossier contenant la liste des flats

et parametres biasMiaster et darkMaster(resultat ci dessus) et niveau de normalisation (1.0)

 

Oper ShowFlat => classe utilise ShowImage, permettra de visualiser une image input : FlatMaster (resultat ci dessus) parametre : titre fenetre et niveau de normalisation affichage en unsigned int 16bits

 

Mon interpreteur jusqu'a la n'aura fait que constuire la chaine

Pas grand chose sera prix en memoire

 

Chaque execution chargera les inputs pour calculer l output

Si un operateur est constuit avec un output declare APRES cela posera un probleme bien sur ;)

Ou si l'operateur est executé avant le calcul de l'output utilise.

 

Donc a l'execution

 

Voila pour l'exec de la premiere chaine BiasMaster

1/ Chargement list images Bias

2/ Calcul Bias Master

3/ Dechargement des images bias plus necessaire pour la suite

 

Idem pour FlatMaster et DarkMaster c'est pareil a part que leurs parametres leur permet de recuperer les résultats precedents

La derniere execution permet visualiser le flat en ayant reetaler sur 0 65535

 

Merci pour ceux qui ont eu le courage

En esperant avoir des réponses

desolé pour le pavé

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

Problematique du Dark Master apres calcul du BiasMaster :

 

- Enlever le bias master a chaque dark ou enlever le bias master uniquement au dark issu de l'empilement ?

 

- Une fois enlever le bias master du dark : des pixels peuvent etre legerement negatif .

Continuons le calcul avec ce leger negatif qui peut provoquer un leger positif plus tard.

Ou remettons à 0 ces pixels ?

 

- Pour le sigma clipping voila la formule merci au site :

 

https://www.gnu.org/software/gnuastro/manual/html_node/Sigma-clipping.html

 

Calculate the mean, standard deviation (σ) and median (m) of a distribution.

Remove all points that are smaller or larger than m±ασ.

 

Que fait t - on de ses pixels ecartees par la suite pour trouver leur bonne valeur

 

- Et derniere question comment effectuer l'empilement des darks ? Median moyen ou autre ?

 

J'essairai d'apporter des images pour le sigma clipping ca motivera des gens peut etre ;)

 

Rémi

Lien vers le commentaire
Partager sur d’autres sites

Promis voila des images de mes resultat on verra si ca motive du monde :)

 

Pour le sigma clipping :

Reprenons la formule ValeurMedianeImage +/- ecartTypeImage * alpha

 

Apres un empilement median de 15 dark de 15sec

Donc voila le resultat des pixels qu'on peut ecarter suivant le alpha choisi pour donner une idee

 

alpha = 2

28267-1476974322.jpg

 

alpha = 5

28267-1476974385.jpg

 

alpha = 10

28267-1476974398.jpg

 

alpha = 20

28267-1476974409.jpg

 

Que fait on de ces pixels apres :) ?

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

Pour etayer sur une brute (capteur couleur) de la lune alpha = 2

Si vous avez des explications pour les carres noirs ? Je suppose que c'est le pixel bleu qui capte pas trop sur la lune ..?. Sur la resol native en 1280*960 en zoomant au max cela fait le meme damier accentuer par la miniature

 

28267-1476977298.jpg

 

28267-1476977274.jpg

 

Cela permet de detecter les zone lumineuse

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

Un peu déçu que ça motive personne : au moins ça peut me servir de journal de bord.

 

Avec tous les photographes present sur le forum, certain doivent connaitre les techniques de pre-traitrement de façon précise ....

 

Aujourd hui présentation des algorithmes de dé matriçage. En esperant en interessé ;)

 

Merci a ce site d'ailleur pour les algos :)

http://www-iut.univ-lille1.fr/lp_vi/projets/2011_dematricage.pdf

 

je vais poster les resultats des differentes algos

- Décalage et copie des pixels.

- Interpolation avec les voisins.

- Le super pixel qui ne crée pas de nouvelles données mais reduit la resolution de 2

- Et la derniere qui est une interpolation de la teinte (rapport rouge / vert et bleu /vert)

 

Pour information la methode de décalage est celle de openCV

Les 3 autres mes petites mains ...

Un autre methode (j'ai oublie le nom)existe qui apparemment est celle qui a les meilleurs résultats.

Mais bien plus compliquer a mettre en oeuvre.

 

 

Rémi

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

Info pour la prise : 70 image de lunes empilée,11 flats (15 darks et 15 offset) [Empilement avec mon programme]

Camera : 1280 * 960 - 3,75µm - Bayer RGGB

Lunette : 120 / 1000 achromatique

 

Image decoupe : 320 * 200 et (110 * 100 pour la SUPER_PIXEL)

Balance des blancs : effectuer sur Copernic

 

28267-1477301845.jpg

 

Luminosite exagerée bien sur ;)

 

Interpretation a venir ...

Modifié par Laphroaig
Lien vers le commentaire
Partager sur d’autres sites

Pour le décalage :

vu que c'est l'algo d'openCV je suppose qu'il doit faire un gaussien au vu du résultat

Le chromatisme disparait pres du bord

Mais derriere ca bave en bleu

D'ailleur je trouve l'image un peu flou

 

Pour le super_pixel :

Il pixelise ;) normal mais garde bien les details quand meme

Mais possede un tres leger liseré bleu

 

Interpolation et Teinte :

Sur le lisere bleu : produise a peu pres les mêmes resultats.

mais je prefere l'interpolation de teinte.

 

Pour etayer voila une interpolation de teinte

avec un calcul de la balance des blancs automatique possible

Le vert sert de luminance et ensuite on calcul les rapport R/V et B/V

 

28267-1477302679.jpg

 

Le chromatisme bleu est encore mieux corrige.

Je trouve l'image de meilleure qualité aussi ...

 

Et vos avis

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation !

Vous pouvez répondre maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous pour poster avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.