Semaine 2

Lundi 16 décembre : 

Cahier des charges :

- 2 longueurs d'onde fixés : 660 nm et 940 nm

- Diamètre sphère : 9 mm

- Distance objet : 5 /10 mm

- Focale < 2.25 mm

- Pixel : 4 µm et grille de 25x25 pixels =>10 µm et grille de 10x10 pixels

Imagerie (Eleanor/Fatou):

On part sur des micro-lentilles de diamètre 400µm, de focale inférieur ou égale à 2.25 mm, fonctionnement à 2 longueurs d'onde 660nm et 940nm. Point de départ : rayons de courbure optimisés limitant l'aberration sphérique, suppression de la couche 2 et épaisseurs page 35 : 10µm, 10µm et 200µm. Critère d'optimisation RMS Wavefront et EFFL. On commence par faire varier les rayons de courbures, puis les épaisseurs, puis les 2 à la fois si besoin.

Tests Zemax: {Rc1 variable + mise au point} {Rc2 variable + mise au point} {Rc1, Rc2 + mise au point} {Rc, épaisseurs, mise au point}

Finalement on revient sur la théorie car la conjugaison n'est pas en infini-foyer. Calcul de la distance hyperfocale. Puis on verra avec la prof comment faire plusieurs simulations simultanément sur Zemax. Calcul du taux de transmission aux interfaces.


