11.3.3 Méthode du filtrage de la rétroprojection

L'idée de base qui se cache derrière la méthode dite du filtrage de la rétroprojection est illustrée à la figure 11.12 pour la reconstruction d'un point objet. Les principes de reconstruction sont ici les suivants:

  1. Pour chaque angle $ \theta$, on ``étend'' les valeurs de la projection (qui, pour un point objet, ne sont non-nulles que dans une petite région de s) sur la bande de direction $ \vec{{\theta}}\,$ qui passe par le point objet. On parle de rétroprojection des projections.
  2. On additionne le résultat de la rétroprojection de chaque projection pour obtenir une image fB(x, y) proche de f (x, y).
  3. On observe que fB(x, y) est une version floue de f (x, y) avec valeurs non-nulles en-dehors du support de f (x, y). On cherche alors un filtre de déconvolution 2D qui permet de retrouver f (x, y) à partir de fB(x, y).
Figure 11.12: Rétroprojection des projections pour un point objet.
9129  

La figure 11.13 montre le résultat fB(x, y) correspondant à l'image f (x, y) définie à la figure 11.8.

Figure 11.13: Résultat de la rétroprojection pour un fantôme composé de 3 points objet.
9140  

La représentation mathématique de l'image fB(x, y) = fB($ \vec{{x}}\,$) est

fB(x, y) = $\displaystyle \int_{{0}}^{{\pi}}$d$\displaystyle \theta$ g($\displaystyle \theta$, s = $\displaystyle \vec{{x}}\,$.$\displaystyle \vec{{\theta}}\,$) = $\displaystyle {\frac{{1}}{{2}}}$$\displaystyle \int_{{0}}^{{2\pi}}$d$\displaystyle \theta$ g($\displaystyle \theta$, s = $\displaystyle \vec{{x}}\,$.$\displaystyle \vec{{\theta}}\,$). (11.8)

Quelques calculs sont nécessaires pour trouver la relation entre fB($ \vec{{x}}\,$) et f ($ \vec{{x}}\,$). Tout d'abord, on remplace g($ \theta$, s) par l'inverse de sa transformée de FOURIER dans l'expression de fB($ \vec{{x}}\,$) et on utilise le théorème du profil central pour trouver
fB($\displaystyle \vec{{x}}\,$) = $\displaystyle \int_{{0}}^{{\pi}}$d$\displaystyle \theta$ $\displaystyle \int_{{-\infty}}^{{+\infty}}$d$\displaystyle \sigma$ e2$\scriptstyle \pi$j$\scriptstyle \sigma$($\scriptstyle \vec{{x}}\,$.$\scriptstyle \vec{{\theta}}\,$) ($\displaystyle \mathcal {F}$1g)($\displaystyle \theta$,$\displaystyle \sigma$) (11.9)
  = $\displaystyle \int_{{0}}^{{\pi}}$d$\displaystyle \theta$ $\displaystyle \int_{{-\infty}}^{{+\infty}}$d$\displaystyle \sigma$ e2$\scriptstyle \pi$j$\scriptstyle \sigma$($\scriptstyle \vec{{x}}\,$.$\scriptstyle \vec{{\theta}}\,$) ($\displaystyle \mathcal {F}$2f )($\displaystyle \sigma$$\displaystyle \vec{{\theta}}\,$) (11.10)

Ensuite, on effectue le changement de variables $ \vec{{X}}\,$ = $ \sigma$ $ \vec{{\theta}}\,$, avec jacobien J = 1/|$ \vec{{X}}\,$|, pour obtenir le résultat

fB($\displaystyle \vec{{x}}\,$) = $\displaystyle \int_{{-\infty}}^{{+\infty}}$dX $\displaystyle \int_{{-\infty}}^{{+\infty}}$dY e2$\scriptstyle \pi$j$\scriptstyle \vec{{x}}\,$.$\scriptstyle \vec{{X}}\,$ $\displaystyle {\frac{{1}}{{\vert\vec{X}\vert}}}$($\displaystyle \mathcal {F}$2f )($\displaystyle \vec{{X}}\,$). (11.11)

Cette formule nous apprend que les transformées de FOURIER de fB($ \vec{{x}}\,$) et f ($ \vec{{x}}\,$) sont reliées par le filtre 1/|$ \vec{{X}}\,$|. On a donc la relation

($\displaystyle \mathcal {F}$2fB)($\displaystyle \vec{{X}}\,$) = $\displaystyle {\frac{{1}}{{\vert\vec{X}\vert}}}$($\displaystyle \mathcal {F}$2f )($\displaystyle \vec{{X}}\,$)         $\displaystyle \rightarrow$         ($\displaystyle \mathcal {F}$2f )($\displaystyle \vec{{X}}\,$) = |$\displaystyle \vec{{X}}\,$| ($\displaystyle \mathcal {F}$2fB)($\displaystyle \vec{{X}}\,$). (11.12)

De là, on décrit l'algorithme du filtrage de la rétroprojection comme suit:

  1. Rétroprojection des projections pour obtenir fB($ \vec{{x}}\,$).
  2. Calcul de la transformée de FOURIER de fB($ \vec{{x}}\,$), application du filtre |$ \vec{{X}}\,$| et calcul de la transformée de FOURIER inverse du résultat.
L'étape de déconvolution est très difficile à implémenter en pratique parce que la transformée de FOURIER de fB($ \vec{{x}}\,$) n'existe pas au sens classique (elle n'existe qu'au sens des distributions), et aussi parce que fB($ \vec{{x}}\,$) n'est pas à support compact (même si f ($ \vec{{x}}\,$) l'est), alors que le calcul de sa transformée de FOURIER ne peut se faire numériquement qu'à partir d'une grille de taille finie. En pratique, pour obtenir des images de qualité satisfaisante en utilisant la méthode du filtrage de la rétroprojection, il faut calculer l'image fB($ \vec{{x}}\,$) sur une grille de pixels trois à quatre fois plus grande que celle utilisée pour f ($ \vec{{x}}\,$). On se retrouve alors avec un algorithme beaucoup plus lent que la méthode dite de rétroprojection des projections filtrées, avec un nombre d'opérations qui peut aller jusqu'à O(16N$\scriptstyle \theta$Q2) + O(8Q2log 2Q) pour reconstruire f ($ \vec{{x}}\,$) sur une grille de Q×Q pixels.


Marc Van Droogenbroeck. Tous droits réservés.
2003-09-30