Sommaire des sites JMP       4 La proto
Informatique
Tour du Monde
de Renaud
Le Yunnan
(Chine)
La Birmanie Le Spiti L'Arménie Le Gujarat

Slant Edge

ref D:\Dropbox\Doc\Optique\SlantEdge\_Slant_Edge.php

Voir aussi: 
D:\Dropbox\Doc\Camera\Yi_4k\_caméra_Yi_4k.phpD:\Dropbox\Doc\Camera\Yi_4k\IMX377CQT_Flyer.pdf
D:\Dropbox\Doc\Optique\SlantEdge\_Mesure_qualite_objectifs.php
D:\Dropbox\Doc\Optique\SlantEdge\_Slant_Edge.phpD:\Dropbox\Doc\Optique\SlantEdge\
D:\Dropbox\Doc\Optique\_mires_avec_wafer.phpD:\Dropbox\Doc\Optique\_Optique.phpD:\Dropbox\Doc\Optique\_Slant_Edge.php

Rappel sur la MTF

Cas de l'objectif Olympus MSplan 10x 0.25




Clipboard02.jpg

Clipboard02b.jpg

Fichier simulation D:\Dropbox\Doc\Microscopie\RelaisOptique\Projectif.xls

Couleurs:

    - Orange: Courbe théorique

    - vert:      Courbe approximative souvent utilisée. Notera le passage par le point singulier: x =f/fc =50%  y =40%

    - Bleue:    Erreur en utilisant la courbe approximative (verte)

 

Limite de fréquence

Grandissement NA lp/mm Tache
2.5x 0.07 254.4  
4x 0.10 363.6  
10x 0.25 909 1.1 µm
10x 0.3 1090 0.92 µm
20x 0.45 1636 0.61 µm
       
40x 0.65 2363  

 

Dans le cas présent: obj 10x 0.25

la fréquence de coupure=fc=910 lp/mm. Le point singulier sera x=455 lp/mm et MTF=0.4=40%

1- Photo 20200303_185047.jpg    MSplan x10/0.25 en diascopie

0- Photo prise avec le tel S6 de Samsung

S6 Basic Specifications
    Sensor size:    1/2.6 inch (5.5mm x 4.1mm)
    Native ISO:    100 - 800
    Image Resolution:     5312 x 2988 (15.9 MP, 16:9)
    Pixel Pitch: 1.12 microns (approx)

MS plan 10x 0.25  (si capteur sans relais)
    résolution objet= 1,1 µm =Lambda/2*NA
    Tache capteur=     11 µm =G * Lambda /(2*NA)
    Pixel = 5,5 µm                

1- retourner la photo jusqu'à avoir le noir du coté gauche

Clipboard01.jpg

2- Zoomer à 100 %

Clipboard03.jpg

3- Sélectionner un rectangle horizontal

Clipboard05.jpg

4- Run MTF

Clipboard07.jpg



Nouvelle manip avec capteur 55mm

Clipboard09.jpg

L'échelle Spatiale frequency est x2, pour un capteur /2  (et c'est logique!)  100mm -> 55mm de taille capteur

Le capteur du S6 ne faisant que 5.5 mm, il faut x10 l'échelle des fréquence spatiale. On a donc ici du 300-400 lp/mm

La transition



Clipboard08.jpg

fig. Exemple de transition reconstituée

test_MTF_01.txt   Classeur1.xlsx



Conclusions


On peut utiliser Slant Edge en microscopie. Cependant le logiciel fournit une échelle Spatial Frequency illisible. (les nombres se chevauchent)

On va donc utiliser un capteur 10x plus grand, et mentalement x10 la fréquence indiquée.

Attention il s'agit de manip préliminaires (le nb de pixel H est faux, il devrait être de 5312

...


Problèmes à analyser


Est-ce bien valable d'utiliser les dimensions du capteur de téléphone?

Car on n'a pas projection direte sur le capteur! Il y a plusieurs relais optiques: oculaire x10, objectif du téléphone, ...


Méthode finale (pré-released)



Considérations


On cherche la FTM du coté objet. Ce sera pour vérifier que l'objectif est de précision et a bien une accuité de 1.1 µm.

1,1 µm =Lambda/2*NA     avec Lambda=0.55µm   NA=0.25   G=10x