Radiométrie (Nora, Maël):
Écriture d'un premier script python, produisant le SNR à une longueur d'onde. Les flux sur les pixels sont trop élevés d'après ce code. Cela semble être due à la non limitation de la full well capacity (le pixel sature). On décide donc de diminuer nos ON, et diminuer le flux des LEDs. Réflexions sur le SNR du taux d’oxygénation pour avoir une précision de 1%.
Échange avec équipe reconstitution numérique pour mettre en commun notre travail. Notamment placer les lentilles comme on le souhaite pour reproduire l'idée que l'on se faisait de la caméra.
Problèmes :
  • la production d'un rendu avec le nombre de lentilles souhaité est trop long du fait d'imbrication multiples de boucles (tentative de vectorisation jusqu'à mardi matin)
  • Il y a toujours autant de lentille sur une couronne se rapprochant du pôle. Hors il devrait en avoir moins du fait de la diminution du périmètre --> modification du code
Restitution d'image (Lucas,Fattah):

Relecture du script Matlab créer en semaine 1. 
Précédemment le champ de vision était conique, mais le capteur est carré alors on a essayer de modifier le code pour simuler un champ de vision pyramidale dont la base est le capteur.
On a essayé de décomposer l'angle entre le vecteur directif du capteur et le vecteur allant du capteur jusqu'a un point de l'objet, suivant les angles méridional et parallèle, et ca n'a pas fonctionné.

Mardi 17 décembre:

On passe à une taille de pixel de 10 µm pour se rapprocher de la limite de diffraction aux deux longueur d'onde (ΦAiry=9 µm @660nm et 13 µm @ 940nm) + meilleur énergie encerclée. On reste sur Φlentille=400 µm et une ouverture ON' = 200 µm/2.25 µm = 0.09.

Imagerie:
Objectifs :
- trouver + de doc sur les indices des NOA pour modéliser la dispersion ou alors proposer d'autres matériaux
- Sur zemax prendre le bon champ (2.5°) et être + stricte sur l'optimisation
- Changer la configuration infini-foyer (prendre une focale de 1.8mm)

 Equipe radiométrie :
Modification du script produisant le flux et SNR pour une longueur d'onde. Pour intégrer le calcul du SNR du taux d'hémoglobine en fonction des SNR aux 2 longueurs d'onde (inverse de la somme quadratique des inverses des SNR).
Le SNR nécessaire pour une précision de 1% de O2 est de 100. On l'obtient pour 400e-6 de diamètre des microlentilles, et pour le flux nominal des lentilles.  Compréhension de la chaine numérique pour obtenir véritablement le niveau O2. Ecriture rapport pour la partie radio concernant le SNR.

Restitution d'image (Lucas,Fattah):

Car le champ est pyramidale il faut décomposer l'angle entre le vecteur décrivant la direction d'observation du capteur et le vecteur allant du capteur jusqu'au point de l'objet observé suivant les deux axes de la pyramide (d'une face à l'autre, orthogonalement au vecteur directif du capteur).
On a fait l'hypothèse qu'au moins l'un des axes de la pyramide ne contient pas de composante suivant z, ce qui traduis le fait que les capteur sont correctement alignés.
On peut alors calculer un le vecteur décrivant l'axe horizontale du capteur, puis sont axe vertical, et décomposer le vecteur capteur-objet suivant ces deux axes, et par un produit scalaire vérifier si leurs angle est inférieur ou égal au champ vue par le capteur.
On l'ajoute ensuite au masque pour récupérer tout les points de l'objet observé par le capteur.

Mercredi 18 novembre:

Cahier des charges:
- On passe à une taille de pixel équivalent de 16 µm.
- Nombre de lentille fixé à 380.
- Nombre de LEDs fixé à 5.
- Structure mécanique fixée

Imagerie (Fatou/Eleanor):
Retour sur le calcul de la profondeur de foyer et de champ puis création d'un code correct pour avoir leur évolution en fonction de la focale.



On a pu déterminer une première solution optimisée à la fois pour une mise au point dans l'eau et dans l'air. On a modélisé nos propre matériaux sur Zemax à l'aide de l'indice centrale @800 nm et aux indices extrêmes : 660 et 940nm. Quasiment toute l'énergie est encerclée dans un carrée de côté 16 µm, Rs de 73% et 81%. Rayon RMS du spot < pixel dans l'axe et dans le champ. profondeur de champ
profondeur de foyer
Reste à modifier le champ car on est plus en infini-foyer, et tenter de corriger le chromatisme.

Conception géométrique :
Dessins de la conception géométrique de notre demi-sphère, pour essayer de déterminer si notre idée est réalisable/concevable sur SolidWorks. Différents plans (vue de dessus, vue de face et vue de coupe) ont été dessinés pour mieux visualiser. 
Finalisation du script final Python pour le calcul du SNR et du flux total de la caméra. 

Restitution d'image (Lucas,Fattah):

On a calculer le champ observé par chaque pixel du capteur, de la même manière puisque le pixel est également carré, mais il observe un angle légèrement différent il faut donc calculer cette nouvelle direction, et calculer les nouvelles direction selon laquelle décomposer le vecteur capteur-objet. On peut en appliquant le masque à une image récupérer le niveau de gris moyen observé par chaque pixel et reconstruire ce que le capteur observe.
Cependant cette simulation sont très lourde, il y a beaucoup de boucle for imbriqué, alors on à commencer chercher des moyen de réduire le temps de calcul.

Jeudi 19 décembre :

(Maël + Fatou) : répartition d'éclairement sur light tools et sur python. Comparaison des 2 résultats pour une LED au pôle et une LED à l'équateur. Objectif : déterminer l'angle pour lequel l'éclairement est divisé par 2 par rapport à l'équateur.

=>solution possible : ajouter un dôme semi- réfléchissant au dessus de la LED au pôle (Maël tente sur light tools)

Imagerie (Fatou, Eleanor, Nora):
Recherche optimisation des meilleures lentilles. 2 configurations de départ, celle de Fatou (avec une dernière interface) et celle d'Eléanor (sans la dernière interface). Pour chacune, tests en changeant l'ordre des indices.
Configuration de Fatou (reprise par Nora) :
- 2 configurations optimales ont été trouvées avec 4 indices : (NOA1348, LOC, NOA61, NOA170 et LOC, NOA13458, NOAZ61, NOA170)
- suppression de la couche NOA61, et 9 tests effectués en changeant à nouveau l'ordre des indices : une unique configuration optimale trouvée (NOA1348, LOC, NOA170)
Configuration de Eléanor (sans la dernière interface) :
->2 configurations ont été trouvé, une en changeant l'ordre des matériaux et l'autre en supprimant une couche. 

Ré-ordonnemenent des couches : configuration 3

Suppression d'une couche :

Configuration 1

Restitution d'image (Lucas,Fattah):

On a réussi à faire la simulation sans boucle 'for' ce qui permet d'accélérer la simulation.
On a effectué une petite correction sur l'orientation des pixel projeté qui auparavant se comportait mal lorsque l'on était proche de l'axe vertical.

Vendredi 20 Décembre 

Réunion d'équipe pour faire le point sur le travail accompli cette semaine et le travail à venir.
Travail accompli : 
-Conception de lentilles fonctionnelles correspondant à l'application
-Détermination de le répartition d'éclairement 
-Définition des paramètres tel que la taille du pixel, la taille des lentilles, la taille du capteur pour obtenir un bon taux de précision pour l'oxygénation
-Prototype de la géométrie de la caméra
-Simulation du champ couvert par un pixel
-Simulation du taux d'oxygénation
-Début de la rédaction du rapport d'avancement : 1)Obtention d'un bon taux de précision et les contraintes que cela apporte/ contraintes géométrique de la caméra, 2)Conception des lentilles répondant aux contraintes, 3)Optimisation de la géométrie : répartition des LEDS/lentilles en fonction de la répartition d'éclairement, 4) Reconstitution de l'image
-Réflexion sur le DISC
Travail du jour :
Trouver des capteurs adaptés à notre application, simuler le taux d'oxygénation, simuler l'éclairement dans un environnement sphérique, simuler une image sur zemax

