Projet de Spécialité : Détection de flou de bougé sur des
Transcription
Projet de Spécialité : Détection de flou de bougé sur des
Projet de Spécialité : Détection de flou de bougé sur des photographies CLERGET Alexandre, FILIPPI Marc et RABENARIVO Hobitiana Mai-Juin 2013 Les travaux présentés dans ce document s’inscrivent dans le cadre du projet de spécialité de 2nd année à l’ENSIMAG. Le sujet abordé fait suite à un travail de thèse qui présente des nouvelles méthodes de travail, mais qui par manque de temps n’avaient pas pu être testées. En préambule de cette synthèse de projet, nous tenons à remercier notre encadrant Michel DESVIGNES, enseignant-chercheur au GIPSA-LAB, pour son aide tout au long du projet et sans qui ce projet n’aurait pas pu voir le jour. Nous tenons de plus à remercier l’ENSIMAG qui nous a fourni le matériel nécessaire à la réalisation de ce projet, notamment grâce à la mise à disposition du logiciel Matlab. Table des matières 1 Introduction 3 2 Présentation des opérateurs utilisés 4 2.1 La puissance spectrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 La Transformée de Radon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.3 Le Cepstrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3 Méthode de référence 6 3.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Calcul de la direction du flou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.3 Calcul de la longueur du flou . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.4 Propositions d’améliorations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4.1 10 Amélioration du calcul de l’angle . . . . . . . . . . . . . . . . . . . . . . . . . . page 1/26 3.4.2 3.5 Amélioration du calcul de la longueur (et correction de la direction) . . . . . . 11 Conclusions de la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4 Méthode du gradient 12 4.1 Intérêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4.2 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3 Difficultés rencontrées et remarques de la méthode . . . . . . . . . . . . . . . . . . . . 15 4.4 Propositions faites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.4.1 Angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 4.4.2 Longueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Conclusions de la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.5 5 Méthode d’intensité 19 5.1 Intérêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.2 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.2.1 Algorithme de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 5.2.2 Algorithme corrigé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 5.3.1 Résultat de la suppression de la contribution de l’image . . . . . . . . . . . . . 21 5.3.2 Estimation des paramètres du flou . . . . . . . . . . . . . . . . . . . . . . . . . 22 Propositions d’améliorations et tests proposés . . . . . . . . . . . . . . . . . . . . . . . 23 5.4.1 Modèle de la contribution de l’image . . . . . . . . . . . . . . . . . . . . . . . . 23 5.4.2 Fonction de corrélation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Conclusions de la méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.3 5.4 5.5 6 Conclusions du projet 25 page 2/26 1 Introduction Le flou de bougé est un des obstacles à la qualité des photographies, lorsqu’il n’est pas recherché de façon artistique. Ce flou est présent contre le gré du photographe. Il est difficilement évitable et est dû au mouvement de l’appareil photo lors de la prise de vue. Le flou affecte donc l’image dans sa globalité et pas seulement un objet de la scène. Des méthodes ont été développé pour traiter l’image afin de retrouver une meilleure qualité. Ces méthodes sont en constante évolution, et le problème reste ouvert. Ces techniques de correction de flou trouvent leur utilité notamment pour la photographie aérienne et satellite ou simplement la photo loisir. La démarche consiste en général à détecter la nature du flou, ses paramètres et enfin le corriger. Nous nous restreignons ici à un type de flou particulier, celui où la direction du bougé ainsi que sa vitesse sont constantes. Dans ce cas-ci on peut modéliser le flou simplement par une convolution avec une porte. En appelant θ la direction du flou et L sa longueur, cette porte s’écrit de la façon suivante : h(x, y) = 1Y (xcosθ + ysinθ) L L avec Q L (u) = 1 si |u| ≤ 0 si |u| > L 2 L 2 Les techniques de correction de flou auxquelles nous nous intéressons ici, sont celles qui tentent d’estimer les paramètres θ et L du flou. Une fois ces paramètres trouvés, il est possible d’utiliser un algorithme de déconvolution (avec les filtres de Weiner [1] ou lucy-Richardson [2,3] par exemple) qui permettra de supprimer le flou sur l’image. Il est à noter que ces algorithmes de déconvolution ne sont pas parfaits, et même avec les valeurs exactes des paramètres, on ne pourra pas retrouver une image totalement défloutée et parfaite. Pour retrouver les traces du flou dans l’image, et donc ses paramètres, les techniques de correction utilisent des opérateurs qui transforment l’image (voir section II). Un des problèmes majeurs dans cette approche est l’influence du bruit présent initialement dans l’image. Ce bruit empêche de déterminer précisément les paramètres du flou dans les méthodes déjà existantes. De plus, dans ces méthodes, on évalue un premier paramètre, puis le second à partir du premier. Une légère imprécision sur le premier paramètre peut entraı̂ner une grande imprécision sur le second. Nous nous sommes donc intéressé à deux nouvelles méthodes conçues par un doctorant de notre encadrant. Nous présentons ici les résultats de ces 2 méthodes, et nos idées d’améliorations pour la précision des estimations et la robustesse des algorithmes face au bruit. Afin de détailler nos résultats, nous commencerons par présenter les différents opérateurs que nous avons utilisés, et qui sont à la base des techniques de détection du flou. Nous étudierons ensuite une méthode de référence, qui nous servira d’étalon pour l’évaluation des performances des deux autres page 3/26 méthodes. Puis nous aborderons les nouvelles méthodes en explicitant leur fonctionnement, leur intérêt théorique comparé aux méthodes classiques et enfin les résultats obtenus et les difficultés rencontrées. 2 Présentation des opérateurs utilisés On notera dans cette partie g l’image floue, f l’image originale, h la porte modélisant le flou, et enfin n le bruit qui affecte l’image. On obtient donc g(x, y) = f (x, y) ∗ h(x, y) + n(x, y) (1) Dans le domaine fréquentiel, en notant avec des majuscules les transformées de Fourier des fonctions précédentes, l’équation devient : G(µ, ν) = F (µ, ν) × H(µ, ν) + N (µ, ν) 2.1 (2) La puissance spectrale La puissance spectrale correspond au logarithme de la transformée de Fourier. Pour une fonction g, la puissance spectrale s’écrit ainsi. PS(g(ξ, η)) = log(|F(g(x, y))|) (3) Lorsque l’on calcule la puissance spectrale d’une image floue, on obtient des raies parallèles régulièrement espacées (voir Figure [2] ci-dessous). Ces raies sont orientées orthogonalement au flou, et la distance entre chaque raie dépend de la longueur du flou. 2.2 La Transformée de Radon La transformée de Radon permet d’intégrer une mesure sur une ligne de R2 faisant un angle θ avec l’origine, et étant à une distance x de l’origine. La transformée de Radon suivant la direction θ d’une mesure f est donnée par : Z +∞ f (xcosθ − ysinθ, xsinθ + ycosθ)dy R(f )(x, θ) = (4) −∞ La transformée de Radon appliqué sur la puissance spectrale d’une image bruitée selon l’angle du flou pourra donc permettre de calculer la longueur de ce flou. page 4/26 (a) (b) Figure 1 – Lacornou (a), et Lacornou floutée artificiellement (b) avec un angle de 45 degrées et une longueur de 20 pixels (a) (b) Figure 2 – Puissance spectrale de Lacornou (a) et Lacornou floutée (b) 2.3 Le Cepstrum Le Cepstrum est la transformée de Fourier inverse de la puissance spectrale. Le Cepstrum bi-dimensionnel de g s’écrit de la façon suivante : page 5/26 C(g(x, y)) = F −1 (log |F(g(x, y))|) (5) De plus, si l’on ignore le bruit, on obtient une relation très intéressante : C(g(x, y)) = C(f (x, y)) + C(h(x, y)) (6) Or, il est connu que le cepstrum de la porte liée au flou possède des pics négatifs très important [4], dont la position est en lien avec les paramètres du flou. La contribution de l’image est très faible en dehors des indice centraux. Ainsi, si le bruit n’est pas trop élevé, les pics négatifs du flou sont conservés dans le cepstrum de l’image floue, et leur détection pourra permettre l’estimation des paramètres recherchés. 3 3.1 Méthode de référence Présentation Nous présentons ici la méthode qui nous servira de référence pour des futures comparaisons. Cette méthode s’appuie sur le cepstrum pour le calcul de la direction du flou. Comme nous l’avons vu précédemment, le cepstrum de la porte modélisant le flou est caractérisé par la présence de pics très largement négatifs. La propriété additive du cepstrum vue dans l’équation (6) montre que ces pics seront conservés si l’image floutée n’est pas trop bruitée. La position de ces pics suit la même direction que le flou. Dans cette méthode, nous allons donc dans un premier temps chercher la direction de ces pics puis nous utiliserons ensuite ce résultat pour estimer la longueur du flou grâce à la transformée de Radon et la puissance spectrale. 3.2 Calcul de la direction du flou Pour donner un aperçu des pics négatifs qui permettent le calcul de la direction, nous traçons un zoom du Cepstrum de l’image Lacornou.pgm floutée avec une direction de 45 degrés dans la Figure [3]. Les couleurs froides représentent les pics négatifs. On voit nettement sur ce zoom deux pics négatifs symétriques sur la droite d’angle 45 degrés. Cependant, on constate qu’il existe d’autres pics négatifs sur l’axe horizontal et vertical, ceux si sont dus à la contribution de l’image. C’est la principale difficulté qu’il faut contourner. Nous avons dans un premier temps choisi de sélectionner le minimum du Cepstrum, en excluant les indices centraux ainsi que ceux trop proche de l’axe horizontal ou vertical. On voit nettement sur ce zoom deux pics négatifs symétriques sur la droite d’angle 45 degrés. Cependant, on constate qu’il existe d’autres pics négatifs sur l’axe horizontal et vertical, ceux si sont dus à la contribution de l’image. C’est la principale difficulté qu’il faut contourner. Nous avons dans un premier temps choisi de sélectionner le minimum du Cepstrum, en excluant les indices centraux ainsi que ceux trop proche de l’axe horizontal ou vertical. page 6/26 Figure 3 – Cepstrum de l’image Lacornou floutée avec un angle de 45 degrés Figure 4 – Erreur d’approximation de la direction du flou avec L=20 pour l’image Lacornou.pgm Les erreurs d’approximation de theta que nous obtenons pour une longueur de flou de 20 avec des bruits d’intensités différentes sont reportés dans la Figure [4] (sur l’image Lacornou.pgm). On peut noter dans un premiers temps que lorsque l’on a une direction de flou proche de 0 ou 90 degrés, cette direction est très mal évaluée par la méthode. Ceci est logique, car dans notre raisonnement, nous avons exclu les directions proches de 0 et 90 degrés. Nous avons trouvé une solution à ce problème que nous exposerons dans la suite. On peut remarquer aussi que en général, plus le bruit est élevé, page 7/26 moins l’approximation est bonne. Ceci paraı̂t logique, car le bruit va perturber l’image et donc son cepstrum. 3.3 Calcul de la longueur du flou L’estimation de la longueur s’appuie quant à elle sur la puissance spectrale et la transformée de Radon. Comme évoqué précédemment, la puissance spectrale d’une image floue possède des raies orthogonales espacées proportionnellement à l’inverse de la longueur du flou. Pour estimer cet espacement, on utilise une transformée de Radon dans une direction orthogonale au flou calculé précédemment. Au vu de la présence des raies, notre transformée de Radon nous donne un résultat avec une pseudo-période qui apparaı̂t. C’est cette pseudo période que nous allons chercher à estimer. Pour estimer cette fréquence, nous appliquons la transformée de Fourier inverse au résultat. On obtient du coup un cepstrum 1D, la réduction de dimension ayant eu lieu grâce à la transformée de Radon. Sur ce cepstrum 1D, on s’attend à avoir un pic négatif important qui correspond à la fréquence des raies. Sur la Figure [5], nous avons tracé ce cepstrum 1D, en gardant les plus fortes fréquences, et en assumant un θ parfaitement estimé. Ce résultat est celui de l’image Lacornou.pgm, floutée dans la direction 45 degrés avec une longueur de 20. Figure 5 – Cepstral 1D de l’image Lacornou.pgm avec θ = 45 et L = 20 Ici, le pic qui nous intéresse est celui à l’indice 29. Pour l’estimer, nous avons cherché en fait le page 8/26 pic négatif important de fréquence la plus haute possible. Nous avons dû choisir empiriquement des critères. Tout d’abord, nous supposons que la longueur du flou n’est ni trop petite, ni trop grande, nous pouvons donc exclure les hautes fréquences, ainsi que les basses fréquences. Une fois ces fréquences éliminées, nous cherchons la fréquence avec la contribution minimum, puis la plus grande fréquence dont la contribution est au moins la contribution minimum divisé par 2.4. Ces critères sont purement empiriques et sont ceux que nous avons choisi après plusieurs expérimentations avec des images différentes. Figure 6 – Erreur d’approximation de L avec L = 20 et θ exact sur l’image lacornou.pgm Les résultats obtenus pour l’estimation de la longueur sont visibles dans la Figure [6]. Ces résultats sont ceux obtenus en donnant une valeur de θ exacte en entrée. Les résultats sont assez convaincants lorsqu’il y a peu de bruit. L’erreur sur la longueur estimée est en général inférieure à 2 pixels. En revanche, l’estimation de la longueur est beaucoup moins bonne lorsque l’intensité du bruit est trop importante (régulièrement plus de 5 pixels d’erreur). Ceci peut s’expliquer par le fait que le bruit est constitué de fréquences assez basses qui peuvent parfois être au même niveau que le flou. Nous ne pouvons donc pas supprimer ces fréquences comme elles peuvent potentiellement être celles du flou. Nous présentons maintenant en Figure [7] les résultats obtenus pour l’estimation de la longueur, avec la direction obtenue par la méthode vu précédemment. La direction en entrée de l’algorithme n’est donc pas exacte, et nous voyons bien que les résultats sont du coup bien moins bons que ceux de la Figure [6]. Le calcul de la longueur est donc très sensible au calcul de l’angle. C’est un autre problème de cette méthode. Nous avons aussi essayé de corriger ce problème, notre solution est exposée à la suite. page 9/26 Figure 7 – Erreur d’approximation de L avec L = 20 et le θ approché sur l’image Lacornou.pgm 3.4 Propositions d’améliorations Nous avons donc vu qu’il y avait deux principaux problèmes avec cette méthode du cepstral/cepstral 1D. Le premier est le fait que nous ne pouvons pas trouver de bonnes valeurs de direction de flou lorsque cette direction est proche de 0 ou 90. La seconde est qu’une estimation trop mauvaise de θ implique des mauvais résultats pour le calcul de la longueur. 3.4.1 Amélioration du calcul de l’angle Pour le calcul de l’angle, notre idée a été de déplacer la contribution de l’image trop forte sur d’autres angles que 0 et 90. Ainsi nous avons effectué une rotation de l’image de 45 degrés, puis nous avons rogné l’image obtenue afin d’obtenir la plus grande sous-image possible. Un exemple avec l’image Lacornou est disponible Figure [8]. Ainsi, si la direction du flou était de 0 ou 90 degrés, on trouvera dans le cepstrum de l’image modifié une direction de flou de respectivement 45 ou 135 degrés et qui sera donc détectable par l’algorithme. Nous raffinons donc notre algorithme en calculant un second angle, celui trouvé de la même manière mais après rotation de l’image (que l’on diminue bien entendu de 45 degrés car l’image a subit une rotation). Pour sélectionner le bon angle parmi les deux, nous avons de nouveau choisi un critère empirique. Chaque angle a été sélectionné comme étant la direction où se trouvait le minimum du cepstrum de l’image considérée. Nous avons donc choisi de garder l’angle qui donnait la plus petite page 10/26 (a) (b) Figure 8 – Rotation (a) de l’image ’Lacornou’ de 45 degrés, puis rognage (b) des valeurs minimales. Les résultats obtenus pour l’image Lacornou.pgm et une longueur de 20 sont retranscrits Figure [9]. À part quelques cas problématiques lorsqu’il y a trop de bruit, les résultats sont convaincants, on obtient des bonnes valeurs cette fois ci pour les angles proches de 0 et 90 degrés ce qui était le but de l’amélioration. 3.4.2 Amélioration du calcul de la longueur (et correction de la direction) Le problème du calcul de la longueur était l’imprécision de l’estimation de θ qui se répercutait. Pour contrer ce problème nous avons supposé dans notre algorithme que le vrai θ devait tout de même être proche du θ estimé. Ainsi nous utilisons le même algorithme, mais en faisant une boucle sur les valeurs de θ pouvant être utilisées. Ces valeurs de θ sont celles qui sont éloignées d’au plus 5 degrées du θ estimé. Ceci va permettre de raffiner au mieux le calcul de la longueur, mais en plus d’effectuer un ajustement sur la valeur de θ calculée précédemment. Pour choisir le bon θ, nous prenons comme critère empirique celui pour lequel on obtient dans le cepstrum 1D la valeur négative minimale qui est la plus petite une fois multipliée par son indice. Les résultats pour le calcul du θ corrigé et de la nouvelle longueur sont reportés Figure [10]. On peut remarquer que la correction de l’angle est très profitable à la précision de cette méthode, et permet d’applanir vers 0 les courbes d’erreurs d’approximations de l’angle. Cependant, les résultats pour le calcul de la longueur ne sont pas vraiment meilleur que sans l’amélioration. page 11/26 (a) Figure 9 – Erreur d’approximation de Theta avec L = 20 et la méthode améliorée Lacornou.pgm 3.5 Conclusions de la méthode Avec cette méthode de référence, nous obtenons de très bons résultats pour le calcul de la direction du flou, sauf pour de rares exceptions où la présence de bruit de forte amplitude détériore complétement le résultat. Mais en général, la direction est estimée à 5 degrées près, ce qui est très précis. Les résultats pour le calcul de la longueur sont cependant beaucoup moins bons et beaucoup plus approximatifs. Ceci est dû à la difficulté de la détection du ’dernier pic minimal’ sur le cepstrum 1D. 4 Méthode du gradient Cette méthode s’appuie sur l’utilisation de l’opérateur gradient qu’on applique sur l’image floue. 4.1 Intérêt Dans la méthode de référence, l’angle est évalué grâce à une estimation des pics négatifs dus au cepstrum. Or, cette méthode reste approximative car l’évaluation de l’angle n’est pas robuste au bruit que l’on peut avoir sur l’image. En effet, on peut aisément voir l’impact du bruit (et même de l’image originale) sur le cepstrum de l’image floue et constater alors que l’évaluation des paramètres est difficile. La méthode du gradient a donc été inventée dans le but d’améliorer l’estimation en présence de bruit, et donc de rendre cette évaluation des paramètres plus robuste au bruit que l’on peut avoir. page 12/26 (a) (b) Figure 10 – Erreur d’approximation de θ corrigé (a) et de L (b) avec L = 20 et la méthode améliorée puis correction sur l’image Lacornou.pgm 4.2 Présentation Le principe de cette méthode est d’utiliser le gradient de l’image dans la bonne direction. Comme on peut le voir ci-dessous, la puissance spectrale du gradient de l’image possède également des raies, dues au flou appliqué. On voit de plus, que lorsque le gradient est réalisé dans le même sens que le flou, la raie centrale est dans la même direction que les raies dues au flou (Figure [11]). Nous allons donc utiliser ce résultat pour approximer la direction du flou. En effet, nous allons calculer le gradient de l’image selon toutes les directions possibles, de 0 à 179 degrés, et ensuite appliquer la transformée de Radon dans la même direction. On peut voir que l’angle qui donnera la plus forte valeur au point central est le même que celui qui donne la direction du flou (Figure [12]). page 13/26 (a) (b) (c) (d) Figure 11 – a)-c) Gradient de l’image dans la direction du flou (15 degres) et puissance spectrale associée / b)-d) Gradient de l’image dans une direction différente du flou (120 degres) et puissance spectrale associée Figure 12 – Valeur du point centrale de la transformée de radon en fonction de l’angle page 14/26 Figure 13 – Erreur du thêta trouvé lors de la recherche de l’angle pour l’image muscle.pgm Ainsi la formule donnant l’angle estimée s’écrit : n o ˆ θ̂ = argmax Var Rθ Dg(, η) (7) θ∈[[0,179]] Enfin, ayant obtenu une mesure de l’angle, on s’intéresse à la détection de la longueur du flou. Pour cela, on calcule le Radon du gradient de l’image dans la bonne direction et on remarque la forme particulière du résultat. On réalise donc ensuite la corrélation de la courbe obtenue avec une fonction sin dont on fait varier la fréquence. La meilleure valeur de cette corrélation nous donnant la mesure de la longueur du flou. 4.3 Difficultés rencontrées et remarques de la méthode La première difficulté que nous ayons décelée est l’approximation de l’angle dans le cas où le flou à une direction proche de 0 ou de 90 (Figure [13]). En effet, dans cette situation, nous avons la raie centrale du flou confondue avec la raie créée naturellement par l’image ce qui risque de perturber la recherche de l’angle optimal. Dans un deuxième temps, bien que l’estimation de la longueur semble aisée à réaliser en théorie, la pratique vient bouleverser les choses. La présence du bruit et les imprécisions des calculs entraı̂nent des résultats différents de ceux attendus. En effet, quand on fait le Radon selon l’angle trouvé, on obtient une courbe qui ne ressemble pas à celle que prévoit la théorie. Le sinus est légèrement sur-élevé au centre, ce qui est dû à l’impact de la puissance spectrale de l’image, qui s’ajoute à celle du flou. Ainsi, l’estimation avec la corrélation est très difficile à réaliser. Enfin, cette méthode étant théoriquement plus robuste face au bruit, nous avons donc essayer de réaliser des tests avec plusieurs niveaux de bruit. Nous en avons conclu que les résultats étaient conformes à ce qui était attendu. Même si l’écart entre la vraie valeur et la valeur trouvée augmente en fonction du bruit appliqué, on conserve des valeurs qui sont exploitables et précis à 5 degrés près. page 15/26 Figure 14 – Erreur du theta trouvé lors de la recherche de l’angle pour l’image muscle.pgm 4.4 4.4.1 Propositions faites Angle Afin de contrer les difficultés rencontré, nous avons testé plusieurs méthodes. Dans le cas de l’approximation de l’angle aux alentours de 0 ou 90 degrés, nous avons décidé de décider de l’angle en deux temps. Premièrement, on calcule le θ̂1 en supposant qu’il se trouve dans les intervalles [[10, 80]] et [[100, 170]]. On enregistre alors la valeur maximale obtenue, puis on effectue une rotation de 45 degrés de l’image floue et on cherche cette fois-ci l’angle θ̂2 qui maximise le Radon dans les intervalles complémentaires de ceux précédents, c’est-à-dire [[35, 55]] et [[125, 145]]. On conserve alors celui qui donne la plus grande valeur de Radon : θ̂1 = n o ˆ Var Rθ (Dg(, η)) argmax θ∈[[10,80]]∪[[100,170]] θ̂2 = argmax n o ˆ Var Rθ (DRg(, η)) θ∈[[35,55]]∪[[125,145]] ˆ θ̂ = max Rθ (Dg(, η)) θ=θ̂1 ,θ̂2 Avec cette méthode, nous obtenions des résultats satisfaisants sur des images telles que muscle.pgm (Figure [14]) mais nous avons également des images, notamment lacornou.pgm donnant des écarts importants sur les angles (Figure [15]). Avec les erreurs obtenues sur des images telles que lacornou.pgm, nous avons décidé de rester sur la méthode sans rotation, qui minimisait l’erreur moyenne commise sur l’intervalle [[0, 179]]. 4.4.2 Longueur La corrélation avec une fonction sin ne nous apparaissant pas comme adaptée au vue de la courbe obtenue avec le radon (Figure [16]), nous avons opté pour une méthode qui calculait les différents minima locaux que nous avions sur cette courbe, et qui prenait pour longueur la médiane des distances entre deux minima consécutifs. page 16/26 (a) Avec la rotation (b) Sans la rotation Figure 15 – Erreur du thêta trouvé lors de la recherche de l’angle pour l’image lacornou.pgm Figure 16 – Radon trouvé avec l’angle estimé pour l’image muscle.pgm page 17/26 (a) Avec les angles estimés (b) Avec les angles exacts Figure 17 – Erreur de la longueur trouvée lors de la recherche avec les extrema pour l’image muscle.pgm Cette méthode pourtant simple, s’est révélée très fiable quant à l’estimation de la longueur (Figure [17]). On peut affiner cette méthode en prenant pour longueur la moyenne du résultat obtenus pour les minima locaux et celui pour les maxima locaux. Pour diminuer l’influence du bruit, qui a tendance a faire apparaı̂tre de nombreux minima locaux indésirables, nous avons considéré qu’un point était minimum local si c’était le minimum sur un disque centré en lui même d’un certain rayon (3 pixels empiriquement). Autrement on ne considére que que les minimas un peu plus que locaux. Nous avons également tenté une autre méthode, visant à améliorer la précision de la détermination des extrema qui est fortement influencé par l’allure de la courbe. Cette solution consistait à seuiller la courbe du radon selon une valeur à déterminer (typiquement la médiane) puis à labelliser la courbe obtenue pour ensuite déterminer le milieu des zones dont la valeur du radon est supérieur au seuil. Enfin, la distance entre deux milieux consécutifs était choisi pour déterminer la longueur du flou. Après quelques essais sur des images différentes, il s’est avéré que cette méthode posait un problème : le seuillage était impossible à réaliser dû à l’influence de l’image de base qui faisait croı̂tre le Radon, rendant impossible un seuillage utilisable par l’algorithme. Pour contrer cela, nous avons tenté par la suite d’utiliser la ruse de la méthode d’intensité, visant à supprimer la contribution de l’image (Figure [18]). Nous avons finalement choisi de prendre comme profil une fonction de type : h(x) = − x 2p N +b page 18/26 (a) Modèle approchant le mieux la courbe (b) Radon modifié Figure 18 – Suppression de l’influence de l’image pour muscle.pgm Cependant, les résultats avec le seuillage ne sont pas plus satisfaisant que ceux obtenus avec l’estimation des extrema locaux, par conséquents, nous avons décidé de conserver la méthode utilisant les extrema locaux. 4.5 Conclusions de la méthode La méthode des gradients nous permet d’obtenir des angles d’une grande précisions et des valeurs de longueurs proche de la réalité. Cependant, nous avons quelques meilleurs résultats en terme d’estimation de la longueur avec la méthode de référence, même si celle-ci se montre plus sensible au bruit. Enfin, afin de valider l’ensemble de nos conclusions quant à la qualité de nos remarques, nous avons utilisé ces algorithmes sur des images prises avec un appareil. Le flou n’étant pas parfaitement constant, que ça soit en angle ou en vitesse, nous voulions tester si une légère modification des hypothèses de base sur le flou entraı̂nait des erreurs. Les résultats restent très approximatif, on note la grande influence de nos hypothèses (vitesse et angle constants) et également du bruit. La Longueur est le paramètre le plus difficile à évaluer car l’erreur sur l’angle, bien que faible, a un impact important sur la longueur ensuite trouvée. 5 Méthode d’intensité Cette méthode s’appuie sur la suppression de la contribution de l’image dans la puissance spectrale. page 19/26 5.1 Intérêt En regardant la puissance spectrale d’une image, on se rend compte qu’il y a une surface de base qui porte les raies du flou. C’est la contribution de l’image. Cela a pour effet de rendre la détection des paramètres du flou plus difficile. L’idée derrière la méthode d’intensité est d’enlever la contribution de l’image originale afin de n’avoir que la contribution du flou rendant ainsi la détection des paramètres plus facile et plus précise. 5.2 5.2.1 Présentation Algorithme de base On part du même modèle que vu dans les méthodes précédentes. C’est-à-dire que l’image floutée est le résultat d’une convolution entre l’image originale et le modèle du flou. En se ramenant à ce modèle on a que la puissance spectrale de G est la somme de la puissance spectrale de l’image originale avec celle du flou. log |G(ξ, η)| = log |F (ξ, η)| + log |H(ξ, η)| En étudiant l’allure des puissances spectrales de plusieurs images non floutées, on se rend compte que la forme de base est similaire. Ainsi, on propose un modèle pour estimer la puissance spectrale de l’image défloutée, on approxime alors log |F (ξ, η)| par (|ξ| + |η|)−p où p est un paramètre à déterminer. Cette détermination se fait en choisissant le p̂ qui minimise la variance de l’erreur comise : p̂ = argmin Var log |G(ξ, η)| − (|ξ| + |η|)−p p∈[0,1] Une fois le paramètre p̂ estimé on définit : |Ĥ(ξ, η)|def = log |G(ξ, η)| − (|ξ| + |η|)−p̂ Dans l’hypothèse où le modèle de la contribution de l’image est bonne |Ĥ(ξ, η)|def ne contient que la contribution du flou. On va alors pouvoir corréler cette puissance spectrale avec celle d’un flou de bougé idéal : H(ξ, η, L, θ) = sin(L(ξ cos θ + η sin θ)π/N ) L sin((ξ cos θ + η sin θ)π/N ) On choisira ensuite le L et θ qui maximise la fonction de corrélation suivante : Corr(L, θ) = XX ξ w(ξ, η)|H(ξ, η; L, θ)||Ĥ(ξ, η)|def η page 20/26 La fonction w jouant un rôle de pondération visant à supprimer les valeurs abérantes. 5.2.2 Algorithme corrigé Un des points n’étant pas précisé dans l’article dont nous disposions était l’amplitude de la contribution de l’image. En effet, le modèle choisi avait une amplitude très faible comparée à celle de l’image réelle. Nous avons alors choisi de transformer l’approximation de log |F (ξ, η)| en α(|ξ| + |η|)−p . On cherche dans un premier temps le p̂ qui donne se rapproche au mieux de l’image puis on cherche alors le α qui donne un résultat de l’ordre de grandeur de l’image que l’on possède.. Le deuxième point qui a dû être corrigé est la fonction de corrélation. Celle-ci donnant des résultats faux et très souvent les mêmes. Nous avons conservé le produit terme a terme entre H et Ĥ mais nous avons modifié la fonction w. En effet, Nous remarquions que l’algorithme avait tendance à nous donner les mêmes résultats, qu’importe l’angle ou la longueur du flou appliqué. En traçant l’allure de la corrélation, nous nous sommes aperçu que l’algorithme choissait des valeurs faibles de longueur et des angles proches de 0 ou 90. Nous avons donc ajouté des termes à w de manière à prendre en compte l’écart type des valeurs obtenus par produit, ce qui forcait l’algorithme à prendre en compte les bosses de faibles amplitudes, qu’il ignorait auparavant. 5.3 5.3.1 Résultats Résultat de la suppression de la contribution de l’image Figure [19] on peut voir le résultat de l’opération de suppression de la contribution de l’image sur une image non-floutée. (a) (b) Figure 19 – a) Puissance spectrale de l’image Lacornou.pgm b) Puissance spectrale après suppression de la contribution de l’image On peut voir que la surface est devenue beaucoup plus homogène. Après plusieurs tests, nous avons validé l’hypothèse que la puissance spectrale de l’image originale soit de la forme (|ξ| + |η|)−p . page 21/26 Figure [20] On peut voir le résultat de l’opération sur une image floutée : (a) (b) Figure 20 – a) Puissance spectrale de l’image pont.pgm floutée b) Puissance spectrale après suppression de la contribution de l’image On arrive à des résultats satisfaisants en terme de puissance spectrale pour les images naturelles. 5.3.2 Estimation des paramètres du flou Figure[21] les erreurs relatifs que l’on obtient en lançant l’algorithme sur lacornou pour une longueur de 20 : Chaque couleur de courbe correspond à un niveau de bruit. Dans l’ordre du bruit le plus faible au plus élevé on a : bleu, vert, jaune, rouge. Erreur d’estimation de l’orientation On voit que dans la majorité des cas notre implémentation ne donne pas de bons résultats. Malgré tout il y a quelques angles qui sont beaucoup mieux estimer que d’autre. La nature de la fonction de corrélation joue un rôle important dans la précision des résultats. De plus la méthode est très sensible au bruit. Lorsque du bruit est présent l’algorithmes a tendance a choisir les angles 0, 90 et 179. On peut le voir sur le graphe car l’erreur est de 45 degrés lorsqu’on se trouve aux angles 45 ou 135. Erreur d’estimation de la longueur Cette méthode a l’air d’avoir un comportement inattendu. En effet, lorsque le bruit est important l’erreur sur la longueur est maximisé par 4. Ce résultat est en fait un hasard. En fait, l’algorithme a tendante a renvoyer 18 ou 24 lorsque l’angle estimé est 0, 90 ou 179. La longueur que nous devions trouvé étant de 20 pixel ceci explique ces résultats.. page 22/26 (a) Erreur d’estimation de l’orientation (b) Erreur d’estimation de la longueur Figure 21 – Erreur d’estimation des paramètres du flou avec la méthode d’intensité pour L = 20 5.4 5.4.1 Propositions d’améliorations et tests proposés Modèle de la contribution de l’image L’un des principaux problème de cet algorithme l’hypothèse sur la contribution de l’image. Le profil (|ξ| + |η|)−p est vrai pour la plupart des images naturelles où il n’y a pas de surexposition comme celle page 23/26 de lacornou et du pont. Mais dans le cas contraire on observe plutôt les profils de puissance spectrale comme ce qu’on peut voir sur les Figures [22, 23]. (a) (b) Figure 22 – Images qui ne respecte pas le modèle (a) radiotci, (b) couchersoleil) (a) (b) Figure 23 – Puissance spectrale de ces images (a) radiotci, (b) couchersoleil) On peut voir que le modèle précédent ne semble pas être le plus approprié. C’est pourquoi cet algorithme est inutilisable sur les photos que ne sont pas conformes au modèle. Une solution à cela serait page 24/26 de supposer qu’une image suit un modèle d’intensité qui est composé lui même de plusieurs modèles d’intensité plus simples. On ferait alors plusieurs passe afin d’enlever les contribution suivant chacun des modèles. De cette manière on pourrai rendre l’algorithme utilisable sur un plus large panel de photo. Par exemple le modèle (|ξ||η|)−p peut être intéressant car il enlève la contribution des deux axes de la photo. 5.4.2 Fonction de corrélation Le problème d’estimation des paramètres du flou viennent sûrement de la mauvaise définition de la fonction de corrélation. En effet, la fonction décrit dans l’article n’est pas utilisable car elle suppose qu’on a totalement supprimé la contribution de l’image. Cette hypothèse est beaucoup trop forte. De plus même dans le cas où la contribution de l’image est réellement effacé, elle ignore l’amplitude. Ce qui dans la plupart des cas fait choisir un couple L θ faux. Après modification on a réussi a avoir une fonction qui réussissait a trouvé l’angle de manière plus régulière. 5.5 Conclusions de la méthode Lorsque l’image respecte les hypothèses les résultats pour l’angle ne sont pas mauvais pour certain angle. Mais catastrophique pour d’autre. Ceci est encore un problème lié à la fonction de corrélation. Malgré le fait que cette méthode ne semble pas donner de résultats satisfaisants, à cause de ses hypothèses trop fortes ainsi que du problème de la fonction de corrélation, on peut tout de même noter que les idées peuvent être utilisées pour améliorer des algorithmes déjà existants. L’utilisation d’un modèle de contribution de l’image nous a permis de rendre les autres méthodes plus robustes au bruit. 6 Conclusions du projet Tout au long de nos essais, nous avons pu nous apercevoir des difficultés de ce sujet, telles que le bruit, le type d’image, les hypothèses non réalistes... Beaucoup de problème sont notamment révélés lors du passage au monde du discret, qu’on ne prévoit pas à l’avance quand on travaille dans le monde du continu. Cela nous a ammener à tenter de nombreuses astuces pour les contourner, mais nous nous sommes vite rendu compte de l’impossibilité d’obtenir des résultats parfaits, pour toutes les images, avec tout les paramètres de flous possibles. Nos améliorations sont venues des difficultés que nous avons vu, mais l’aide de notre encadrant a été déterminante car elle nous évitait de partir dans des solutions irréalisables, ou simplement nous donnait des voies de réflexions différentes de celles que nous avions pu explorer par nous-mêmes. Au cours de notre recherche, nous avions imaginé une autre méthode qui consistait à prendre comme direction celle qui minimisait la borne supérieur du gradient car nous pensions qu’avec l’étalement provoqué par le flou, le gradient resterait à un faible valeur selon la bonne direction : page 25/26 θ̂ = argmin Sup(Dg) θ∈[[0,179]] Nous avions conscience que des bandes de même niveau de gris perturberaient la qualité de l’algorithme, mais nous partions du principe que ceci n’arriverait pas sur des images naturelles. Cependant, nos expérimentations ont montrées que même sur ces images, cet algorithme n’arrivait pas à déterminer le bon angle, c’est pourquoi nous avons abandonné cette méthode. De même, pour la détermination de la longueur, nous avions pensé à utiliser des outils morphologiques (notamment l’érosion ou la dilation) sur la puissance spectrale pour ne conserver que des droites parallèles à la place des raies, et donc déterminer la longueur simplement comme étant la distance entre deux de ces droites. Cette technique est malheureusement dur à mettre en pratique du fait de la non ressemblance de la puissance spectrale avec le modèle théorique : les raies ne sont pas toutes exactement parallèles, et leur épaisseur diffère en fonction de la raie considérée. Ici encore, nous avons dû éliminer cette solution. Pour conclure, au vu des résultats que nous avons obtenus, et au vu du code que nous avons écrit, notre choix de détection des paramètres se penche sur l’utilisation de la méthode du gradient pour déterminer l’angle, mais la détermination de la longueur est encore un point de questionnement, car la méthode de référence et l’utilisation du gradient trouvent chacune leur utilité sur des images, mais aucune d’entre elles ne prend l’avantage sur l’ensemble des images que nous avons testées. Nous regrettons malheureusement le manque de temps (limité à 2 semaines et demi) qui nous empêche de pousser un peu plus loin nos recherches et nos essais, étant donné le temps de prise en main du sujet, ce qui nous laisse 5 jours au total pour réellement pousser la recherche. Cependant, chacun des membres du groupe gardera de ce projet l’image d’un projet enrichissant aussi bien pédagogiquement, que personnelement, car nous donnant une première vision de la recherche, avec ses enjeux différents, ses tests, ses idées... Nous sommes très heureux d’avoir participé à cela et avons fait notre maximum pour aboutir à des résultats fiables, en faisant preuve d’originalité, de créativité et d’imagination. Nous remercions encore notre encadrant, Michel DESVIGNES, qui a déposé ce sujet qui nous a soutenu au cours de cette période. Références [1] N. Weiner, ”The Extrapolation, Interpolation, and Smoothing of Stationary Time Series with Engineering Applications,” Wiley, New York, 1949. [2] Richardson and William Hadley. ”Bayesian-Based Iterative Method of Image Restoration, ”JOSA, vol 62 (1), pp. 55-59, 1972. [3] Lucy and L. B., ”An iterative technique for the rectification of observed distributions, ”Astronomical Journal, vol79(6), pp. 745-754, 1974. [4] J. Biemonds. Iterative methods for image deblurring Proceedings of the IEEE, 78(5) :856-883, 1990. page 26/26