samedi 14 mars 2026

Mise au point de l'Origin (focuser)

Comment l’Origine fait-il la mise au point ?

Le cœur du système consiste à faire 9 images à 9 positions différentes du focuser et, pour chaque image, à compter combien d’étoiles nettes on peut y voir. La position du focuser qui donne l’image où on peut compter le plus d’étoiles est, en principe, la position de mise au point idéale.

Mais voyons en détails car c'est là que le diable réside ..., 

Dans ce qui suit je vais garder le mot anglais ‘focuser’ pour designer le ‘moteur de mise au point’

Exemple de mise en œuvre du principe décrit ci-dessus :

Image 1 : focuser=19018, étoiles=15
Image 2 : focuser=19074, étoiles=20
Image 3 : focuser=19129, étoiles=21
Image 4 : focuser=19185, étoiles=37
Image 5 : focuser=19242, étoiles=51
Image 6 : focuser=19298, étoiles=57
Image 7 : focuser=19355, étoiles=44
Image 8 : focuser=19410, étoiles=25
Image 9 : focuser=19465, étoiles=19

La meilleure mise au point a été obtenue à l’image 6, avec le focuser en position 19298. On pourrait supposer que c’est la meilleure position.... pas sûr.

Perfectionnement

Ne pourrez t’on pas obtenir mieux en réglant le focuser un peu avant, ou après, cette 'meilleure' position ? Autrement dit on connaît la meilleure des 9 positions mais est-ce le maximum que l’on puisse obtenir ?

Pour répondre a cette question on va  utiliser les 9 paires (x=position, y=nombre d’étoiles) pour déduire les paramètres (a, b, c) du polynôme du second degré y = f(x) = a.x² + b.x + c (une parabole donc) qui approxime cette variation du nombre d’étoiles en fonction de la position du focuser.

Il y a plusieurs manières de faire l’interpolation parabolique en utilisant (au moins) 3 des 9 points. Avec les valeurs de notre exemple on va trouver :  a= -0.002966, b=114.435552, c=-1103562.542850
Ce qui nous donne le polynôme du second degré:

    y = -0.002966 * x² +  114.435552 * x – 1103562.542850

Où y est le nombre d’étoiles et x la position la position du focuser,
La valeur de x (position du focuser) où y (nombre d’étoiles) est maximum est donnée par la formule 

xbest = -b/(2.a)

donc 

xbest =114.43/0.006 = 19291 

        (Avec les mêmes données le logiciel de l’Origin trouve 19288. Je ne sais pas pourquoi …)

Le focuser sera donc amener à la position xbest qui donnera le plus grand nombre d’étoiles nettes.

Les détails

Bien évidement, dans la pratique, il y a de nombreux problèmes à régler.

Note: Les lignes commençant par >  sont des lignes que l'on trouve dans les logs de l'Origin.


Q) Comment exposer les images ?
⇒ Les photo sont exposées avec un gain de 40 (ce qui correspond à iso 2000), avec un temps d’exposition d’une 1/2 seconde avec un  échantillonnage de seulement 8 bits.

> Calibration already set for this gain (40.3), exposure (0.5 sec), and bit depth (8)

Q) Faut il calibrer ces images ? (dark, bias, flat)
⇒ Oui ! Les dark, bias, flats utilisés sont soient ceux fait en usine, soit ceux fait (à votre insu) quand vous avez vous même généré des darks et flat pour vos images.

> Dark scaling factor: 0.557 (exposure 0.500, gain 1.000, temp 1.114)
> Subtracting scaled dark; scaling factor: 0.556978
> Dividing by flat
> At focus step 8, focuser position 19410, number of stars = 25


Q) Comment compter les étoiles visible dans une image ?
⇒ Ceci est un sous problème du problème d’alignement et plus généralement d’astrométrie (plate solving). Celestron utilise le logiciel opensource Tetra3 de l’ESA pour faire l’astrométrie.

> Successfully opened Tetra3 database at /opt/home/core/Lisa_Database/QuadDbT3.dat with 1201016 patterns and 3060477 stars
> Tetra3 solved image from 330 sources in 1310.868 ms with 17 matches

C’est donc certainement à Tetra3 (get_centroids_from_image) que l'on confie de compter les étoiles d’une image.

Notes :
- Lisa = Lost In Space Algorithm
- La version de Tetra3 développée par l'ESA est en python. Il se pourrait que, pour des raisons de performance,  ce soit une version en C/C++ ou Rust qui soit utilisée dans l’Origin.
- Présentation de Tetra par son créateur.

Q) La plage de réglage du focuser est bien plus grande que l’intervalle utilisé dans l’exemple ci-dessus. Comment éviter de devoir parcourir tout l’intervalle ? 
⇒ Pendant le calibrage en usine une première opération de mise au point a été faite et le résultat mémorisé. Puis, à chaque fois que l’Origin fait une nouvelle mise au point, il en garde le résultat. Ainsi, la fois suivante, il cherchera la nouvelle mise au point dans l’intervalle du dernier résultat ± 250

Exemple: Si la dernière position était 19232 la recherche de la mise au point ce fera entre 18732 et 19482

> Current focuser position = 19232, last known infinity focus position = 19232
> Focuser MoveTo ( 18732 ) has completed
> Moving focuser to start of search range: 18982 to 19482...
> Starting focus search at position 18982