Piste pour le capteur : 
- https://www.thorlabs.com/drawings/e2df68f93def6381-EA5E737A-9A33-3BDB-D405E2C8A34A372C/FDBS11-SpecSheet.pdf (photodiode Black Si)
https://www.ovt.com/wp-content/uploads/2023/05/OP02220-PB-v1.5-WEB.pdf (onmi VISION)
Travail de la semaine 3+
-Poster
-Conception mécanique sur SolidWorks 
-Tolérancement des optiques 

Restitution d'image (Lucas,Fattah):

La nouvelle méthode créer des tableau multidimensionnel trop volumineux pour matlab, on a essayer de réutiliser une boucle pour tenter de réduire la mémoire utilisé au prix d'un peu de temps de calcul.
Fonctionnalité précédente mise sous forme de fonction pour la facilité d'usage.

Radiométrie :
simulation sur lights de l'éclairement (à une longueur d'onde ) sur une sphère à distance de peau avec 4 LEDs sous l’équateur et  non tiltés et une led sur le pole. Dans ce modèle optimiste la contribution de la led du pole est non négligeable et permet l’éclairement suffisant pour imager 2pi stéradians.Distribution angulaire de l'intensité avec 4 leds sous l'équateur (non tiltées) et une sur le pole
Par ailleurs 4 leds sur l'équateur suffisent, le minimum est trouvé devant la ligne et le maximum lorsque l'on est entre 2 leds ( leurs éclairement se chevauchent). Dans le modèle plan on trouvait le seuil angulaire pour lequel l'éclairement passait sous les Emax/2 à 30°.

Conclusion : placer les leds équateurs sous l'équateur pour profiter de la surface suffisamment éclairée. Placer une led sur le pole. Un modèle réaliste serait sans doute celui ou le capteur est un hybride entre un cylindre et une sphère.
Dans un modèle

simulation du calcul de tau oxygénation:(lucas, Fattah)

Nous réalisons une simulation pour calculer le tau d'oxygénation en générant des signaux pour deux longueurs d’onde, rouge à 660 nm et infrarouge à 940 nm. Ces signaux sont modélisés comme des fonctions sinusoïdales bruitées pour représenter les variations d’intensité lumineuse mesurées. Nous estimons ensuite les valeurs de Ndc, correspondant à la composante continue du signal, en prenant la moyenne temporelle, ainsi que les valeurs de Nac, correspondant à la composante pulsatile, en utilisant une transformée de Fourier pour extraire l’amplitude dominante à la fréquence cardiaque. Une fois ces paramètres obtenus, nous calculons le rapport R défini comme le quotient des rapports Nac/Ndc entre le rouge et l’infrarouge. Enfin, nous déterminons le tau d'oxygénation en appliquant la formule tau égale 110 moins 25 fois R, puis nous affichons les résultats ainsi que les graphiques des signaux et leurs spectres pour validation.