1) Notions de cadrage et de positions de lignes :
Regardez bien ces 2 images A et B, et leurs lignes caractéristiques horizontales :
Pour notre cerveau, il est évident que la photo B est la partie basse de la photo A ;
Donc, ce qui importe n’est pas la position x des lignes horizontales mais plutôt … :
2) Notions de distances entres lignes et de Zoom :
Observez bien ces deux photos A et B, zoomées différement, ainsi que les distances d1, d2, d3 et D1, D2 et D3 , respectivement égales à 3, 2, 1 et 12, 8, 4.
Nous avons dit précédemment que si les distances entres les lignes sont égales alors les photos sont identiques ; or, ici, il s’agit bien de la même photo, pourtant on a d1différent de D1, de même pour d2 et D2, et d3 et D3.
Problème…
Proposez une solution mathématique (simple) qui permette à l’algorithme de dire que A = B :
• Observons tous ces notions dans le code :
Des lignes 18 à 47 : La fonction ‘Position_lign()’ cherche la position x des lignes horizontales et verticales du visage ;
Quelle est la valeur seuil utilisée par cette fonction pour déterminer si oui ou non il y a une ligne noire le long de l’axe qu’elle scanne ? :
Ensuite, cette fonction enregistre (commande append = apply at the end = rajouter à la fin d’une liste) toutes ces positions de lignes dans une liste nommée list1.
Des lignes 49 à 60 : La fonction ‘lissage(list1)’ va désépaissir les lignes trop grasses pour constituer une nouvelle liste : la liste …
Des lignes 63 à 81 : La fonction ‘calcul_distance(list4)’ va justement calculer les distances entre chaque position de ligne contenues dans la liste 4.
A quelle ligne se trouve le calcul des distances ? :
Sachant que lorsqu’on écrit : list [ x ], cela appelle l’élément (ici, une position de ligne) qui se trouve à la position x dans la liste, expliquez le calcul qui est fait en boucle :
Chaque distance est alors enregistrée dans une list5, et cette dernière est même classée par ordre croissant ligne 71.
D’après vous, que contient la variable ‘mini’ ligne 75, dont on a parlé précédement en 2) ?
Des lignes 77 à 80, d’après vous, qu’est-ce qui est enregistré dans la list6 ? :
• Relancez Py_Face : et refaîtes une analyse (1) d’une photo : Ex : ER1. Après la présentation des photos travaillées, vous observerez dessous toutes les notions que nous venons de voir à l’instant : positions des lignes, distances raccourcies par mini.
Retrouvez pourquoi, dans ce cas, mini =3 pour l’analyse horizontale et 4 pour la verticale ? :
Ligne 451 : on retrouve la list6 (pour l’analyse horizontale) et la list6_vert (pour l’analyse verticale), de même que ‘mini’ et ‘mini_vert’, on retrouve le nom de l’image (= « photo_initiale »)..
Dans quoi sont envoyées toutes ces informations ? :
Dans les lignes 590, 591, 603 et 679 : l’algorithme récupère, à partir de la base de données, les matricules d’identification de la photo étudiée et celui d’un élément de la base de donnée.
Dans les lignes 628 et 630 : est réalisé la comparaison entre le matricule de la photo étudiée et celui d’un élément de la base de donnée ;
Sur quelle base repose se calcul de comparaison ? : l
Pour finir, les lignes 662 et 663 : contiennent le calcul du % de recouvrement (ressemblance) enre 2 photos.
Sachant que la list7 correspond au croisement des list6 horizontale et verticale ; que la variable ‘Baz_Donnees_Photos_lu[numer-1][3]’ n’est autre que ‘mini’, et que la commande sum est une addition : à quoi correspond ‘somme’ ? :
sachant que ‘Baz_Donnees_Photos_lu[numer-1][4]’ est la hauteur totale de l’image, que représente alors le calcul de ‘recouvr’ ? :