Il faut retranscrire les données du capteur au niveau de l'objet, car on cherche le nombre de paire de ligne au niveau de l'objet (de la lame ou de l'échantillon)

Dans le cas du téléphone S6, on a le cercle qui tangente

    Image Resolution:     5312 x 2988 (15.9 MP, 16:9)

Clipboard10.jpg

Clipboard12.jpg


On va mesurer (en pixels) le diamettre du cercle.
                 ici  3263 px

Avec une lame de référence on va mesurer le diamètre en mm

[au pif, sachant que le champ oculaire est de 26.5 mm, et que le grandissement de l'objectif est 10x.
Le champ au niveau de l'objet/lame sera de 26.5/10 =2.65 mm]

On pourra dire que le capteur fait 2.65mm pour  3263 px. Valeurs que l'on reportera dans le logiciel.

En réalité on reportera 26.5mm  et 3263 px sachant qu'il faudra multiplier par 10x la lecture de l'abscisse lp/mm  (car sinon les chiffres se superposent)

NB Manips avec PSP

Clipboard13.jpg

et après correction manuelle de l'image (26.5 -> 2.65,    rajoût de 0 aux chiffres 10, 20, ... -> 100, 200, ...)

Clipboard14.jpg

(Les chiffres verts ne sont pas corrigés)

..


On notera


L'importance des mesures et évaluations.

Une erreur de 10 % sur la mesure du diamètre introduit une errer de 10 % dans la fréquence de coupure de la MTF!

Exemple, j'ai pris ci-dessus l'hypothèse d'avoir un champ de 2.65mm. En réalité je n'ai que 2.0 mm.

Clipboard15.jpg

Objectif MSplan 10x Olympus, lumière LED blanche, Champ 2 mm et 3263 px (montage BHS avec équipement EPI)
(Les chiffres verts ne sont pas corrigés. LP corrigés.   20200303_185047.jpg)


Attention: Sur le S6, si on utilise la loupe pour afiner la mise au point, il faut penser à revenir à la fonction x1 pour voir le cercle entier. sinon cela ne fonctionne pas.

.


Critiques sur la méthode (ici)


Ces tests sont faits sur un BHS equippé epi/fluo en DIC... pas l'idéal pour débuter des manips!

Ce n'est pas un système simple. D'autres parts on utilise un téléphone pour la capture d'image (donc oculaire +zoom du téléphone. Il y a probablement de l'over sampling (mieux que 2 px/dot) ce qui est une bonne chose.

Manips à refaire: Capteur directe (au foyer) Monter un reflex au foyer, sur le BHS diascopie (Splan) sans DIC...

Avec Splan 10x 0.30

MTF_Splan_10x_0.30_1.jpg

fig. Essai 1  (Les chiffres verts ne sont pas corrigés. LP corrigés)    Max théorique 1090 lp/mm

MTF_Splan_10x_0.30_2b.jpg

fig.  Rien n'est corrigé: Multiplier par 10 les lp/mm; Sensor=2.0mm (verts non corrigés).

MTF_Splan_10x_0.30_3.jpg

fig.  Rien n'est corrigé: Multiplier par 10 les lp/mm; Sensor=2.0mm (verts non corrigés)..

Conclusion sur Splan


Cela reste similaire aux tests avec MSplan. Une déformation apparait dans les basses fréquences .  Il faudrait déduire les MTFs des oculaires, du telephone, du capteur, ...  Voir mes autres recherches sur la MTF, et simulation sous Matlab. 

Impact de l'éclairage? Type de condensateur...

Splan 20x 0.45

MTF_Splan_20x_045_1.jpg

Penser à x10 les lp/mm, et sensor=1 mm   Théorique 1636 lp/mm

Il faut utiliser le zoom de SlantEdge pour bien détecter la zone la plus nette de l'image.

Attention au codage jpg. Attention à la taille des pixels. Y-a-t-il anti-flou, pré-accentuation dans le capteur téléphone?


..


Et si on modifiait la taille de l'image?

L'idée est de voir si en modifiant la taille de l'image, on peut améliorer les mesures (et aussi apporter un zoom sur la courbe) On essayera de diviser par 2 et par 3 la taille de l'im0ge initiale. D'où les suffixes utilisés 3264=org   1632=1/2  et 1088=1/3

Les cellules du capteurs introduisent une modulation FTM en sin x /x  (en absolu)

Il faut retrancher cette mesure pour obtenir la qualité de l'objectif microscope.

Nous allons devoir récuperer les valeurs de la courbe pour effectuer des calculs



Engauge digitizer



Ce logiciel libre va nous permettre de reconstituer les données correspondantes à la courbe offerte par SlantEdge

Voir https://github.com/markummitchell/engauge-digitizer/releases/tag/v12.1

digit-exe-windows10-64-bit-installer-12.1.msi

Engauge_01_t.jpg


Ce logiciel vous demandera de pointer 3 points caractéristiques de la courbe:

Points x y
Origine 0 0
axe x 50 0
axe y 0 1

Mais il va être perturbé par la présence des inscriptions vertes, qu'on va pouvoir éliminer avec Irfanview


Irfanview: effacer le vert


Il semble qu'on puisse se passer de cette phase!

On utilise Irfanview pour éliminer les inscriptions vertes

Mais pour que cela soit efficace il ne faut pas que l'original soit en jpg, il faudra penser à enregistrer les courbes en png ou bmp

Essai_01.gif

Essai_01.gif

IrfanView > zoom 500%     puis   

IrfanView > Menu image > Replace color > (éliminer tous les points indésirables) > save > *.gif

Essai_01b.gif

Image nettoyée des inscriptions vertes

Numérisation de la courbe: Passage par Engauge


But: Le but est d'obtenir la liste de toutes les coordonnées définissant cette courbe rouge

1- Définir les 3 points

Engauge 12.1 > Fichier Importer > Essai_01b.gif  > Placer l'origine > placer extrémité axe x > axe y


Clipboard101.gif

pour l'origine: x=0  et   y=0
puis  x=0   y=1     et     x=60    y=0


2- Définir la couleur de la courbe:  engauge:  Menu Configuration >  Filtrage couleur > Teinte: sélectionné, régler le filtre: rouge

3- Sélectionner l'icône tracé vert [outil de remplissage par segment] et cliquer sur la courbe.  -> passage en vert

On obtient:

Clipboard102.gif


4- Exporter les données:      Engauge > Fichier > Exporter > Essai_01b.csv      qui sera utilisable par Excel

x,Essai_01b
"0,0905","1,0026"
"0,724","0,94007"
"1,267","0,87755"
"1,991","0,81502"
"2,8054","0,75509"
"3,7104","0,69515"
"4,6154","0,63522"
"5,3394","0,57268"
"6,0633","0,51276"
"6,6968","0,45023"
"7,2398","0,3851"
"7,8733","0,32257"
"8,5068","0,26005"
"9,0498","0,19752"
"9,8643","0,13759"
"10,7692","0,07766"
"11,8552","0,02032"
"13,7557","0,03065"
"15,9276","0,04098"
"18,0995","0,03046"
"20,181","0,01475"
"22,4434","0,01986"
"24,6154","0,02758"
"26,7873","0,02488"
"28,9593","0,01958"
"31,1312","0,01427"
"33,3032","0,01939"
"35,4751","0,01148"
"37,6471","0,00618"
"39,819","0,00088"
"41,991","0,00859"
"44,1629","0,00329"
"46,3348","0,0032"
"48,5068","0,0031"
"50,7692","0,0004"
"52,9412","0,00551"
"55,1131","0,00021"
"57,2851","0,00272"
"59,3665","0,01305"
"61,5385","0,00514"
"63,7104","0,00765"



..


Caméra 1/2.5"



Caractéristiques de la Caméra Yi 4K 12MPx



Cela ne fonctionne pas!
avec la caméra YI

CMOS image sensor
Image sizeDiagonal 7.81 mm (Type 1/2.3)
Total number of pixels    4152 (H) × 3062 (V) approx. 12.71 M pixels
Number of effective pixels
   - Type 1/2.3 approx. 12.35 M pixels use    4056 (H) × 3046 (V) approx. 12.35 M pixels
   - Type 1/2.5 approx. 9.03 M pixels use        4152 (H) × 2174 (V) approx. 9.03 M pixels
Number of active pixels
   - Type 1/2.3 approx. 12.35 M pixels use    4024 (H) × 3036 (V) approx. 12.22 M pixels diagonal 7.81 mm
   - Type 1/2.5 approx. 9.03 M pixels use      4120 (H) × 2168 (V) approx. 8.93 M pixels diagonal 7.22 mm
Number of recommended recording pixels
   - Type 1/2.3 approx. 12.35 M pixels use    4000 (H) × 3000 (V) 12.00 M pixels aspect ratio 4:3    jmp -> 6.2 x 4.65 mm   diag 7.67
   - Type 1/2.5 approx. 9.03 M pixels use      4096 (H) × 2160 (V) approx. 8.85 M pixels aspect ratio approx. 17:9
Chip size10.200 mm (H) × 8.000 mm (V) (include scribe area)
Unit cell size1.55 μm (H) × 1.55 μm (V)
Optical black    Horizontal (H) direction : Front 0 pixel, rear 0 pixel    Vertical (V) direction : Front 16 pixels, rear 0 pixel
Package    98 pin LGA

Démontage de la caméra

- Retirer la face avant, (ongle, couteau) puis
- faire sauter la bague autour de l'optique  (élastiques et casse-noix)
- retirer l'optique avec le casse-noix/pince

S'inspirer de la vidéo D:\Dropbox\Doc\Camera\Yi_4k\Yi 4K Action Camera Lens Replacement and Focus Ring_(video-avc1_audio-mp4a)_1280x720_1682kbps.mp4



Choisir une caméra




hdmi pour visualiser en 1080*1920 en temps réel 30im/s
1/2.5"
Sensibilté > 1.3 V/Lux.s
8 Mpx ( ou plus ? inutile?)
Taille pixel <2µm
Dynamic range >75 dB    tbc
Ne pas traiter le signal (pas de préaccentuation)
USB3 impératif
Capot métallique
OS: win10
Twain
Save: BMP, jpg (très faibles pertes)
Carte micro SD
Pas de pixels morts


Caméra DCM800 8 MPx



Cela fonctionne avec cette caméra

Technical Specifications:

PC Interface  USB 2.0,support
Sensor 1/2.5 inch, Enhanced COLOR
CMOS , 8 M Pixels
Maximum Resolution  3264*2448 (Hardware)
Frame Rate : 1fps at 3264*2448,  30fps at 640*480
Capture Fram : Support high speed preview and static capture
Video Mode : 3264*2448,   1600*1200,   1280*768,   640*480
Dynamic Range : 75dB
Sensitivity : 1.3V/lux-sec  550nm

Infos: http://pichotjm.free.fr/Doc/Microscopie/Camera_ScopeTek/ScopeTek.php     Voir stuser_guide.pdf



Installer la caméra




- Démonter la partie supérieure du tube trino (3 vis Hexa)
- Mettre un adaptateur M42 à vis
- fixer la caméra (pistolet à colle)



Régler pour la mesure


- Remettre la tête bino

- Régler à l'oculaire pour voir la transition parfaitement nette (et ne plus jamais toucher!  Penser à ne pas déplacer la platine x, y)

- Retirer la tête bino, et placer la caméra.

- Régler uniquement au niveau de la caméra (grace à une/la bague M42 variable) L'image doit apparaitre nette sur le petit écran: dur !



Premières mesures

DCM_01-bmp_3264.png

fig. DCM_01-bmp_3264.png  DCM800-8MPx   Splan 10x  0.30 160mm

DCM_01-bmp_resampled_1632.png

fig.   Idem ci-dessus mais avec down resampling 1632 (par IrfanView). donc nouveaux réglages 58  1632

On peut remarquer que c'est la seule méthode (?) pour élargir la courbe. On arrive ) 1350 lp/mm   La courbe semble plus régulière.

DCM_01-bmp_resampled_1088.png

fig.   Idem ci-dessus mais avec down resampling 1632 (par IrfanView). donc nouveaux réglages 58  1088

(ne pas oublier que l'échelle Spatial Freq doit être x100, et que sensor size /100 =0.58 mm



NB Faire un Gif animé




https://pdf-convertisseur.fr/download/?token=0fa896455a1387b7fa8d93a18a4cff5b&delay=30&loop=5

https://pdf-convertisseur.fr/

Qqs résultas obtenus

fig.  Séquence montrant différents résultats en fonction de la zone analysée



Obtention du cumul des courbes:




Avec PSP x6, faire:

Menu PSP> image > traitement arithmétique > .

PSP_cumul.png

Et cumuler successivement les images du lot (long à faire!).

Fig.  Cumuls de 7 mesures: dépend des zones sélectionnées

Seule la meilleure courbe représente une mise au point (focus) parfaite.



Méthode à suivre




Il faudra choisir la meilleure zone de l'image. Et cela ne sera pas facile.On pourra, par exemple rechercher la meilleure valeur pour 0.20 cycles/pixel (échelle verte)

Exemple

Avec un zoom de 200%, je vais faire des essais

le haut jusqu'au bas  (cas re-sampled)

position @0.20 delta
Haut 0.22 0.608
  0.21 0.572
  0.18 0.591
  0.15 0.660
  0.15 0.578
bas 0.10 0.561
position @0.10 @0.20 @0.30
Haut 0.40 0.23 0.10-
  0.41 0.22 0.09
  0.39 0.17 0.07
  0.42 0.16 0.05
  0.39 0.12 0.03
  0.38 0.08 0.02
 
Image resampled Resampled, 58, 1632, 
avec feuille pour avoir une meilleure précision
 

Tout cela indique que ma mire n'est pas plane et qu'il faut la refaire. Mais une mire tsès finement penchée peut aussi, par cette méthode, permettre de trouver une zone nette...

En reprenant l'image originale   (non resampled)


position @0.10
Haut 0.22
  0.22
  0.17
  0.16
  0.14
bas 0.10

tab.  Zoom 100%, image org, estimation visuelle!

position @0.10
Haut 0.23
  0.25
  0.25
  0.24
  0.20
  0.17
  0.16
  0.16
  0.15
  0.13
bas 0.10

tab.  Zoom 200%, image org, estimation visuelle améliorée (feuille)!
 


.

Comparaison des méthodes de mesures: Org ou Resampling

Comparaison_Méthode.png

 Fichier  C:\Users\jmp76\Dropbox\Etude_sampling_SlantEdge.xlsx

La méthode re-sampling facilite la mesure, mais comme il y aura moins de phases de zooms, il y aura moins de points. Rien ne prouve que le re-sampling ne modifie pas les valeurs  ???.

Les valeurs de la colonne @0.10 org sont obtenus en faisant la moyenne entre 2 valeurs consécutives

La méthode avec image originale, permet plus de zoom, donc plus d'écrans zoom, et donc plus de points. Mais la courbe est resserrée et nuit à la lecture des coordonnées.

Les valeurs des 3 colonnes @0.10  @0.20  @0.30  sont obtenues en interpolant 2 mesures consécutives.



Nouvelles mesures avec org




Splan 10x 0.3 160   SaltEdge: 58   3264  128Sa   zoom 200% -> 5.5 écrans  -> 11 1/2 écrans

DCM_01-bmp_3264_haut.png

Position @0.0 @0.05 @0.10 @0.15 @0.20 @0.25
haut écran1 100 45 25 12.5 7.5 2
bas écran1 100 43 25 11 3 2.5
haut écran2 100 44 25.5 11.5 4.5 1
bas écran2 100 43 24 10 4.5 1
haut écran3 100 41 20 10 3 2
bas écran3 100 41 18 8 5 2.5
haut écran4 100 40 16.5 6.5 2.5 2
bas écran4 100 43 17 6 2.5 4
haut écran5 100 40 16 5 1.7 3
bas écran5 100 39 13.5 3 2 3.5
haut écran6 100 36 10 2.5 0 3

@0.xx correspond aux abscisses vertes cy/pixel

Conclusion: Sans doutes possibles la FTM à choisir est celle du haut. Mais rien ne nous permet d'affirmer qu'il n'y aurait pas une meilleur image à faire. Il faudrait trouver un tableau avec le meilleur au centre

Reconstitution_des_FTM.png

 Fichier  C:\Users\jmp76\Dropbox\Etude_sampling_SlantEdge.xlsx   [FTM x100]

Ces courbes démontrent que la mire n'est pas exactement plane, et que seule celle du haut de l'image correspond au meilleur focus de l'image. (serie1 en bleu)

Tout cela mérite d'être automatisé.  



Comparaison avec le re-sampling




voir répertoire: Preuve Re-sampling

C'est idiot d'avoir pris l'échelle verte Cy/Px, il faut prendre les lp/mm  et tout refaire. 

Les conclusions restent bonnes mais il faut revoir l'histoire du re-sampling et contrôler que cela n'introduit pas d'anomalies.

Maximum Resolution  3264*2448 (Hardware)

1 Copie de l'originale

Irfan_preuve.jpgIrfan_preuve.jpg

2- Re-sampling 1632 et 1088  (pas de sharpen after resample)

Preuve_resampling/ess_01_1632.bmp   ess_01_1088.bmp

                  /2   Preuve_resampling/ess_01_1632.bmp                                       /3    Preuve_resampling/ess_01_1088.bmp

3- SlantEdge avec        58 3264  50%                    58 et 1632 50%             58 et 1088   60%  (partie haute de l'image)

Preuve_resampling/FTM_1088_hautZoom50.png    Preuve_resampling/FTM_1632_hautZoom50.png   Preuve_resampling/FTM_1088_hautZoom50.png

4- Eliminer les indications vertes   IrfanView > Image > Replace Color > pointer les points verts...

Preuve_resampling/FTM_3264_hautZoom20-net.png   Preuve_resampling/FTM_1632_hautZoom50-net.png   Preuve_resampling/FTM_1088_hautZoom50-net.png


5- Utilisation de Engauge Digitizer       Régler la couleur de la détection de la courbe: rouge    menu config > Filtrage Cr

Clipboard01.pngPreuve_resampling/Clipboard01.png   Preuve_resampling/Clipboard02.png

Notez le carré rouge (en haut-milieu)

3264 1632 1088
x Curve3264
0,0781 1,0026
0,3906 0,9375
0,625 0,875
0,8594 0,8099
1,0938 0,74479
1,25 0,67969
1,5625 0,61458
1,9531 0,55208
2,4219 0,48958
3,2031 0,42969
4,0625 0,36979
4,9219 0,3125
5,625 0,2526
6,4844 0,19271
7,5781 0,13802
9,1406 0,10156
10,7031 0,0625
12,1094 0,02083
14,0625 0,01563
16,0156 0,01823
17,8906 0,02344
19,7656 0,02865
21,7188 0,02083
23,5156 0,02083
25,3906 0,01563
27,2656 0,02083
29,2188 0,01563
31,1719 0,01823
33,0469 0,01563
34,9219 0,01823
36,875 0,01563
38,75 0,01302
40,625 0,01563
42,5 0,0026
44,375 0,01042
46,25 0,01042
48,0469 0,01302
49,8438 0,00521
51,7969 0,00781
53,5156 0,01042
55,3125 0,02604
x Curve1632
0,0388 0,99999
0,3125 0,93778
0,47 0,873
0,6275 0,8108
0,785 0,74601
0,9813 0,68122
1,2163 0,61901
1,5288 0,5568
1,9187 0,49716
2,4246 0,44528
3,0467 0,39598
3,8235 0,35443
4,4455 0,30512
5,0676 0,25582
5,7284 0,20651
6,3891 0,16238
7,2043 0,1286
8,0197 0,09223
8,9504 0,07915
9,8428 0,05572
10,6963 0,03488
11,5884 0,01922
12,5577 0,01133
13,4878 0,0138
14,4185 0,00331
15,3486 0,00578
16,2789 0,00566
17,2087 0,01591
18,1388 0,01838
19,0695 0,00789
19,9609 0,00778
20,8909 0,01543
21,8214 0,00754
22,7519 0,00223
23,6431 0,0073
24,5733 0,00977
25,5037 0,00447
26,4726 0,00693
27,4029 0,00422
x Curve1088
0,026 1,0026
0,2338 0,9401
0,3636 0,8776
0,5195 0,8151
0,6753 0,75
0,8571 0,6875
1,0649 0,6276
1,3247 0,56771
1,6364 0,51042
2,0519 0,45833
2,5195 0,41667
2,987 0,3724
3,5844 0,34635
4,0779 0,30469
4,1818 0,29427
4,7013 0,25521
5,1688 0,21354
5,6883 0,17448
6,2338 0,14063
6,8312 0,11719
7,4286 0,09115
8 0,0651
8,6234 0,0599
9,2468 0,04948
9,8442 0,02604
10,4416 0,02604
11,0649 0,00781
11,6883 0,00781
12,3117 0,0026
12,9351 0,01563
13,5584 0,01563
14,1558 0,01042
14,8052 0,0026
15,4286 0,00781
16,0519 0,0026
16,6494 0,01042
17,2727 0,00781
17,9221 0,00521
18,5455 0,00521
Stereo.png
Preuve_resampling/Stereo.png

Stereo.png

6- Que conclure: Courbes très semblables mais comme on n'a pas utiliser la même zône, rien ne permet d'affirmer qu'il y a dégradation ou pas!.









En reconstituant les courbes FTM avec précision (pour avoir plus de finesse dans l'analyse)



[méthode interpolative complexe cf Preuve-resamplingl.xlsx]
Preuve_resampling/Clipboard03.png
        [Axe y à diviser /1000]        [ Axe x à multiplier x100 lp/mm]

Cela prouve qu'il ne faut pas faire du resize. Cela modifie les FTMs. On devra se satisfaire de courbes assez étroites. (pas de Zoom sur x possible)

Dans le cas présent Olympu Splan 10x 0.30 160mm la Fc semble être vers 1300 lp/mm (l'objectif est meilleur que 0.30)


Correction de l'impact du sampling capteur    [ sin x/x ]

Impact de l'échantillonnage



L'info ci-dessous suppose un pixel sensible sur toute sa surface. Cela est assez proche des capteurs back-lighted.

HTB1_CvVJFXXXXcyXXXXq6xXFXXX6.jpg  HTB1JqLKJFXXXXXoXFXXq6xXFXXXt.jpg

MTF_pixel_01.jpg

Delta est le pas/taille du pixel. La courbe passe à 0 à la fréquence spatiale de 1/delta

Si le capteur ne fait que 1.55 µm de dimension pixel, la fréquence de coupure dûe seulement à l'échantillonnage sera de 1000/1.55= 645 lp/mm       [1,55 µm au capteur 1/2.3"IMX377CQT ]

Mais il faut penser à ramener cela au niveau de l'objet (ou de la lamelle), il faudra donc multiplier par le grandissement de l'objectif.  Pour un Splan 10x 0.30 on aura 6452 lp/mm  ce qui est excellent!

Une autre manière de voir cet objectif: limite 1.1 µm  et dimension des pixels 'ramenés à l'objet =0.155µm, soit 7 pixels par tache.

La formule à utiliser sera            G/delta   ou    Fc= [Grandissement objectif] / [Taille du pixel]

sin x/ x = 0   pour x=pi

ou sin (pi x)/(pi x)  avec  0  pour x=Fc

Cas de la mesure Olympus Splan 10x 0.30




On obtient la  courbe



En orange: FTM pure

En bleu FTM brute (avec influence du capteur)

On remarque très peu de différences: Cela est dû au capteur utilisé sans adaptation optique (pas de relais)

L'objectif a une résolution de 0.9 µm et on l'échantillonne avec un pas de 0.175 µm. Soit plus de 5 pixels par dot.

Nyquist n'en demande que 2 (3 est mieux)

Il reste à étudier l'influence du filtre AA Anti-Aliasing. Mais rien ne dit qu'il y en a un! (Pas de specs du capteur).
FTM_corrige.pngFTM_corrige.png

.

Passage de ESF à MTF

Knife edge



ref p44  A Guide to the Use and Calibration of Detector Array Equipment

D:\Dropbox\Docu\Optique\SlantEdge\KnifeEdge.jpg

puis autre livre:

KnifeEdge_02.jpg

La méthode du slanted-edge
Je ne veux pas décrire tous les aspects de la méthode de l'angle oblique de manière très détaillée dans ce post, mais très brièvement, les principales étapes sont :

1- Identifier et modéliser le bord de l'escalier dans la région d'intérêt (ROI) ;

2- Construire la fonction d'étalement des bords (ESF) sur-échantillonnés à espacement irrégulier à l'aide du modèle de bord ;

3- Construire un ESF à espacement régulier à partir du ESF à espacement irrégulier ;

4- Prendre la dérivée du ESF pour obtenir la fonction d'étalement de la ligne (LSF) ;

5- Calculer la FFT de la LSF pour obtenir la fonction de transfert de modulation (MTF) ;

6- Appliquer les corrections éventuelles à la MTF (correction de la dérivée, correction du noyau si nécessaire).     ref http://mtfmapper.blogspot.com/
The slanted-edge method
I do not want to describe all aspects of the slanted-edge method in great detail in this post, but very briefly, the major steps are:

1    Identify and model the step edge in the Region Of Interest (ROI);

2    Construct the irregularly-spaced oversampled Edge Spread Function (ESF) with the help of the edge model;

3    Construct a regularly-spaced ESF from the irregularly-spaced ESF;

4    Take the derivative of the ESF to obtain the Line Spread Function (LSF);

5    Compute the FFT of the LSF to obtain the Modulation Transfer Function (MTF);

6    Apply any corrections to the MTF (derivative correction, kernel correction if necessary).

In other words, MTF is the Fourier transform of the impulse response (i.e., response to a narrow line) that is the derivative (d/dx or d/dy) of the edge response (i.e., response to a narrow line) that is the derivative (d/dx or d/dy) of the edge response.  ref à H70%

SFR  Spatial Frequency Response

Algorithme à bord incliné  par ImaTest   ref

Le calcul de la MTF est dérivé de la norme ISO 12233. Certains détails sont contenus dans Le calcul d'Imatest contient un certain nombre d'améliorations, énumérées ci-dessous. Le calcul selon la méthode ISO originale est effectué lorsque la case à cocher SFR de la norme ISO dans la boîte de dialogue de saisie SFR est cochée. Voir ci-dessous pour plus d'informations :

  •     L'image re-cadrée est linéarisée, c'est-à-dire que les niveaux de pixels sont ajustés pour supprimer le codage gamma appliqué par la caméra. (Le gamma est réglable avec une valeur par défaut de 0,5).
  •     Les emplacements des bords pour les canaux rouge, vert, bleu et de luminance :    Y=0,3R+0,59G+0,11B ou 0,2125R+0,7154G+0,0721B    sont déterminées pour chaque ligne de balayage (lignes horizontales dans l'image ci-dessus).
  •     Un second ordre d'ajustement au bord est calculé pour chaque canal par régression polynomiale. L'ajustement du second ordre supprime les effets de la distorsion de la lentille. Dans l'image ci-dessus, l'équation aurait la forme suivante :
                         x=a0 +a1y +a2
  •     En fonction de la valeur de la partie fractionnaire
                  fp = xi - int(xi )
    de second ordre à chaque ligne de balayage, le bord décalé est ajouté à l'un des quatre bacs :
    bac 1 si 0 ≤ fp < 0,25
    bac 2 si 0,25 ≤ fp < 0,5
    bac 3 si 0,5 ≤ fp < 0,75
    bac 4 si 0,75 ≤ fp < 1

Remarque : le bac mentionné dans l'équation précédente ne dépend pas de l'emplacement du bord détecté.

    Les quatre bacs sont combinés pour calculer une moyenne de 4x de bord suréchantillonné. Cela permet d'analyser les fréquences spatiales au-delà de la fréquence normale de Nyquist.
    La dérivée (d/dx) de la moyenne de 4x de suréchantillonnage est calculée.          Une fonction de fenêtrage est appliquée pour forcer la dérivée à zéro à ses limites.
    La MTF est la valeur absolue de la transformée de Fourier (FFT) de la dérivée fenêtrée.

Note : Les origines des calculs de SFR à bord oblique d'Imatest ont été adaptées d'un programme Matlab, sfrmat, qui a été écrit par Peter Burns pour mettre en œuvre la norme ISO 12233:2000. Le calcul de SFR d'Imatest intègre de nombreuses améliorations, notamment une meilleure détection des bords, une meilleure gestion de la distorsion des lentilles et une meilleure immunité au bruit. Le code original de Matlab est disponible ici. En comparant les résultats de sfrmat avec ceux d'Imatest, la réponse tonale est supposée être linéaire, c'est-à-dire gamma = 1 si aucun fichier OECF (courbe de réponse tonale) n'est entré dans sfrmat. Comme la valeur par défaut du gamma dans Imatest est de 0,5, ce qui est typique des appareils photo numériques, vous devez régler le gamma sur 1 pour obtenir un bon accord avec sfrmat

Slanted-Edge Algorithm

The MTF calculation is derived from ISO standard 12233. Some details are contained in The Imatest calculation contains a number of enhancements, listed below. The original ISO calculation is performed when the ISO standard SFR checkbox in the SFR input dialog box is checked. See below for additional information:

  • The cropped image is linearized; i.e., the pixel levels are adjusted to remove the gamma encoding applied by the camera. (Gamma is adjustable with a default of 0.5).
  • The edge locations for the red, green, blue, and luminance channels: Y=0.3R+0.59G+0.11B or 0.2125R+0.7154G+0.0721B are determined for each scan line (horizontal lines in the above image).
  • A second order fit to the edge is calculated for each channel using polynomial regression. The second order fit removes the effects of lens distortion. In the above image, the equation would have the form:
                   x=a0+a1y+a2y2
  • Depending on the value of the fractional part
              fp = xi – int(xi )  of the second order fit at each scan line, the shifted edge is added to one of four bins: 
    bin 1 if 0 ≤ fp < 0.25 bin 2 if 0.25 ≤ fp < 0.5 bin 3 if 0.5 ≤ fp < 0.75 bin 4 if 0.75 ≤ fp < 1

Note: The bin mentioned in the previous equation does not depend on the detected edge location.

  • The four bins are combined to calculate an averaged 4x oversampled edge. This allows analysis of spatial frequencies beyond the normal Nyquist frequency.
  • The derivative (d/dx) of the averaged 4x oversampled edge is calculated. A windowing function is applied to force the derivative to zero at its limits.
  • MTF is the absolute value of the Fourier transform (FFT) of the windowed derivative.

Note: Origins of Imatest slanted-edge SFR calculations were adapted from a Matlab program, sfrmat, which was written by Peter Burns to implement the ISO 12233:2000 standard. Imatest’s SFR calculation incorporates numerous improvements, including improved edge detection, better handling of lens distortion, and better noise immunity. The original Matlab code is available here. In comparing sfrmat results with Imatest, tonal response is assumed to be linear; i.e., gamma = 1 if no OECF (tonal response curve) file is entered into sfrmat. Since the default value of gamma in Imatest is 0.5, which is typical of digital cameras, you must set gamma to 1 to obtain good agreement with sfrmat



Essais de passage de à MTF



initialisation:

Aller sous prompt Anaconda:

Python

import numpy as np
from scipy.fft import rfft, irfft

Chargement de données depuis *.txt:

with open('D:\CloudStation\FTM_SlantEdge\Python\data.txt', 'r') as data:
    string_data = data.read()
    list_data = string_data.split(',')
    list_data.pop()

Sauvegarde npy

np.save('D:\CloudStation\FTM_SlantEdge\Python\data.npy', data)

Chargement de données depuis *.npy:

data = np.load('D:\CloudStation\FTM_SlantEdge\Python\data.npy')
len(data)
data=data[0:128]     #pour ajuster à 128 données
len(data)

Vérif des données

len(data)          #Nb données=longueur matrice.  On doit en avoir 128
data                #On doit en avoir 128     -> 129 serait idéal

data=data[0:127]      #on ajuste à 128 données     ->  à 129

data.max()        #donne la valeur max
data.min()        #donne la valeur min

pop(data)

Calcul de la dérivée

.

for i in range(128):              #127 et pas 128!   pcq len(data)=127
    a=data[i+1]-data[i]
    dif[i]=a
dif[128]=0    #pb

dif               #pour vérif
len(dif)        #pour vérifier/connaitre la longueur. Il faut avoir 128 pour la suite rfft

e[1:]=dif     #pour ajuster à 128 données (la 1ère valeur sera nulle
len(e)
e

.

.

>>> x = np.linspace(0, 10, 128)        #définir l'axe des x. de 0 à 10 en 128 steps
.

.

>>> import matplotlib.pyplot as plt
>>> f=rfft(z)
>>> plt.plot(f)
>>> plt.grid()
>>> plt.legend(['FFT'])
>>> plt.show()   #comment

Essai_MTF_04.png

.

 plt.plot(x, data)

.

.

from scipy.fft import fft, ifft

z=dct(data, norm='ortho')

y = fft(data)

.

Essai_MTF_03.png


Lancer Cahier jupyter



***

Lancer Jupyter:  MenuWin10 > Programmes > Anaconda3 > Anaconda prompt

d:
cd D:\CloudStation\FTM_SlantEdge\Python\Jupyter
jupyter notebook  

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.











.

.