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