ms

Member
  • Content count

    7476
  • Joined

  • Last visited

  • Country

    France

Community Reputation

288 Excellent

2 Followers

About ms

  • Rank
    Hyperactive member
  1. Ce qui est intéressant c'est qu'avec une alim externe 5V/3A de 20000mAh (420 grammes), l'autonomie est de plus de 6h avec une carte graphique bien sollicitée. En mode acquisition automatique (vue la compatibilité GPIO RPI3, il existe pleins de petits moteurs pour contrôler la MAP), l'écran est coupé, du coup l'autonomie augmente.
  2. Avec un petit clavier/touchpad pour remplacer le clavier virtuel et la souris : Une config autonome à moins de 300 euros qui consomme moins de 15W, qui intègre les possibilités d'un Raspberry Pi et CUDA/ArrayFire sous Ubuntu 18.04 c'est assez intéressant. Il ne me reste plus qu'à y connecter une MIPI CAM 290, Sony IMX290 For Raspberry PI, JetsonNano à moins de 100 euros et la config sera complète.
  3. Qui parle de TensorFlow ? J'utilise ArrayFire (voir ci-dessus) qui est une bibliothèque C/C++ de tenseurs avec les cartes embarquées Jetson Nano (CUDA) et prochainement UDOO Bolt (OpenCL). C'est plus rapide que d'utiliser TensorFlow ou Torch comme l'explique Facebook avec sa bibliothèque Flashlight : https://arxiv.org/pdf/1812.07625.pdf Il suffit de recompiler ArrayFire pour l'environnement choisi (amd64, arm64, ...). ArrayFire permet aussi de se passer d'OpenCV et de Qt. Enfin, un développement Jetson Nano est entièrement portable (Ubuntu 18.04, CUDA 10.0 et ArrayFire 3.7) sous Jetson Xavier qui est beaucoup plus puissant.
  4. La consommation c'est 10W par défaut (nvpmodel 0) et 5W en mode bridé (nvpmodel 1). J'utilise le mode par défaut et j'alimente la carte en 5V 3A, cela est suffisant pour l'écran tactile 7" FullHD et la caméra ZWO 224MC (autonomie d'environ 6h pour l'ensemble). Ce petit PC sous Ubuntu 18.04 est autonome dans la mesure où tout peut être compilé directement pour l'ARMv8 (pas besoin de passer par un PC avec processeur Intel comme dans le cas des autres cartes Jetson), j'ai fait le test avec la librairie ArrayFire 3.7 : http://gpu-vision.com/index.php/arrayfire-3-7/ Pas de problème non plus pour l'écran tactile qui fonctionne dans un mode reconnu d'Ubuntu 18.04. Le coût de l'ensemble (JetsonNano + boitier + carte microSD 32Go + écran tactile 7" Full HD + alim 5V 3A) c'est 280 euros. Reste maintenant à dessiner avec FreeCAD un nouveau boîtier qui intègre tout cela (Jetson Nano + écran + alim = 600g environ) puis de le fabriquer avec une imprimante 3D, c'est un oculaire électronique en gestation. Il y a aussi 2 ports USB3 de libres pour piloter la monture et la MAP. Quand on pense qu'une nouvelle génération de carte microSD (900 Mo/s) est en préparation (aussi rapide qu'un disque SSD). Consommation Jetson Nano + écran tactile 7" en sollicitant la carte graphique au maximum = 10 à 13 Watt (inférieur aux 15W fournis par la batterie externe de 20000mAh) : Autonomie = (20 / (13/5)) x 0,8 = 6,15h > 6h
  5. Pourquoi cette précipitation pour ôter le bruit ? Ci-après le 2 premières images enrichies des meilleurs patchs de 40 images consécutives (à gauche l'image brute initiale) : etc ... En faisant la même manip avec ton image brute enrichie des meilleurs patchs de 40 autres images brutes :
  6. Avec une seule image brute ça me semble impossible. Tu prends par exemple cette image et tu l'enrichis des bons patchs extraits des 300 premières images brutes. Tu as plus de chance d'avoir une image fidèle en travaillant au niveau du patch que de l'image entière. L'image résultant de cette opération est encore bruitée, déformée mais elle n'est pas floue. Tu refais la même opération avec une autre image brute et 300 nouvelles images consécutives. A la fin, tu obtiens 70 images enrichies bruitées et déformées mais un algorithme comme le centroïde (ou autre) permet d'obtenir une image non déformée. Tu peux maintenant estimer le bruit et dé-bruiter cette image. Pour le moment je prends les images 1, 301, 601, 901, ... pour démarrer, c'est pas très malin parce que si l'image est très déformée, le résultat final sera moins bon. Il me faut trouver un algorithme rapide qui permette de sélectionner une image de départ sans image de référence. En attendant, je peux faire cette sélection en visuel mais ce serait mieux si c'était automatique. L'apprentissage profond pourrait être une solution pour sélectionner cette image de départ qui sera enrichie par la suite avec les "bons patchs" extraits des images brutes suivantes. Pour tester la validité de cette approche, la lune reste un objet de choix, elle permet même d'augmenter le nombre de détails en utilisant des prises faites à des dates différentes.
  7. Les 21204 images brutes ne sont pas floues comme celle du milieu (empilement de 16) ou celle de droite (empilement de 300). En empilant tu diminues le bruit mais tu amplifies le flou et après c'est la galère pour faire d'autres traitements. Il ne faut pas empiler, tu prends une image brute pas trop mauvaise et tu extrais les meilleurs patchs des 300 images brutes consécutives suivantes par exemple. Puis, tu complètes ton image brute initiale avec les meilleurs patchs, elle est plus détaillée et elle n'est pas floue. Quand tu as obtenu 70 images plus détaillées mais pas floues alors tu peux appliquer le centroïde (ou un autre algorithme plus rapide) pour les redresser et faire diminuer le bruit.
  8. Tous ces algorithmes sont issus du passage dans le labyrinthe de ces 10 dernières années et les plus performants ont été portés sous CUDA. L'extraction des "bons patchs" ne demande plus que 2,3ms par image FULL HD avec une carte graphique 1050 Ti, ce qui laisse suffisamment de temps aux autres traitements pour tenir une cadence de 100 à 150 fps avec des images FULL HD ... mais déjà la 1150 Ti (50% plus rapide) pointe le bout de son nez. Mon dernier mot c'est qu'il doit être possible d'atteindre ce type d'image à condition d'aller au delà des 21000 brutes de cette vidéo :
  9. Ça se voit moins bien que dans les images sous-marines mais dans ton image piquée, tu as des patchs de bonne qualité, des patchs flous, etc ... Il ne faut pas chercher à redresser ces images tout de suite mais à obtenir des images déformées dé-bruitées et dé-floutées. Après l'algorithme du centroïde (ou un autre) permettra de les redresser dans de bonnes conditions. Un dernier algorithme combinera ces images mais en évitant de les re-flouter. Ton empilement se prête bien à une déconvolution aveugle mais il présuppose que tu as déjà les 300 meilleures images : Après, il est possible de faire un dé-bruitage aveugle tenant compte des patchs similaires : et la balance des blancs :
  10. A éviter car c'est très lent quand le nombre d'images augmente. Les 2 autres liens sont intéressants mais ils ne règlent pas le problème de la cheminée ou de la fenêtre de droite (cisaillement local) et en plus ils sont très coûteux en temps de calcul : Pour revenir à la vidéo de polo et à l'exemple que tu donnais quelques posts plus hauts, il me faudra encore du travail pour atteindre l'image de droite mais l'image centrale est aujourd'hui à portée :
  11. Cette méthode est détaillée ici : https://www.researchgate.net/publication/227172988_The_Centroid_Method_for_Imaging_through_Turbulence J'en ai fait une version C/CUDA que j'utilise en post-traitement des images de la vidéo assistée.
  12. Effectivement, il est possible de dé-bruiter la couche bleu (image de droite) lors de l'alignement des couches ou mieux lors de l'ADC logiciel : AS ! est dans les choux dans ce type de configuration, je pense que la méthode du centroïde est plus rapide (une fraction de seconde avec CUDA) et surtout plus précise : Pourquoi ne traites-tu pas directement les images brutes RGB ?
  13. Avec tes 16 images, j'ai pas mieux que cela (centroïde + similarités) :
  14. L'image de droite est obtenue à partir d'un complément d'images brutes "simulées", reste à valider cela avec de vrais images brutes sur le terrain. Par contre l'image qui ressemble à celle du Pic résulte de la manipulation suivante qui n'a pas un grand intérêt : Si dans 16 images, tu as 80% de "bons patchs" alors tu peux compléter les 20% manquants avec l'inpainting. Cependant dans une image qui globalement semble "pourrie", tu as souvent quelques "bons patchs" d'où l'intérêt de travailler avec toutes les images brutes : Ici la cheminée est pourrie mais la pelle, l'ancre, une fenêtre et une partie du requin sont exploitables en terme de patchs. Sur d'autres images une partie de la cheminée peut aussi être exploitable. Bref ce n'est que localement que l'on peut aligner des images brutes après avoir reconstitué quelques zones à partir de "bons patchs". Les patchs de moins bonne qualité peuvent être remplacés par des patchs similaires (fractales) de meilleure qualité. Au final, tu obtiens une image nette avec parfois quelques trous que l'inpainting viendra combler.
  15. Cette image est très improbable à partir de 21.000 images brutes parce qu'il n'y a pas assez de "bons patchs". A vérifier donc avec 10 fois plus d'images brutes (15x60x233=210.000) puis en utilisant les similarités dans l'image et enfin l'inpainting s'il reste des trous. Une image comme celle de droite me semble plus probable en laissant tourner le temps nécessaire :