X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/these_gilles.git/blobdiff_plain/c9d0c3dd6f80e930b253e821696e7cab543423be..13ca7bf0cd6c0a68491100176b08e819ef173a57:/THESE/these.aux?ds=inline diff --git a/THESE/these.aux b/THESE/these.aux index 47ce71f..62d8b86 100644 --- a/THESE/these.aux +++ b/THESE/these.aux @@ -434,8 +434,8 @@ \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$d_{max}=128$ et $l_{min}=32$, 447 n\oe uds en 0.7~s}}}{66}{figure.6.4}} \@writefile{lof}{\contentsline {figure}{\numberline {6.5}{\ignorespaces Segmentation de l'image de test en 4000$\times $4000 pixels avec une cible de petite taille. Le contour initial est la transcription de celui utilis\IeC {\'e} \IeC {\`a} la figure \ref {fig-snakecpu-cochon512}. Le trac\IeC {\'e} du contour a \IeC {\'e}t\IeC {\'e} artificiellement \IeC {\'e}paissi pour le rendre visible \IeC {\`a} l'\IeC {\'e}chelle de l'impression.}}{67}{figure.6.5}} \newlabel{fig-snakecpu-cochon4kc3}{{6.5}{67}{Segmentation de l'image de test en 4000$\times $4000 pixels avec une cible de petite taille. Le contour initial est la transcription de celui utilisé à la figure \ref {fig-snakecpu-cochon512}. Le tracé du contour a été artificiellement épaissi pour le rendre visible à l'échelle de l'impression}{figure.6.5}{}} -\@writefile{lot}{\contentsline {table}{\numberline {6.2}{\ignorespaces Performances (en secondes) de la segmentation par snake polygonal sur CPU en fonction de la taille de l'image \IeC {\`a} traiter. Les temps sont obtenus avec la m\IeC {\^e}me image de test dilat\IeC {\'e}e et bruit\IeC {\'e}e et un contour initial carr\IeC {\'e} dont la distance aux bords est proportionnelle \IeC {\`a} la taille de l'image. Seule l'image en 15~MP a pu \IeC {\^e}tre trait\IeC {\'e}e par une impl\IeC {\'e}mentation utilisant SSE2.}}{67}{table.6.2}} -\newlabel{tab-snakecpu-speed-size}{{6.2}{67}{Performances (en secondes) de la segmentation par snake polygonal sur CPU en fonction de la taille de l'image à traiter. Les temps sont obtenus avec la même image de test dilatée et bruitée et un contour initial carré dont la distance aux bords est proportionnelle à la taille de l'image. Seule l'image en 15~MP a pu être traitée par une implémentation utilisant SSE2}{table.6.2}{}} +\@writefile{lot}{\contentsline {table}{\numberline {6.2}{\ignorespaces Performances (en secondes) de la segmentation par snake polygonal sur CPU en fonction de la taille de l'image \IeC {\`a} traiter. Les temps sont obtenus avec la m\IeC {\^e}me image de test dilat\IeC {\'e}e et bruit\IeC {\'e}e et un contour initial carr\IeC {\'e} dont la distance aux bords est proportionnelle \IeC {\`a} la taille de l'image.}}{67}{table.6.2}} +\newlabel{tab-snakecpu-speed-size}{{6.2}{67}{Performances (en secondes) de la segmentation par snake polygonal sur CPU en fonction de la taille de l'image à traiter. Les temps sont obtenus avec la même image de test dilatée et bruitée et un contour initial carré dont la distance aux bords est proportionnelle à la taille de l'image}{table.6.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.3}Impl\IeC {\'e}mentation parall\IeC {\`e}le GPU du snake polygonal}{67}{section.6.3}} \citation{BlellochTR90} \newlabel{fig-snakecpu-chronos1}{{6.3}{68}{Implémentation parallèle GPU du snake polygonal\relax }{section.6.3}{}} @@ -451,43 +451,43 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}Calcul des contributions des segments}{70}{subsection.6.3.2}} \@writefile{lof}{\contentsline {figure}{\numberline {6.8}{\ignorespaces Structuration des donn\IeC {\'e}es en m\IeC {\'e}moire du GPU pour l'\IeC {\'e}valuation en parall\IeC {\`e}le de l'ensemble des \IeC {\'e}volutions possibles du contour.}}{71}{figure.6.8}} \newlabel{fig-structure-segment}{{6.8}{71}{Structuration des données en mémoire du GPU pour l'évaluation en parallèle de l'ensemble des évolutions possibles du contour}{figure.6.8}{}} -\newlabel{fig-cycle-contribs-segments-a}{{6.9(a)}{72}{Subfigure 6 6.9(a)\relax }{subfigure.6.9.1}{}} -\newlabel{sub@fig-cycle-contribs-segments-a}{{(a)}{72}{Subfigure 6 6.9(a)\relax }{subfigure.6.9.1}{}} -\newlabel{fig-cycle-contribs-segments-b}{{6.9(b)}{72}{Subfigure 6 6.9(b)\relax }{subfigure.6.9.2}{}} -\newlabel{sub@fig-cycle-contribs-segments-b}{{(b)}{72}{Subfigure 6 6.9(b)\relax }{subfigure.6.9.2}{}} -\newlabel{fig-cycle-contribs-segments-c}{{6.9(c)}{72}{Subfigure 6 6.9(c)\relax }{subfigure.6.9.3}{}} -\newlabel{sub@fig-cycle-contribs-segments-c}{{(c)}{72}{Subfigure 6 6.9(c)\relax }{subfigure.6.9.3}{}} -\newlabel{fig-cycle-contribs-segments-d}{{6.9(d)}{72}{Subfigure 6 6.9(d)\relax }{subfigure.6.9.4}{}} -\newlabel{sub@fig-cycle-contribs-segments-d}{{(d)}{72}{Subfigure 6 6.9(d)\relax }{subfigure.6.9.4}{}} -\newlabel{fig-cycle-contribs-segments-e}{{6.9(e)}{72}{Subfigure 6 6.9(e)\relax }{subfigure.6.9.5}{}} -\newlabel{sub@fig-cycle-contribs-segments-e}{{(e)}{72}{Subfigure 6 6.9(e)\relax }{subfigure.6.9.5}{}} -\newlabel{fig-cycle-contribs-segments-f}{{6.9(f)}{72}{Subfigure 6 6.9(f)\relax }{subfigure.6.9.6}{}} -\newlabel{sub@fig-cycle-contribs-segments-f}{{(f)}{72}{Subfigure 6 6.9(f)\relax }{subfigure.6.9.6}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {6.9}{\ignorespaces Comparaison des cycles de d\IeC {\'e}placement des n\oe uds. Ligne du haut : version s\IeC {\'e}quentielle. Ligne du bas : version parall\IeC {\`e}le. Les segments en rouge sont des segments du contour non \IeC {\'e}valu\IeC {\'e}s, alors que ceux en pointill\IeC {\'e}s sont les paires ayant re\IeC {\c c}u les meilleures \IeC {\'e}valuations parmi les 8 d\IeC {\'e}placements possibles des n\oe uds correspondant.}}{72}{figure.6.9}} -\newlabel{fig-cycle-contribs-segments}{{6.9}{72}{Comparaison des cycles de déplacement des n\oe uds. Ligne du haut : version séquentielle. Ligne du bas : version parallèle. Les segments en rouge sont des segments du contour non évalués, alors que ceux en pointillés sont les paires ayant reçu les meilleures évaluations parmi les 8 déplacements possibles des n\oe uds correspondant}{figure.6.9}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Contour de r\IeC {\'e}f\IeC {\'e}rence.}}}{72}{figure.6.9}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {D\IeC {\'e}placement du n\oe ud $N_1$. Le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{72}{figure.6.9}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {D\IeC {\'e}placement du n\oe ud $N_2$. Le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{72}{figure.6.9}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {D\IeC {\'e}placement en parall\IeC {\`e}le de tous les n\oe uds. Les segments du contour n'ont pas \IeC {\'e}t\IeC {\'e} valid\IeC {\'e}s. On doit recalculer le crit\IeC {\`e}re apr\IeC {\`e}s les d\IeC {\'e}placements pour savoir s'il a \IeC {\'e}t\IeC {\'e} am\IeC {\'e}lior\IeC {\'e}.}}}{72}{figure.6.9}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {D\IeC {\'e}placement en parall\IeC {\`e}le des n\oe uds impairs. Le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{72}{figure.6.9}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {D\IeC {\'e}placement en parall\IeC {\`e}le des n\oe uds pairs. Un seul segment n'a pas \IeC {\'e}t\IeC {\'e} \IeC {\'e}valu\IeC {\'e}.}}}{72}{figure.6.9}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.1}Cas particulier des segments dont la pente $k$ v\IeC {\'e}rifie $|k|\leq 1$}{73}{subsubsection.6.3.2.1}} +\newlabel{fig-cycle-contribs-segments-a}{{6.9(a)}{73}{Subfigure 6 6.9(a)\relax }{subfigure.6.9.1}{}} +\newlabel{sub@fig-cycle-contribs-segments-a}{{(a)}{73}{Subfigure 6 6.9(a)\relax }{subfigure.6.9.1}{}} +\newlabel{fig-cycle-contribs-segments-b}{{6.9(b)}{73}{Subfigure 6 6.9(b)\relax }{subfigure.6.9.2}{}} +\newlabel{sub@fig-cycle-contribs-segments-b}{{(b)}{73}{Subfigure 6 6.9(b)\relax }{subfigure.6.9.2}{}} +\newlabel{fig-cycle-contribs-segments-c}{{6.9(c)}{73}{Subfigure 6 6.9(c)\relax }{subfigure.6.9.3}{}} +\newlabel{sub@fig-cycle-contribs-segments-c}{{(c)}{73}{Subfigure 6 6.9(c)\relax }{subfigure.6.9.3}{}} +\newlabel{fig-cycle-contribs-segments-d}{{6.9(d)}{73}{Subfigure 6 6.9(d)\relax }{subfigure.6.9.4}{}} +\newlabel{sub@fig-cycle-contribs-segments-d}{{(d)}{73}{Subfigure 6 6.9(d)\relax }{subfigure.6.9.4}{}} +\newlabel{fig-cycle-contribs-segments-e}{{6.9(e)}{73}{Subfigure 6 6.9(e)\relax }{subfigure.6.9.5}{}} +\newlabel{sub@fig-cycle-contribs-segments-e}{{(e)}{73}{Subfigure 6 6.9(e)\relax }{subfigure.6.9.5}{}} +\newlabel{fig-cycle-contribs-segments-f}{{6.9(f)}{73}{Subfigure 6 6.9(f)\relax }{subfigure.6.9.6}{}} +\newlabel{sub@fig-cycle-contribs-segments-f}{{(f)}{73}{Subfigure 6 6.9(f)\relax }{subfigure.6.9.6}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {6.9}{\ignorespaces Comparaison des cycles de d\IeC {\'e}placement des n\oe uds. Ligne du haut : version s\IeC {\'e}quentielle. Ligne du bas : version parall\IeC {\`e}le. Les segments en rouge sont des segments du contour non \IeC {\'e}valu\IeC {\'e}s, alors que ceux en pointill\IeC {\'e}s sont les paires ayant re\IeC {\c c}u les meilleures \IeC {\'e}valuations parmi les 8 d\IeC {\'e}placements possibles des n\oe uds correspondant.}}{73}{figure.6.9}} +\newlabel{fig-cycle-contribs-segments}{{6.9}{73}{Comparaison des cycles de déplacement des n\oe uds. Ligne du haut : version séquentielle. Ligne du bas : version parallèle. Les segments en rouge sont des segments du contour non évalués, alors que ceux en pointillés sont les paires ayant reçu les meilleures évaluations parmi les 8 déplacements possibles des n\oe uds correspondant}{figure.6.9}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Contour de r\IeC {\'e}f\IeC {\'e}rence.}}}{73}{figure.6.9}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {D\IeC {\'e}placement du n\oe ud $N_1$. Le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{73}{figure.6.9}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {D\IeC {\'e}placement du n\oe ud $N_2$. Le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{73}{figure.6.9}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {D\IeC {\'e}placement en parall\IeC {\`e}le de tous les n\oe uds. Les segments du contour n'ont pas \IeC {\'e}t\IeC {\'e} valid\IeC {\'e}s. On doit recalculer le crit\IeC {\`e}re apr\IeC {\`e}s les d\IeC {\'e}placements pour savoir s'il a \IeC {\'e}t\IeC {\'e} am\IeC {\'e}lior\IeC {\'e}.}}}{73}{figure.6.9}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {D\IeC {\'e}placement en parall\IeC {\`e}le des n\oe uds impairs. Le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{73}{figure.6.9}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {D\IeC {\'e}placement en parall\IeC {\`e}le des n\oe uds pairs. Un seul segment n'a pas \IeC {\'e}t\IeC {\'e} \IeC {\'e}valu\IeC {\'e}.}}}{73}{figure.6.9}} \@writefile{lof}{\contentsline {figure}{\numberline {6.10}{\ignorespaces D\IeC {\'e}termination des coefficients $C(i,j)$ des pixels du contour.}}{74}{figure.6.10}} \newlabel{fig-segment-k<1}{{6.10}{74}{Détermination des coefficients $C(i,j)$ des pixels du contour}{figure.6.10}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Quadrants 1 et 4}}}{74}{figure.6.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Quadrants 2 et 3}}}{74}{figure.6.10}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}Performances}{74}{subsection.6.3.3}} -\@writefile{lof}{\contentsline {figure}{\numberline {6.11}{\ignorespaces Segmentations d'une image de 100~MP en 0,59~s pour 5 it\IeC {\'e}rations. Le contour initial conserve les proportions de celui de la figure \ref {fig-snakecpu-cochon512}. }}{75}{figure.6.11}} -\newlabel{fig-snakegpu-result}{{6.11}{75}{Segmentations d'une image de 100~MP en 0,59~s pour 5 itérations. Le contour initial conserve les proportions de celui de la figure \ref {fig-snakecpu-cochon512}. \relax }{figure.6.11}{}} -\@writefile{lot}{\contentsline {table}{\numberline {6.4}{\ignorespaces Comparaison des temps d'ex\IeC {\'e}cution de l'impl\IeC {\'e}mentation GPU (C2070) par rapport \IeC {\`a} l'impl\IeC {\'e}mentation CPU de r\IeC {\'e}f\IeC {\'e}rence, appliqu\IeC {\'e}s \IeC {\`a} une m\IeC {\^e}me image dilat\IeC {\'e}e (fig. \ref {fig-snakecpu-cochon512}) pour en adapter la taille.}}{75}{table.6.4}} -\newlabel{tab-snake-results}{{6.4}{75}{Comparaison des temps d'exécution de l'implémentation GPU (C2070) par rapport à l'implémentation CPU de référence, appliqués à une même image dilatée (fig. \ref {fig-snakecpu-cochon512}) pour en adapter la taille}{table.6.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.4}D\IeC {\'e}termination intelligente du contour initial}{75}{subsection.6.3.4}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.1}Cas particulier des segments dont la pente $k$ v\IeC {\'e}rifie $|k|\leq 1$}{74}{subsubsection.6.3.2.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}Performances}{75}{subsection.6.3.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.4}D\IeC {\'e}termination du contour initial au sens du maximum de vraisemblance}{75}{subsection.6.3.4}} +\@writefile{lot}{\contentsline {table}{\numberline {6.4}{\ignorespaces Comparaison des temps d'ex\IeC {\'e}cution de l'impl\IeC {\'e}mentation GPU (C2070) par rapport \IeC {\`a} l'impl\IeC {\'e}mentation CPU (mono thread) de r\IeC {\'e}f\IeC {\'e}rence, pour une m\IeC {\^e}me image dilat\IeC {\'e}e (fig. \ref {fig-snakecpu-cochon512}) pour en adapter la taille.}}{76}{table.6.4}} +\newlabel{tab-snake-results}{{6.4}{76}{Comparaison des temps d'exécution de l'implémentation GPU (C2070) par rapport à l'implémentation CPU (mono thread) de référence, pour une même image dilatée (fig. \ref {fig-snakecpu-cochon512}) pour en adapter la taille}{table.6.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {6.11}{\ignorespaces Segmentations d'une image de 100~MP en 0,59~s pour 5 it\IeC {\'e}rations. Le contour initial conserve les proportions de celui de la figure \ref {fig-snakecpu-cochon512}. }}{76}{figure.6.11}} +\newlabel{fig-snakegpu-result}{{6.11}{76}{Segmentations d'une image de 100~MP en 0,59~s pour 5 itérations. Le contour initial conserve les proportions de celui de la figure \ref {fig-snakecpu-cochon512}. \relax }{figure.6.11}{}} \citation{6036776} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.5}Conclusion}{76}{subsection.6.3.5}} -\newlabel{fig-smart-init}{{6.3.4}{77}{Détermination intelligente du contour initial\relax }{subfigure.6.12.2}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {6.12}{\ignorespaces D\IeC {\'e}termination intelligente du contour initial en deux phases successives. (a) La premi\IeC {\`e}re \IeC {\'e}tape repose sur un \IeC {\'e}chantillonnage horizontal. (b) La seconde \IeC {\'e}tape repose sur un \IeC {\'e}chantillonnage vertical.}}{77}{figure.6.12}} +\newlabel{fig-smart-init}{{6.3.4}{77}{Détermination du contour initial au sens du maximum de vraisemblance\relax }{subfigure.6.12.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {6.12}{\ignorespaces D\IeC {\'e}termination du contour initial au sens du maximum de vraisemblance, par deux phases successives. (a) La premi\IeC {\`e}re \IeC {\'e}tape repose sur un \IeC {\'e}chantillonnage horizontal. (b) La seconde \IeC {\'e}tape repose sur un \IeC {\'e}chantillonnage vertical.}}{77}{figure.6.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {D\IeC {\'e}termination de $j_L$ et $j_H$.}}}{77}{figure.6.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {D\IeC {\'e}termination de $i_L$ et $i_H$.}}}{77}{figure.6.12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.3.5}Conclusion}{77}{subsection.6.3.5}} \citation{matheron75} \citation{caselles97} \citation{bertaux2004speckle} @@ -502,17 +502,18 @@ \newlabel{fig-lniv-p5q1}{{7.1}{80}{\label {fig-lniv-p5q1}Détail des motifs et de leur représentation interne, pour la taille $a=5$. \relax }{figure.7.1}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Les 8 premi\IeC {\`e}res lignes de la table $P_5$. Les \IeC {\'e}l\IeC {\'e}ments sont les positions relatives des pixels de chaque motif par rapport au pixel central.}}}{80}{figure.7.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Motifs des 8 premiers segments associ\IeC {\'e}s aux 8 premi\IeC {\`e}res lignes de $P_5$. Les pixels noirs repr\IeC {\'e}sentent le pixel trait\IeC {\'e} (ou pixel central), qui n'appartient pas au motif. Les pixels gris sont ceux qui constituent le motif.}}}{80}{figure.7.1}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1.1}Isolines \IeC {\`a} un seul segment}{80}{subsubsection.7.2.1.1}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1.1}D\IeC {\'e}termination du premier segment}{80}{subsubsection.7.2.1.1}} \@writefile{lof}{\contentsline {figure}{\numberline {7.2}{\ignorespaces Exemple de la r\IeC {\'e}partition des pixels dans la r\IeC {\'e}gion $\omega $ pour le calcul de la vraisemblance, pour $n=6$ ($a=5$).}}{81}{figure.7.2}} \newlabel{fig-lniv-regions}{{7.2}{81}{\label {fig-lniv-regions}Exemple de la répartition des pixels dans la région $\omega $ pour le calcul de la vraisemblance, pour $n=6$ ($a=5$)}{figure.7.2}{}} -\newlabel{LL2}{{7.1}{81}{Isolines à un seul segment\relax }{equation.7.2.1}{}} -\newlabel{GL}{{7.3}{81}{Isolines à un seul segment\relax }{equation.7.2.3}{}} -\newlabel{GL2}{{7.4}{81}{Isolines à un seul segment\relax }{equation.7.2.4}{}} -\newlabel{LL1}{{7.5}{81}{Isolines à un seul segment\relax }{equation.7.2.5}{}} +\newlabel{LL2}{{7.1}{81}{Détermination du premier segment\relax }{equation.7.2.1}{}} +\newlabel{GL}{{7.3}{81}{Détermination du premier segment\relax }{equation.7.2.3}{}} +\newlabel{GL2}{{7.4}{81}{Détermination du premier segment\relax }{equation.7.2.4}{}} +\newlabel{LL1}{{7.5}{81}{Détermination du premier segment\relax }{equation.7.2.5}{}} +\citation{van2004detection} \@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1.2}Isolines compos\IeC {\'e}es de plusieurs segments - crit\IeC {\`e}re d'allongement}{82}{subsubsection.7.2.1.2}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.3}{\ignorespaces Allongement du segment $S^n$. Deux candidats $S^{p'}$ et $S^{p''}$ sont \IeC {\'e}valu\IeC {\'e}s au travers du crit\IeC {\`e}re GLRT de l'\IeC {\'e}quation \textsuperscript {\hbox {\mathsurround \z@ \normalfont (\ignorespaces \ref {GLRT}\unskip \@@italiccorr )}}\xspace que seul $S^{p''}$ s'av\IeC {\`e}re satisfaire. a) Repr\IeC {\'e}sentation dans le plan de l'image. b) \IeC {\'E}volution des niveaux de gris en fonction de la position des pixels dans les lignes bris\IeC {\'e}es ainsi form\IeC {\'e}es.}}{82}{figure.7.3}} -\newlabel{fig-lniv-allongement}{{7.3}{82}{\label {fig-lniv-allongement}Allongement du segment $S^n$. Deux candidats $S^{p'}$ et $S^{p''}$ sont évalués au travers du critère GLRT de l'équation \eqref {GLRT} que seul $S^{p''}$ s'avère satisfaire. a) Représentation dans le plan de l'image. b) Évolution des niveaux de gris en fonction de la position des pixels dans les lignes brisées ainsi formées}{figure.7.3}{}} -\newlabel{LLNP}{{7.6}{82}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.7.2.6}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.3}{\ignorespaces Allongement du segment $S^n$. Deux candidats $S^{p'}$ et $S^{p''}$ sont \IeC {\'e}valu\IeC {\'e}s au travers du test GLRT de l'\IeC {\'e}quation \textsuperscript {\hbox {\mathsurround \z@ \normalfont (\ignorespaces \ref {GLRT}\unskip \@@italiccorr )}}\xspace que seul $S^{p''}$ s'av\IeC {\`e}re satisfaire. a) Repr\IeC {\'e}sentation dans le plan de l'image. b) \IeC {\'E}volution des niveaux de gris en fonction de la position des pixels dans les lignes bris\IeC {\'e}es ainsi form\IeC {\'e}es.}}{82}{figure.7.3}} +\newlabel{fig-lniv-allongement}{{7.3}{82}{\label {fig-lniv-allongement}Allongement du segment $S^n$. Deux candidats $S^{p'}$ et $S^{p''}$ sont évalués au travers du test GLRT de l'équation \eqref {GLRT} que seul $S^{p''}$ s'avère satisfaire. a) Représentation dans le plan de l'image. b) Évolution des niveaux de gris en fonction de la position des pixels dans les lignes brisées ainsi formées}{figure.7.3}{}} +\newlabel{LLNP}{{7.6}{83}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.7.2.6}{}} \newlabel{LLNP2}{{7.7}{83}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.7.2.7}{}} \newlabel{GLRT}{{7.8}{83}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.7.2.8}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.3}Mod\IeC {\'e}lisation des isolines pour l'impl\IeC {\'e}mentation parall\IeC {\`e}le sur GPU}{83}{section.7.3}} @@ -530,8 +531,8 @@ \newlabel{sub@pild:sub4}{{(e)}{84}{Subfigure 7 7.4(e)\relax }{subfigure.7.4.5}{}} \newlabel{pild:sub5}{{7.4(f)}{84}{Subfigure 7 7.4(f)\relax }{subfigure.7.4.6}{}} \newlabel{sub@pild:sub5}{{(f)}{84}{Subfigure 7 7.4(f)\relax }{subfigure.7.4.6}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.4}{\ignorespaces Processus de s\IeC {\'e}lection lors de l'allongement d'une isoline comportant initialement deux segments $s_1$ et $s_2$. Dans cet exemple $a=5$ et $\Delta d_{max}=2$. Chaque segment \IeC {\'e}valu\IeC {\'e} est soumis au crit\IeC {\`e}re GLRT. Si au moins un des segments pr\IeC {\'e}sente un test GLRT positif, alors l'allongement est r\IeC {\'e}alis\IeC {\'e} avec le segment qui forme l'isoline la plus vraisemblable.}}{84}{figure.7.4}} -\newlabel{fig-lniv-pild}{{7.4}{84}{Processus de sélection lors de l'allongement d'une isoline comportant initialement deux segments $s_1$ et $s_2$. Dans cet exemple $a=5$ et $\Delta d_{max}=2$. Chaque segment évalué est soumis au critère GLRT. Si au moins un des segments présente un test GLRT positif, alors l'allongement est réalisé avec le segment qui forme l'isoline la plus vraisemblable}{figure.7.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.4}{\ignorespaces Processus de s\IeC {\'e}lection lors de l'allongement d'une isoline comportant initialement deux segments $s_1$ et $s_2$. Dans cet exemple $a=5$ et $\Delta d_{max}=2$. Chaque segment \IeC {\'e}valu\IeC {\'e} est soumis au test GLRT. Si au moins un des segments pr\IeC {\'e}sente un test GLRT positif, alors l'allongement est r\IeC {\'e}alis\IeC {\'e} avec le segment qui forme l'isoline la plus vraisemblable.}}{84}{figure.7.4}} +\newlabel{fig-lniv-pild}{{7.4}{84}{Processus de sélection lors de l'allongement d'une isoline comportant initialement deux segments $s_1$ et $s_2$. Dans cet exemple $a=5$ et $\Delta d_{max}=2$. Chaque segment évalué est soumis au test GLRT. Si au moins un des segments présente un test GLRT positif, alors l'allongement est réalisé avec le segment qui forme l'isoline la plus vraisemblable}{figure.7.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Isoline comprenant deux segments $s_1$ et $s_2$.}}}{84}{figure.7.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Premier segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,0}$.}}}{84}{figure.7.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Deuxi\IeC {\`e}me segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,1}$.}}}{84}{figure.7.4}} @@ -553,8 +554,8 @@ \@writefile{lof}{\contentsline {subfigure}{\numberline{(k)}{\ignorespaces {peppers}}}{85}{figure.7.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(l)}{\ignorespaces {stream}}}{85}{figure.7.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(m)}{\ignorespaces {zelda}}}{85}{figure.7.5}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.6}{\ignorespaces Histogramme des \IeC {\'e}carts angulaires entre la direction primaire de l'isoline optimale et celle du segment s\IeC {\'e}lectionn\IeC {\'e} par PI-LD avec $q=1$ (sans allongement), pour l'image du singe (Mandrill). Pour la tr\IeC {\`e}s grande majorit\IeC {\'e} des pixels, l'\IeC {\'e}cart est nul.}}{85}{figure.7.6}} -\newlabel{fig-lniv-histo-singe}{{7.6}{85}{Histogramme des écarts angulaires entre la direction primaire de l'isoline optimale et celle du segment sélectionné par PI-LD avec $q=1$ (sans allongement), pour l'image du singe (Mandrill). Pour la très grande majorité des pixels, l'écart est nul}{figure.7.6}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.6}{\ignorespaces Histogramme des \IeC {\'e}carts angulaires entre la direction primaire de l'isoline optimale et celle du segment s\IeC {\'e}lectionn\IeC {\'e} par PI-LD avec $q=1$ (sans allongement), pour l'image du singe (Mandrill). Pour la tr\IeC {\`e}s grande majorit\IeC {\'e} des pixels, l'\IeC {\'e}cart est nul.}}{86}{figure.7.6}} +\newlabel{fig-lniv-histo-singe}{{7.6}{86}{Histogramme des écarts angulaires entre la direction primaire de l'isoline optimale et celle du segment sélectionné par PI-LD avec $q=1$ (sans allongement), pour l'image du singe (Mandrill). Pour la très grande majorité des pixels, l'écart est nul}{figure.7.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.7}{\ignorespaces Histogrammes des \IeC {\'e}carts angulaires entre la direction primaire de l'isoline optimale et celle de l'isoline s\IeC {\'e}lectionn\IeC {\'e}e, pour les images de l'ensemble de test de S. Lansel. La r\IeC {\'e}partition des erreurs est semblable dans toutes ces images, mais \IeC {\'e}galement dans toute image naturelle.}}{86}{figure.7.7}} \newlabel{fig-lniv-histo-autres}{{7.7}{86}{Histogrammes des écarts angulaires entre la direction primaire de l'isoline optimale et celle de l'isoline sélectionnée, pour les images de l'ensemble de test de S. Lansel. La répartition des erreurs est semblable dans toutes ces images, mais également dans toute image naturelle}{figure.7.7}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Airplane}}}{86}{figure.7.7}} @@ -571,58 +572,58 @@ \@writefile{lof}{\contentsline {subfigure}{\numberline{(l)}{\ignorespaces {Zelda}}}{86}{figure.7.7}} \newlabel{subsection-pipd-intro}{{7.3.2}{86}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{subsection.7.3.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Isolines \IeC {\`a} segments pr\IeC {\'e}-\IeC {\'e}valu\IeC {\'e}s - mod\IeC {\`e}le PI-PD}{86}{subsection.7.3.2}} -\newlabel{cx}{{7.9}{86}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{equation.7.3.9}{}} -\newlabel{cx2}{{7.10}{86}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{equation.7.3.10}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.8}{\ignorespaces Exemple d'application du proc\IeC {\'e}d\IeC {\'e} d'allongement \IeC {\`a} une isoline comprenant initialement 2 segments. la longueur des segments est $a=5$. Le proc\IeC {\'e}d\IeC {\'e} se r\IeC {\'e}p\IeC {\`e}te jusqu'\IeC {\`a} ce que le test GLRT \IeC {\'e}choue.}}{87}{figure.7.8}} -\newlabel{fig-lniv-pipd}{{7.8}{87}{Exemple d'application du procédé d'allongement à une isoline comprenant initialement 2 segments. la longueur des segments est $a=5$. Le procédé se répète jusqu'à ce que le test GLRT échoue}{figure.7.8}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Isoline avec 2 segments $s_1$ et $s_2$ d\IeC {\'e}j\IeC {\`a} valid\IeC {\'e}s.}}}{87}{figure.7.8}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {La direction de $s_3$ est l'\IeC {\'e}l\IeC {\'e}ment $(i_2,j_2)$ de $I_{\Theta }$.}}}{87}{figure.7.8}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Le motif de $s_3$ est lu dans $p_5$ et appliqu\IeC {\'e} en $(i_2,j_2)$. $C_x$ et $C_{x^2}$ sont donn\IeC {\'e}es par $I_{\Sigma }(i_2,j_2)$ et le test GLRT est effectu\IeC {\'e}.}}}{87}{figure.7.8}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Si l'allongement est valid\IeC {\'e}, $s_3$ est d\IeC {\'e}finitivement int\IeC {\'e}gr\IeC {\'e}.}}}{87}{figure.7.8}} -\@writefile{loa}{\contentsline {algocf}{\numberline {4}{\ignorespaces Initialisations du mod\IeC {\`e}le PI-PD, en m\IeC {\'e}moire du GPU.}}{88}{algocfline.4}} -\newlabel{algo-lniv-init}{{4}{88}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{algocfline.4}{}} +\newlabel{cx}{{7.9}{87}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{equation.7.3.9}{}} +\newlabel{cx2}{{7.10}{87}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{equation.7.3.10}{}} +\@writefile{loa}{\contentsline {algocf}{\numberline {4}{\ignorespaces Initialisations du mod\IeC {\`e}le PI-PD, en m\IeC {\'e}moire du GPU.}}{87}{algocfline.4}} +\newlabel{algo-lniv-init}{{4}{87}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{algocfline.4}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.8}{\ignorespaces Exemple d'application du proc\IeC {\'e}d\IeC {\'e} d'allongement \IeC {\`a} une isoline comprenant initialement 2 segments. la longueur des segments est $a=5$. Le proc\IeC {\'e}d\IeC {\'e} se r\IeC {\'e}p\IeC {\`e}te jusqu'\IeC {\`a} ce que le test GLRT \IeC {\'e}choue.}}{88}{figure.7.8}} +\newlabel{fig-lniv-pipd}{{7.8}{88}{Exemple d'application du procédé d'allongement à une isoline comprenant initialement 2 segments. la longueur des segments est $a=5$. Le procédé se répète jusqu'à ce que le test GLRT échoue}{figure.7.8}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Isoline avec 2 segments $s_1$ et $s_2$ d\IeC {\'e}j\IeC {\`a} valid\IeC {\'e}s.}}}{88}{figure.7.8}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {La direction de $s_3$ est l'\IeC {\'e}l\IeC {\'e}ment $(i_2,j_2)$ de $I_{\Theta }$.}}}{88}{figure.7.8}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Le motif de $s_3$ est lu dans $p_5$ et appliqu\IeC {\'e} en $(i_2,j_2)$. $C_x$ et $C_{x^2}$ sont donn\IeC {\'e}es par $I_{\Sigma }(i_2,j_2)$ et le test GLRT est effectu\IeC {\'e}.}}}{88}{figure.7.8}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Si l'allongement est valid\IeC {\'e}, $s_3$ est d\IeC {\'e}finitivement int\IeC {\'e}gr\IeC {\'e}.}}}{88}{figure.7.8}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.3.3}Mod\IeC {\`e}le PI-PD hybride}{88}{subsection.7.3.3}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.9}{\ignorespaces Situation de la r\IeC {\'e}gion servant \IeC {\`a} illustrer le comportant du mod\IeC {\`e}le PI-PD dans les zones \IeC {\`a} faible pente (LSR).}}{88}{figure.7.9}} -\newlabel{fig-lniv-lsr1}{{7.9}{88}{Situation de la région servant à illustrer le comportant du modèle PI-PD dans les zones à faible pente (LSR)}{figure.7.9}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence non bruit\IeC {\'e}e.}}}{88}{figure.7.9}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {La r\IeC {\'e}gion de 11$\times $11 pixels \IeC {\'e}tudi\IeC {\'e}e.}}}{88}{figure.7.9}} \@writefile{loa}{\contentsline {algocf}{\numberline {5}{\ignorespaces \texttt {kernel\_precomp()} : g\IeC {\'e}n\IeC {\'e}ration des matrices $I_{\Theta }$ et $I_{\Sigma }$.}}{89}{algocfline.5}} \newlabel{algo-lniv-precomp}{{5}{89}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{algocfline.5}{}} -\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.3.1}Le d\IeC {\'e}tecteur de zone \IeC {\`a} faible pente}{89}{subsubsection.7.3.3.1}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {7.3.3.1}Le d\IeC {\'e}tecteur de bords}{89}{subsubsection.7.3.3.1}} \@writefile{loa}{\contentsline {algocf}{\numberline {6}{\ignorespaces \texttt {kernel\_PIPD()} : gestion du processus d'allongement.}}{90}{algocfline.6}} \newlabel{algo-lniv-pipd}{{6}{90}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{algocfline.6}{}} -\newlabel{GLRT2}{{7.11}{90}{Le détecteur de zone à faible pente\relax }{equation.7.3.11}{}} -\newlabel{fig-lniv-lsr-tirages-a}{{7.10(a)}{91}{Subfigure 7 7.10(a)\relax }{subfigure.7.10.1}{}} -\newlabel{sub@fig-lniv-lsr-tirages-a}{{(a)}{91}{Subfigure 7 7.10(a)\relax }{subfigure.7.10.1}{}} -\newlabel{fig-lniv-lsr-tirages-b}{{7.10(b)}{91}{Subfigure 7 7.10(b)\relax }{subfigure.7.10.2}{}} -\newlabel{sub@fig-lniv-lsr-tirages-b}{{(b)}{91}{Subfigure 7 7.10(b)\relax }{subfigure.7.10.2}{}} -\newlabel{fig-lniv-lsr-tirages-c}{{7.10(c)}{91}{Subfigure 7 7.10(c)\relax }{subfigure.7.10.3}{}} -\newlabel{sub@fig-lniv-lsr-tirages-c}{{(c)}{91}{Subfigure 7 7.10(c)\relax }{subfigure.7.10.3}{}} -\newlabel{fig-lniv-lsr-tirages-d}{{7.10(d)}{91}{Subfigure 7 7.10(d)\relax }{subfigure.7.10.4}{}} -\newlabel{sub@fig-lniv-lsr-tirages-d}{{(d)}{91}{Subfigure 7 7.10(d)\relax }{subfigure.7.10.4}{}} -\newlabel{fig-lniv-lsr-tirages-e}{{7.10(e)}{91}{Subfigure 7 7.10(e)\relax }{subfigure.7.10.5}{}} -\newlabel{sub@fig-lniv-lsr-tirages-e}{{(e)}{91}{Subfigure 7 7.10(e)\relax }{subfigure.7.10.5}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.10}{\ignorespaces Comportement du mod\IeC {\`e}le PI-PD dans les zones de faible et \IeC {\`a} forte pente. On constate un manque de robustesse dans les zones \IeC {\`a} faible pente : les directions ne sont pas reproduites d'un tirage \IeC {\`a} l'autre, contrairement \IeC {\`a} celles de la zone de transition.}}{91}{figure.7.10}} -\newlabel{fig-lniv-lsr-tirages}{{7.10}{91}{Comportement du modèle PI-PD dans les zones de faible et à forte pente. On constate un manque de robustesse dans les zones à faible pente : les directions ne sont pas reproduites d'un tirage à l'autre, contrairement à celles de la zone de transition}{figure.7.10}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence.}}}{91}{figure.7.10}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }1$}}}{91}{figure.7.10}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }2$}}}{91}{figure.7.10}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Directions d\IeC {\'e}termin\IeC {\'e}es par le PI-PD pour le tirage $n^{\circ }1$}}}{91}{figure.7.10}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Directions d\IeC {\'e}termin\IeC {\'e}e par le PI-PD pour le tirage $n^{\circ }2$}}}{91}{figure.7.10}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.11}{\ignorespaces Motif de d\IeC {\'e}tection des zones \IeC {\`a} faible pente, pour le cas $\Theta =\Theta _4=45^{\circ }$. L'\IeC {\'e}l\IeC {\'e}vation des pixels permet juste de les distinguer selon 3 classes : l'\IeC {\'e}l\IeC {\'e}vation 1 est associ\IeC {\'e}e aux pixels de la r\IeC {\'e}gion $T$, l'\IeC {\'e}l\IeC {\'e}vation 0.5 est associ\IeC {\'e}e \IeC {\`a} ceux de la r\IeC {\'e}gion $B$ et l'\IeC {\'e}l\IeC {\'e}vation 0 d\IeC {\'e}signe les pixels n'intervenant pas dans la d\IeC {\'e}tection.}}{92}{figure.7.11}} -\newlabel{fig-lniv-detecteur}{{7.11}{92}{Motif de détection des zones à faible pente, pour le cas $\Theta =\Theta _4=45^{\circ }$. L'élévation des pixels permet juste de les distinguer selon 3 classes : l'élévation 1 est associée aux pixels de la région $T$, l'élévation 0.5 est associée à ceux de la région $B$ et l'élévation 0 désigne les pixels n'intervenant pas dans la détection}{figure.7.11}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {7.12}{\ignorespaces Classification des pixels d'une image bruit\IeC {\'e}e, pour une valeur de seuil $T2=2$ du d\IeC {\'e}tecteur. (b) Les pixels en noir sont ceux \IeC {\`a} qui le PI-PD sera appliqu\IeC {\'e}. Les pixels en blancs se verront appliquer une moyenne sur tout ou partie du voisinage.}}{92}{figure.7.12}} -\newlabel{fig-lniv-classification}{{7.12}{92}{Classification des pixels d'une image bruitée, pour une valeur de seuil $T2=2$ du détecteur. (b) Les pixels en noir sont ceux à qui le PI-PD sera appliqué. Les pixels en blancs se verront appliquer une moyenne sur tout ou partie du voisinage}{figure.7.12}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image bruit\IeC {\'e}e}}}{92}{figure.7.12}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Classification des pixels. }}}{92}{figure.7.12}} -\@writefile{toc}{\contentsline {section}{\numberline {7.4}R\IeC {\'e}sultats}{92}{section.7.4}} +\newlabel{GLRT2}{{7.11}{90}{Le détecteur de bords\relax }{equation.7.3.11}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.9}{\ignorespaces Situation de la r\IeC {\'e}gion servant \IeC {\`a} illustrer le comportant du mod\IeC {\`e}le PI-PD dans les zones \IeC {\`a} faible pente (LSR).}}{91}{figure.7.9}} +\newlabel{fig-lniv-lsr1}{{7.9}{91}{Situation de la région servant à illustrer le comportant du modèle PI-PD dans les zones à faible pente (LSR)}{figure.7.9}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence non bruit\IeC {\'e}e.}}}{91}{figure.7.9}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {La r\IeC {\'e}gion de 11$\times $11 pixels \IeC {\'e}tudi\IeC {\'e}e.}}}{91}{figure.7.9}} \citation{BuadesCM06} -\@writefile{lof}{\contentsline {figure}{\numberline {7.13}{\ignorespaces Comparaison des rendus des traitements compar\IeC {\'e}s. Rang\IeC {\'e}e du haut : les images compl\IeC {\`e}tes. Rang\IeC {\'e}e du bas : Zooms sur une zone de l'\IeC {\'\i }mage au dessus.}}{93}{figure.7.13}} -\newlabel{fig-lniv-exempleresultat}{{7.13}{93}{Comparaison des rendus des traitements comparés. Rangée du haut : les images complètes. Rangée du bas : Zooms sur une zone de l'ímage au dessus}{figure.7.13}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image \textit {airplane} bruit\IeC {\'e}e.}}}{93}{figure.7.13}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par moyenneur 5$\times $5.}}}{93}{figure.7.13}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par PI-PD hybride avec $a=5$, $q=5$, $T_{max}=2$ et $T2_{max}=2$.}}}{93}{figure.7.13}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par BM3D.}}}{93}{figure.7.13}} +\newlabel{fig-lniv-lsr-tirages-a}{{7.10(a)}{92}{Subfigure 7 7.10(a)\relax }{subfigure.7.10.1}{}} +\newlabel{sub@fig-lniv-lsr-tirages-a}{{(a)}{92}{Subfigure 7 7.10(a)\relax }{subfigure.7.10.1}{}} +\newlabel{fig-lniv-lsr-tirages-b}{{7.10(b)}{92}{Subfigure 7 7.10(b)\relax }{subfigure.7.10.2}{}} +\newlabel{sub@fig-lniv-lsr-tirages-b}{{(b)}{92}{Subfigure 7 7.10(b)\relax }{subfigure.7.10.2}{}} +\newlabel{fig-lniv-lsr-tirages-c}{{7.10(c)}{92}{Subfigure 7 7.10(c)\relax }{subfigure.7.10.3}{}} +\newlabel{sub@fig-lniv-lsr-tirages-c}{{(c)}{92}{Subfigure 7 7.10(c)\relax }{subfigure.7.10.3}{}} +\newlabel{fig-lniv-lsr-tirages-d}{{7.10(d)}{92}{Subfigure 7 7.10(d)\relax }{subfigure.7.10.4}{}} +\newlabel{sub@fig-lniv-lsr-tirages-d}{{(d)}{92}{Subfigure 7 7.10(d)\relax }{subfigure.7.10.4}{}} +\newlabel{fig-lniv-lsr-tirages-e}{{7.10(e)}{92}{Subfigure 7 7.10(e)\relax }{subfigure.7.10.5}{}} +\newlabel{sub@fig-lniv-lsr-tirages-e}{{(e)}{92}{Subfigure 7 7.10(e)\relax }{subfigure.7.10.5}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.10}{\ignorespaces Comportement du mod\IeC {\`e}le PI-PD dans les zones de faible et \IeC {\`a} forte pente. On constate un manque de robustesse dans les zones \IeC {\`a} faible pente : les directions ne sont pas reproduites d'un tirage \IeC {\`a} l'autre, contrairement \IeC {\`a} celles de la zone de transition.}}{92}{figure.7.10}} +\newlabel{fig-lniv-lsr-tirages}{{7.10}{92}{Comportement du modèle PI-PD dans les zones de faible et à forte pente. On constate un manque de robustesse dans les zones à faible pente : les directions ne sont pas reproduites d'un tirage à l'autre, contrairement à celles de la zone de transition}{figure.7.10}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence.}}}{92}{figure.7.10}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }1$}}}{92}{figure.7.10}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }2$}}}{92}{figure.7.10}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Directions d\IeC {\'e}termin\IeC {\'e}es par le PI-PD pour le tirage $n^{\circ }1$}}}{92}{figure.7.10}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Directions d\IeC {\'e}termin\IeC {\'e}e par le PI-PD pour le tirage $n^{\circ }2$}}}{92}{figure.7.10}} +\@writefile{toc}{\contentsline {section}{\numberline {7.4}R\IeC {\'e}sultats}{92}{section.7.4}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.11}{\ignorespaces Motif de d\IeC {\'e}tection des zones \IeC {\`a} faible pente, pour le cas $\Theta =\Theta _4=45^{\circ }$. L'\IeC {\'e}l\IeC {\'e}vation des pixels permet juste de les distinguer selon 3 classes : l'\IeC {\'e}l\IeC {\'e}vation 1 est associ\IeC {\'e}e aux pixels de la r\IeC {\'e}gion $T$, l'\IeC {\'e}l\IeC {\'e}vation 0.5 est associ\IeC {\'e}e \IeC {\`a} ceux de la r\IeC {\'e}gion $B$ et l'\IeC {\'e}l\IeC {\'e}vation 0 d\IeC {\'e}signe les pixels n'intervenant pas dans la d\IeC {\'e}tection.}}{93}{figure.7.11}} +\newlabel{fig-lniv-detecteur}{{7.11}{93}{Motif de détection des zones à faible pente, pour le cas $\Theta =\Theta _4=45^{\circ }$. L'élévation des pixels permet juste de les distinguer selon 3 classes : l'élévation 1 est associée aux pixels de la région $T$, l'élévation 0.5 est associée à ceux de la région $B$ et l'élévation 0 désigne les pixels n'intervenant pas dans la détection}{figure.7.11}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.12}{\ignorespaces Classification des pixels d'une image bruit\IeC {\'e}e, pour une valeur de seuil $T2=2$ du d\IeC {\'e}tecteur. (b) Les pixels en noir sont ceux \IeC {\`a} qui le PI-PD sera appliqu\IeC {\'e}. Les pixels gris se verront appliquer une moyenne sur tout ou partie du voisinage.}}{93}{figure.7.12}} +\newlabel{fig-lniv-classification}{{7.12}{93}{Classification des pixels d'une image bruitée, pour une valeur de seuil $T2=2$ du détecteur. (b) Les pixels en noir sont ceux à qui le PI-PD sera appliqué. Les pixels gris se verront appliquer une moyenne sur tout ou partie du voisinage}{figure.7.12}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image bruit\IeC {\'e}e}}}{93}{figure.7.12}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Classification des pixels. }}}{93}{figure.7.12}} +\@writefile{lof}{\contentsline {figure}{\numberline {7.13}{\ignorespaces Comparaison des rendus des traitements compar\IeC {\'e}s. Rang\IeC {\'e}e du haut : les images compl\IeC {\`e}tes. Rang\IeC {\'e}e du bas : Zooms sur une zone de l'\IeC {\'\i }mage au dessus.}}{94}{figure.7.13}} +\newlabel{fig-lniv-exempleresultat}{{7.13}{94}{Comparaison des rendus des traitements comparés. Rangée du haut : les images complètes. Rangée du bas : Zooms sur une zone de l'ímage au dessus}{figure.7.13}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image \textit {airplane} bruit\IeC {\'e}e.}}}{94}{figure.7.13}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par moyenneur 5$\times $5.}}}{94}{figure.7.13}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par PI-PD hybride avec $a=5$, $q=5$, $T_{max}=2$ et $T2_{max}=2$.}}}{94}{figure.7.13}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par BM3D.}}}{94}{figure.7.13}} \@writefile{toc}{\contentsline {section}{\numberline {7.5}Extension aux images couleurs}{94}{section.7.5}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.5.1}Expression du crit\IeC {\`e}re}{94}{subsection.7.5.1}} \newlabel{eqlv0rgb}{{7.12}{94}{Expression du critère\relax }{equation.7.5.12}{}} @@ -630,8 +631,8 @@ \citation{psnrhvsm} \citation{tid2008a} \newlabel{eqlv1rgb}{{7.16}{95}{Expression du critère\relax }{equation.7.5.16}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}R\IeC {\'e}sultats}{95}{subsection.7.5.2}} -\newlabel{fig-lniv-tid2008ref}{{7.5.2}{96}{Résultats\relax }{subfigure.7.14.25}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}R\IeC {\'e}sultats - analyse}{95}{subsection.7.5.2}} +\newlabel{fig-lniv-tid2008ref}{{7.5.2}{96}{Résultats - analyse\relax }{subfigure.7.14.25}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.14}{\ignorespaces Images non bruit\IeC {\'e}es de la base tid2008.}}{96}{figure.7.14}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {I01}}}{96}{figure.7.14}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {I02}}}{96}{figure.7.14}} @@ -658,8 +659,7 @@ \@writefile{lof}{\contentsline {subfigure}{\numberline{(w)}{\ignorespaces {I23}}}{96}{figure.7.14}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(x)}{\ignorespaces {I24}}}{96}{figure.7.14}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(y)}{\ignorespaces {I25}}}{96}{figure.7.14}} -\newlabel{fig-lnivrgb-ex}{{7.5.2}{96}{Résultats\relax }{figure.7.14}{}} -\citation{perrotlniv} +\newlabel{fig-lnivrgb-ex}{{7.5.2}{97}{Résultats - analyse\relax }{figure.7.14}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.15}{\ignorespaces Exemples de r\IeC {\'e}sultat de traitement par PI-PD RVB et par CBM3D pour deux images de la base tid2008 (une image naturelle et l'image de synth\IeC {\`e}se). Il peut \IeC {\^e}tre n\IeC {\'e}cessaire de zoomer sur le document num\IeC {\'e}rique pour visualiser les d\IeC {\'e}tails.}}{97}{figure.7.15}} \newlabel{fig-lnivgrb-ex}{{7.15}{97}{Exemples de résultat de traitement par PI-PD RVB et par CBM3D pour deux images de la base tid2008 (une image naturelle et l'image de synthèse). Il peut être nécessaire de zoomer sur le document numérique pour visualiser les détails}{figure.7.15}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image I09 bruit\IeC {\'e}e, PSNR-HVS-M=23,70~dB.}}}{97}{figure.7.15}} @@ -668,105 +668,106 @@ \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image I25 bruit\IeC {\'e}e, PSNR-HVS-M=24,46~dB.}}}{97}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Image I25 filtr\IeC {\'e}e par PI-PD, PSNR-HVS-M=24,62~dB.}}}{97}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {Image I25 filtr\IeC {\'e}e par CBM3D, PSNR-HVS-M=31,09~dB.}}}{97}{figure.7.15}} -\@writefile{toc}{\contentsline {section}{\numberline {7.6}Conclusion}{97}{section.7.6}} -\@writefile{loa}{\contentsline {algocf}{\numberline {7}{\ignorespaces D\IeC {\'e}tecteur de zones \IeC {\`a} faible pente (LSR) \texttt {kernel\_LSR\_detector()}}}{98}{algocfline.7}} -\newlabel{algo-lniv-detecteur}{{7}{98}{Le détecteur de zone à faible pente\relax }{algocfline.7}{}} -\@writefile{lot}{\contentsline {table}{\numberline {7.1}{\ignorespaces Temps de calcul et de transfert des impl\IeC {\'e}mentations compar\IeC {\'e}es. }}{98}{table.7.1}} -\newlabel{tab-lniv-chronos}{{7.1}{98}{Temps de calcul et de transfert des implémentations comparées. \relax }{table.7.1}{}} -\@writefile{lot}{\contentsline {table}{\numberline {7.2}{\ignorespaces Comparaison image par image de la qualit\IeC {\'e} de d\IeC {\'e}bruitage des filtres PI-LD et PI-PD hybride propos\IeC {\'e} par rapport \IeC {\`a} BM3D pris comme r\IeC {\'e}f\IeC {\'e}rence de qualit\IeC {\'e} et \IeC {\`a} un moyenneur GPU 5$\times $5 pris comme r\IeC {\'e}f\IeC {\'e}rence de rapidit\IeC {\'e}. Les param\IeC {\`e}tres du PI-LD/PI-PD sont $n=5$, $l=25$, $T_{max}=1$ et $T2_{max}=2$. La colonne 'Bruit\IeC {\'e}e' donne les mesures relatives \IeC {\`a} l'image d'entr\IeC {\'e}e corrompue par un bruit gaussien de moyenne nulle et d'\IeC {\'e}cart type $\sigma =25$. PI-LD s'ex\IeC {\'e}cute en 35~ms, PI-PD en 7,3~ms et BM3D en 4,3~s.}}{99}{table.7.2}} -\newlabel{tab-lniv-results}{{7.2}{99}{Comparaison image par image de la qualité de débruitage des filtres PI-LD et PI-PD hybride proposé par rapport à BM3D pris comme référence de qualité et à un moyenneur GPU 5$\times $5 pris comme référence de rapidité. Les paramètres du PI-LD/PI-PD sont $n=5$, $l=25$, $T_{max}=1$ et $T2_{max}=2$. La colonne 'Bruitée' donne les mesures relatives à l'image d'entrée corrompue par un bruit gaussien de moyenne nulle et d'écart type $\sigma =25$. PI-LD s'exécute en 35~ms, PI-PD en 7,3~ms et BM3D en 4,3~s}{table.7.2}{}} -\@writefile{lot}{\contentsline {table}{\numberline {7.3}{\ignorespaces Comparaison image par image de la qualit\IeC {\'e} de d\IeC {\'e}bruitage du filtre PI-PD RVB propos\IeC {\'e} par rapport \IeC {\`a} BM3D pris comme r\IeC {\'e}f\IeC {\'e}rence de qualit\IeC {\'e}. Les param\IeC {\`e}tres du PI-PD sont $n=4$, $l=48$, $T_{rvb-max}=5$. La colonne 'noisy' donne les mesures relatives \IeC {\`a} l'image d'entr\IeC {\'e}e corrompue par tirage de bruit gaussien sur chaque canal ( moyenne nulle, \IeC {\'e}cart type $\sigma =25$).}}{100}{table.7.3}} -\newlabel{tab-lniv-rvb}{{7.3}{100}{Comparaison image par image de la qualité de débruitage du filtre PI-PD RVB proposé par rapport à BM3D pris comme référence de qualité. Les paramètres du PI-PD sont $n=4$, $l=48$, $T_{rvb-max}=5$. La colonne 'noisy' donne les mesures relatives à l'image d'entrée corrompue par tirage de bruit gaussien sur chaque canal ( moyenne nulle, écart type $\sigma =25$)}{table.7.3}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {8}Le filtre m\IeC {\'e}dian sur GPU}{101}{chapter.8}} +\citation{perrotlniv} +\@writefile{toc}{\contentsline {section}{\numberline {7.6}Conclusion}{98}{section.7.6}} +\@writefile{loa}{\contentsline {algocf}{\numberline {7}{\ignorespaces D\IeC {\'e}tecteur de zones \IeC {\`a} faible pente (LSR) \texttt {kernel\_LSR\_detector()}}}{99}{algocfline.7}} +\newlabel{algo-lniv-detecteur}{{7}{99}{Le détecteur de bords\relax }{algocfline.7}{}} +\@writefile{lot}{\contentsline {table}{\numberline {7.1}{\ignorespaces Temps de calcul et de transfert des impl\IeC {\'e}mentations compar\IeC {\'e}es. }}{99}{table.7.1}} +\newlabel{tab-lniv-chronos}{{7.1}{99}{Temps de calcul et de transfert des implémentations comparées. \relax }{table.7.1}{}} +\@writefile{lot}{\contentsline {table}{\numberline {7.2}{\ignorespaces Comparaison image par image de la qualit\IeC {\'e} de d\IeC {\'e}bruitage des filtres PI-LD et PI-PD hybride propos\IeC {\'e} par rapport \IeC {\`a} BM3D pris comme r\IeC {\'e}f\IeC {\'e}rence de qualit\IeC {\'e} et \IeC {\`a} un moyenneur GPU 5$\times $5 pris comme r\IeC {\'e}f\IeC {\'e}rence de rapidit\IeC {\'e}. Les param\IeC {\`e}tres du PI-LD/PI-PD sont $n=5$, $l=25$, $T_{max}=1$ et $T2_{max}=2$. La colonne 'Bruit\IeC {\'e}e' donne les mesures relatives \IeC {\`a} l'image d'entr\IeC {\'e}e corrompue par un bruit gaussien de moyenne nulle et d'\IeC {\'e}cart type $\sigma =25$. PI-LD s'ex\IeC {\'e}cute en 35~ms, PI-PD en 7,3~ms et BM3D en 4,3~s.}}{100}{table.7.2}} +\newlabel{tab-lniv-results}{{7.2}{100}{Comparaison image par image de la qualité de débruitage des filtres PI-LD et PI-PD hybride proposé par rapport à BM3D pris comme référence de qualité et à un moyenneur GPU 5$\times $5 pris comme référence de rapidité. Les paramètres du PI-LD/PI-PD sont $n=5$, $l=25$, $T_{max}=1$ et $T2_{max}=2$. La colonne 'Bruitée' donne les mesures relatives à l'image d'entrée corrompue par un bruit gaussien de moyenne nulle et d'écart type $\sigma =25$. PI-LD s'exécute en 35~ms, PI-PD en 7,3~ms et BM3D en 4,3~s}{table.7.2}{}} +\@writefile{lot}{\contentsline {table}{\numberline {7.3}{\ignorespaces Comparaison image par image de la qualit\IeC {\'e} de d\IeC {\'e}bruitage du filtre PI-PD RVB propos\IeC {\'e} par rapport \IeC {\`a} BM3D pris comme r\IeC {\'e}f\IeC {\'e}rence de qualit\IeC {\'e}. Les param\IeC {\`e}tres du PI-PD sont $n=4$, $l=48$, $T_{rvb-max}=5$. La colonne 'noisy' donne les mesures relatives \IeC {\`a} l'image d'entr\IeC {\'e}e corrompue par tirage de bruit gaussien sur chaque canal ( moyenne nulle, \IeC {\'e}cart type $\sigma =25$).}}{101}{table.7.3}} +\newlabel{tab-lniv-rvb}{{7.3}{101}{Comparaison image par image de la qualité de débruitage du filtre PI-PD RVB proposé par rapport à BM3D pris comme référence de qualité. Les paramètres du PI-PD sont $n=4$, $l=48$, $T_{rvb-max}=5$. La colonne 'noisy' donne les mesures relatives à l'image d'entrée corrompue par tirage de bruit gaussien sur chaque canal ( moyenne nulle, écart type $\sigma =25$)}{table.7.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}Le filtre m\IeC {\'e}dian sur GPU}{103}{chapter.8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{ch-median}{{8}{101}{Le filtre médian sur GPU\label {ch-median}\relax }{chapter.8}{}} -\@writefile{toc}{\contentsline {section}{\numberline {8.1}Introduction}{101}{section.8.1}} -\@writefile{toc}{\contentsline {section}{\numberline {8.2}Les transferts de donn\IeC {\'e}es}{101}{section.8.2}} -\@writefile{loa}{\contentsline {algocf}{\numberline {8}{\ignorespaces Gestion des transferts m\IeC {\'e}moire vers et depuis le GPU.}}{102}{algocfline.8}} -\newlabel{algo-median-memcpy}{{8}{102}{Les transferts de données\relax }{algocfline.8}{}} -\@writefile{lot}{\contentsline {table}{\numberline {8.1}{\ignorespaces Temps de transfert vers et depuis le GPU, en fonction de la dimension de l'image et de la profondeur des niveaux de gris. La colonne ``M\IeC {\'e}moire globale'' donne les temps mesur\IeC {\'e}s lorsque cette seule m\IeC {\'e}moire est employ\IeC {\'e}e.}}{102}{table.8.1}} -\newlabel{tab-median-memcpy}{{8.1}{102}{Temps de transfert vers et depuis le GPU, en fonction de la dimension de l'image et de la profondeur des niveaux de gris. La colonne ``Mémoire globale'' donne les temps mesurés lorsque cette seule mémoire est employée}{table.8.1}{}} +\newlabel{ch-median}{{8}{103}{Le filtre médian sur GPU\label {ch-median}\relax }{chapter.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.1}Introduction}{103}{section.8.1}} +\@writefile{toc}{\contentsline {section}{\numberline {8.2}Les transferts de donn\IeC {\'e}es}{103}{section.8.2}} +\@writefile{loa}{\contentsline {algocf}{\numberline {8}{\ignorespaces Gestion des transferts m\IeC {\'e}moire vers et depuis le GPU.}}{104}{algocfline.8}} +\newlabel{algo-median-memcpy}{{8}{104}{Les transferts de données\relax }{algocfline.8}{}} +\@writefile{lot}{\contentsline {table}{\numberline {8.1}{\ignorespaces Temps de transfert vers et depuis le GPU, en fonction de la dimension de l'image et de la profondeur des niveaux de gris. La colonne ``M\IeC {\'e}moire globale'' donne les temps mesur\IeC {\'e}s lorsque cette seule m\IeC {\'e}moire est employ\IeC {\'e}e.}}{104}{table.8.1}} +\newlabel{tab-median-memcpy}{{8.1}{104}{Temps de transfert vers et depuis le GPU, en fonction de la dimension de l'image et de la profondeur des niveaux de gris. La colonne ``Mémoire globale'' donne les temps mesurés lorsque cette seule mémoire est employée}{table.8.1}{}} \citation{medianggems5} -\@writefile{toc}{\contentsline {section}{\numberline {8.3}Utilisation des registres}{103}{section.8.3}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}La s\IeC {\'e}lection de la valeur m\IeC {\'e}diane}{103}{subsection.8.3.1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Masquage des latences}{104}{subsection.8.3.2}} -\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Application de la s\IeC {\'e}lection de m\IeC {\'e}diane par oubli \IeC {\`a} une fen\IeC {\^e}tre de $3\times 3$ pixels. }}{105}{figure.8.1}} -\newlabel{fig-median-ffs3-a}{{8.1}{105}{Application de la sélection de médiane par oubli à une fenêtre de $3\times 3$ pixels. \relax }{figure.8.1}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {8.2}{\ignorespaces Premi\IeC {\`e}re \IeC {\'e}tape d'identification des extrema pour un filtre 5$\times $5, avec maximisation de l'ILP (Instruction Level Parallelism) pour l'identification des extrema.}}{105}{figure.8.2}} -\newlabel{fig-median-ffs3-b}{{8.2}{105}{Première étape d'identification des extrema pour un filtre 5$\times $5, avec maximisation de l'ILP (Instruction Level Parallelism) pour l'identification des extrema}{figure.8.2}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {8.3}{\ignorespaces Gestion des \IeC {\'e}l\IeC {\'e}ments communs aux fen\IeC {\^e}tres de deux pixels centraux voisins dans un filtre m\IeC {\'e}dian 5$\times $5. La liste initiale comprend les 14 premiers \IeC {\'e}l\IeC {\'e}ments communs, puis les 7 premi\IeC {\`e}res \IeC {\'e}tapes de s\IeC {\'e}lection sont conduites en commun avant que les 5 derni\IeC {\`e}res le soient en parall\IeC {\`e}le, mais de mani\IeC {\`e}re disjointe.}}{106}{figure.8.3}} -\newlabel{fig-median-overlap}{{8.3}{106}{Gestion des éléments communs aux fenêtres de deux pixels centraux voisins dans un filtre médian 5$\times $5. La liste initiale comprend les 14 premiers éléments communs, puis les 7 premières étapes de sélection sont conduites en commun avant que les 5 dernières le soient en parallèle, mais de manière disjointe}{figure.8.3}{}} -\newlabel{lst-median3}{{8.1}{107}{Kernel réalisant un filtre médian 3$\times $3 en registres}{lstlisting.8.1}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {8.1}Kernel r\IeC {\'e}alisant un filtre m\IeC {\'e}dian 3$\times $3 en registres.}{107}{lstlisting.8.1}} -\@writefile{lof}{\contentsline {figure}{\numberline {8.4}{\ignorespaces Comparaison des d\IeC {\'e}bits (MP/s) atteints par notre impl\IeC {\'e}mentation not\IeC {\'e}e PRMF, avec les principales solutions de r\IeC {\'e}f\IeC {\'e}rence. De gauche \IeC {\`a} droite : PCMF, BVM, PRMF, ArrayFire (impossible en 4096$\times $4096)}}{108}{figure.8.4}} -\newlabel{fig-median-comp}{{8.4}{108}{Comparaison des débits (MP/s) atteints par notre implémentation notée PRMF, avec les principales solutions de référence. De gauche à droite : PCMF, BVM, PRMF, ArrayFire (impossible en 4096$\times $4096)\relax }{figure.8.4}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {image 512$\times $512 pixels.}}}{108}{figure.8.4}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {image 4096$\times $4096 pixels.}}}{108}{figure.8.4}} -\@writefile{toc}{\contentsline {section}{\numberline {8.4}R\IeC {\'e}sultats}{108}{section.8.4}} -\@writefile{lot}{\contentsline {table}{\numberline {8.2}{\ignorespaces Pourcentage du temps d'ex\IeC {\'e}cution pris par les transferts de donn\IeC {\'e}es en fonction de la taille de fen\IeC {\^e}tre du filtre, pour les profondeurs 8 et 16 bits sur GPU C2070.}}{108}{table.8.2}} -\newlabel{tab-median-coutcpy}{{8.2}{108}{Pourcentage du temps d'exécution pris par les transferts de données en fonction de la taille de fenêtre du filtre, pour les profondeurs 8 et 16 bits sur GPU C2070}{table.8.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {8.3}Utilisation des registres}{105}{section.8.3}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}La s\IeC {\'e}lection de la valeur m\IeC {\'e}diane}{105}{subsection.8.3.1}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Masquage des latences}{106}{subsection.8.3.2}} +\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Application de la s\IeC {\'e}lection de m\IeC {\'e}diane par oubli \IeC {\`a} une fen\IeC {\^e}tre de $3\times 3$ pixels. }}{107}{figure.8.1}} +\newlabel{fig-median-ffs3-a}{{8.1}{107}{Application de la sélection de médiane par oubli à une fenêtre de $3\times 3$ pixels. \relax }{figure.8.1}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {8.2}{\ignorespaces Premi\IeC {\`e}re \IeC {\'e}tape d'identification des extrema pour un filtre 5$\times $5, avec maximisation de l'ILP (Instruction Level Parallelism) pour l'identification des extrema.}}{107}{figure.8.2}} +\newlabel{fig-median-ffs3-b}{{8.2}{107}{Première étape d'identification des extrema pour un filtre 5$\times $5, avec maximisation de l'ILP (Instruction Level Parallelism) pour l'identification des extrema}{figure.8.2}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {8.3}{\ignorespaces Gestion des \IeC {\'e}l\IeC {\'e}ments communs aux fen\IeC {\^e}tres de deux pixels centraux voisins dans un filtre m\IeC {\'e}dian 5$\times $5. La liste initiale comprend les 14 premiers \IeC {\'e}l\IeC {\'e}ments communs, puis les 7 premi\IeC {\`e}res \IeC {\'e}tapes de s\IeC {\'e}lection sont conduites en commun avant que les 5 derni\IeC {\`e}res le soient en parall\IeC {\`e}le, mais de mani\IeC {\`e}re disjointe.}}{108}{figure.8.3}} +\newlabel{fig-median-overlap}{{8.3}{108}{Gestion des éléments communs aux fenêtres de deux pixels centraux voisins dans un filtre médian 5$\times $5. La liste initiale comprend les 14 premiers éléments communs, puis les 7 premières étapes de sélection sont conduites en commun avant que les 5 dernières le soient en parallèle, mais de manière disjointe}{figure.8.3}{}} +\newlabel{lst-median3}{{8.1}{109}{Kernel réalisant un filtre médian 3$\times $3 en registres}{lstlisting.8.1}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {8.1}Kernel r\IeC {\'e}alisant un filtre m\IeC {\'e}dian 3$\times $3 en registres.}{109}{lstlisting.8.1}} +\@writefile{lof}{\contentsline {figure}{\numberline {8.4}{\ignorespaces Comparaison des d\IeC {\'e}bits (MP/s) atteints par notre impl\IeC {\'e}mentation not\IeC {\'e}e PRMF, avec les principales solutions de r\IeC {\'e}f\IeC {\'e}rence. De gauche \IeC {\`a} droite : PCMF, BVM, PRMF, ArrayFire (impossible en 4096$\times $4096)}}{110}{figure.8.4}} +\newlabel{fig-median-comp}{{8.4}{110}{Comparaison des débits (MP/s) atteints par notre implémentation notée PRMF, avec les principales solutions de référence. De gauche à droite : PCMF, BVM, PRMF, ArrayFire (impossible en 4096$\times $4096)\relax }{figure.8.4}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {image 512$\times $512 pixels.}}}{110}{figure.8.4}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {image 4096$\times $4096 pixels.}}}{110}{figure.8.4}} +\@writefile{toc}{\contentsline {section}{\numberline {8.4}R\IeC {\'e}sultats}{110}{section.8.4}} +\@writefile{lot}{\contentsline {table}{\numberline {8.2}{\ignorespaces Pourcentage du temps d'ex\IeC {\'e}cution pris par les transferts de donn\IeC {\'e}es en fonction de la taille de fen\IeC {\^e}tre du filtre, pour les profondeurs 8 et 16 bits sur GPU C2070.}}{110}{table.8.2}} +\newlabel{tab-median-coutcpy}{{8.2}{110}{Pourcentage du temps d'exécution pris par les transferts de données en fonction de la taille de fenêtre du filtre, pour les profondeurs 8 et 16 bits sur GPU C2070}{table.8.2}{}} \citation{sanchezICASSP12} \citation{perrot2013fine} -\@writefile{lot}{\contentsline {table}{\numberline {8.3}{\ignorespaces Performances des filtres m\IeC {\'e}dians rapides en fonction des tailles d'image et de fen\IeC {\^e}tre du filtre, en variantes 8 et 16 bits de profondeursur GPU C2070.}}{109}{table.8.3}} -\newlabel{tab-median-chronos}{{8.3}{109}{Performances des filtres médians rapides en fonction des tailles d'image et de fenêtre du filtre, en variantes 8 et 16 bits de profondeursur GPU C2070}{table.8.3}{}} -\@writefile{lot}{\contentsline {table}{\numberline {8.4}{\ignorespaces D\IeC {\'e}bits maximum effectifs $T_8$ and $T_{16}$ (en MP/s), respectivement pour les variantes 8 et 16 bits sur C2070.}}{109}{table.8.4}} -\newlabel{tab-median-debitmax}{{8.4}{109}{Débits maximum effectifs $T_8$ and $T_{16}$ (en MP/s), respectivement pour les variantes 8 et 16 bits sur C2070}{table.8.4}{}} +\@writefile{lot}{\contentsline {table}{\numberline {8.3}{\ignorespaces Performances des filtres m\IeC {\'e}dians rapides en fonction des tailles d'image et de fen\IeC {\^e}tre du filtre, en variantes 8 et 16 bits de profondeursur GPU C2070.}}{111}{table.8.3}} +\newlabel{tab-median-chronos}{{8.3}{111}{Performances des filtres médians rapides en fonction des tailles d'image et de fenêtre du filtre, en variantes 8 et 16 bits de profondeursur GPU C2070}{table.8.3}{}} +\@writefile{lot}{\contentsline {table}{\numberline {8.4}{\ignorespaces D\IeC {\'e}bits maximum effectifs $T_8$ and $T_{16}$ (en MP/s), respectivement pour les variantes 8 et 16 bits sur C2070.}}{111}{table.8.4}} +\newlabel{tab-median-debitmax}{{8.4}{111}{Débits maximum effectifs $T_8$ and $T_{16}$ (en MP/s), respectivement pour les variantes 8 et 16 bits sur C2070}{table.8.4}{}} \citation{perrotbookgpu} -\@writefile{toc}{\contentsline {section}{\numberline {8.5}Conclusion}{110}{section.8.5}} +\@writefile{toc}{\contentsline {section}{\numberline {8.5}Conclusion}{112}{section.8.5}} \citation{convolutionsoup} -\@writefile{toc}{\contentsline {chapter}{\numberline {9}Les filtres de convolution sur GPU}{111}{chapter.9}} +\@writefile{toc}{\contentsline {chapter}{\numberline {9}Les filtres de convolution sur GPU}{113}{chapter.9}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{ch-convo}{{9}{111}{Les filtres de convolution sur GPU\label {ch-convo}\relax }{chapter.9}{}} -\@writefile{toc}{\contentsline {section}{\numberline {9.1}Introduction}{111}{section.9.1}} -\@writefile{toc}{\contentsline {section}{\numberline {9.2}Impl\IeC {\'e}mentation g\IeC {\'e}n\IeC {\'e}rique de la convolution non s\IeC {\'e}parable sur GPU}{111}{section.9.2}} -\@writefile{loa}{\contentsline {algocf}{\numberline {9}{\ignorespaces Convolution g\IeC {\'e}n\IeC {\'e}rique sur GPU}}{112}{algocfline.9}} -\newlabel{algo-convo-gene}{{9}{112}{Implémentation générique de la convolution non séparable sur GPU\relax }{algocfline.9}{}} -\newlabel{lst-convo-gene3reg8}{{9.1}{112}{Kernel réalisant la convolution par un masque moyenneur 3$\times $3 dont les coefficients normalisés sont codés \textit {en dur}, dans les registres du GPU}{lstlisting.9.1}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.1}Kernel r\IeC {\'e}alisant la convolution par un masque moyenneur 3$\times $3 dont les coefficients normalis\IeC {\'e}s sont cod\IeC {\'e}s \textit {en dur}, dans les registres du GPU.}{112}{lstlisting.9.1}} -\@writefile{lot}{\contentsline {table}{\numberline {9.1}{\ignorespaces Performances des kernels effectuant la convolution non-s\IeC {\'e}parable sur le mod\IeC {\`e}le du listing \ref {lst-convo-gene3reg8}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} la seule ex\IeC {\'e}cution du kernel. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert. Les valeurs en gras correspondent au traitement de r\IeC {\'e}f\IeC {\'e}rence.}}{113}{table.9.1}} -\newlabel{tab-convo-gene3reg8-2070}{{9.1}{113}{Performances des kernels effectuant la convolution non-séparable sur le modèle du listing \ref {lst-convo-gene3reg8}, sur GPU C2070. Le temps d'exécution correspond à la seule exécution du kernel. Le débit global intègre les temps de transfert. Les valeurs en gras correspondent au traitement de référence}{table.9.1}{}} -\@writefile{lot}{\contentsline {table}{\numberline {9.2}{\ignorespaces Performances des kernels effectuant la convolution non-s\IeC {\'e}parable sur le mod\IeC {\`e}le du listing \ref {lst-convo-gene3reg8}, sur GPU GTX280. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} la seule ex\IeC {\'e}cution du kernel. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert. Les valeurs en gras correspondent au traitement de r\IeC {\'e}f\IeC {\'e}rence.}}{113}{table.9.2}} -\newlabel{tab-convo-gene3reg8-480}{{9.2}{113}{Performances des kernels effectuant la convolution non-séparable sur le modèle du listing \ref {lst-convo-gene3reg8}, sur GPU GTX280. Le temps d'exécution correspond à la seule exécution du kernel. Le débit global intègre les temps de transfert. Les valeurs en gras correspondent au traitement de référence}{table.9.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {9.3}Impl\IeC {\'e}mentation optimis\IeC {\'e}e de la convolution non s\IeC {\'e}parable sur GPU}{113}{section.9.3}} -\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces Multiplicit\IeC {\'e} des implications des pixels de la zone d'int\IeC {\'e}r\IeC {\^e}t d'un thread dans les calculs de convolution. Le nombre de calculs dans lequel est impliqu\IeC {\'e} un pixel est inscrit en son centre. Le premier pixel du paquet, ou pixel de base, est rep\IeC {\'e}r\IeC {\'e} par ses coordonn\IeC {\'e}es $(x, y)$ ; le dernier a pour coordonn\IeC {\'e}es $(x+7,y)$}}{114}{figure.9.1}} -\newlabel{fig-convo-overlap}{{9.1}{114}{Multiplicité des implications des pixels de la zone d'intérêt d'un thread dans les calculs de convolution. Le nombre de calculs dans lequel est impliqué un pixel est inscrit en son centre. Le premier pixel du paquet, ou pixel de base, est repéré par ses coordonnées $(x, y)$ ; le dernier a pour coordonnées $(x+7,y)$\relax }{figure.9.1}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Cas d'un masque de taille 3$\times $3 ($k=1$) o\IeC {\`u} l'on d\IeC {\'e}nombre 6 colonnes centrales, soit 18 pixels de multiplicit\IeC {\'e} maximale 3.}}}{114}{figure.9.1}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Cas d'un masque de taille 5$\times $5 ($k=2$) o\IeC {\`u} l'on d\IeC {\'e}nombre 4 colonnes centrales, soit 20 pixels de multiplicit\IeC {\'e} maximale 5.}}}{114}{figure.9.1}} -\@writefile{lot}{\contentsline {table}{\numberline {9.3}{\ignorespaces Performances des kernels effectuant la convolution non-s\IeC {\'e}parable sur le mod\IeC {\`e}le du listing \ref {lst-convo-8x8pL3}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} la seule ex\IeC {\'e}cution du kernel. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert. Les valeurs en gras correspondent au traitement de r\IeC {\'e}f\IeC {\'e}rence. }}{115}{table.9.3}} -\newlabel{tab-convo-8x8p}{{9.3}{115}{Performances des kernels effectuant la convolution non-séparable sur le modèle du listing \ref {lst-convo-8x8pL3}, sur GPU C2070. Le temps d'exécution correspond à la seule exécution du kernel. Le débit global intègre les temps de transfert. Les valeurs en gras correspondent au traitement de référence. \relax }{table.9.3}{}} -\newlabel{lst-convo-8x8pL3}{{9.2}{115}{Kernel réalisant la convolution par un masque 3$\times $3 dont les coefficients normalisés sont en mémoire constante}{lstlisting.9.2}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.2}Kernel r\IeC {\'e}alisant la convolution par un masque 3$\times $3 dont les coefficients normalis\IeC {\'e}s sont en m\IeC {\'e}moire constante.}{115}{lstlisting.9.2}} -\@writefile{toc}{\contentsline {section}{\numberline {9.4}Cas de la convolution s\IeC {\'e}parable}{117}{section.9.4}} -\newlabel{lst-convo-1Dv}{{9.3}{117}{Kernel réalisant la convolution verticale k$\times $1 avec utilisation de la mémoire partagée}{lstlisting.9.3}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.3}Kernel r\IeC {\'e}alisant la convolution verticale k$\times $1 avec utilisation de la m\IeC {\'e}moire partag\IeC {\'e}e.}{117}{lstlisting.9.3}} -\newlabel{lst-convo-1Dh}{{9.4}{118}{Kernel réalisant la convolution horizontale 1$\times $k avec utilisation de la mémoire partagée}{lstlisting.9.4}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.4}Kernel r\IeC {\'e}alisant la convolution horizontale 1$\times $k avec utilisation de la m\IeC {\'e}moire partag\IeC {\'e}e.}{118}{lstlisting.9.4}} -\@writefile{lot}{\contentsline {table}{\numberline {9.4}{\ignorespaces Performances des kernels effectuant la convolution s\IeC {\'e}parable sur le mod\IeC {\`e}le des listings \ref {lst-convo-1Dv} et \ref {lst-convo-1Dh}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} l'ex\IeC {\'e}cution des 2 kernels. Cette variante pr\IeC {\'e}sente des performances voisines de la solution Nvidia.}}{119}{table.9.4}} -\newlabel{tab-convons-nv}{{9.4}{119}{Performances des kernels effectuant la convolution séparable sur le modèle des listings \ref {lst-convo-1Dv} et \ref {lst-convo-1Dh}, sur GPU C2070. Le temps d'exécution correspond à l'exécution des 2 kernels. Cette variante présente des performances voisines de la solution Nvidia}{table.9.4}{}} -\newlabel{lst-convons-optim}{{9.5}{120}{Kernel réalisant la convolution horizontale optimisée 1$\times $3 sans utilisation de la mémoire partagée}{lstlisting.9.5}{}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.5}Kernel r\IeC {\'e}alisant la convolution horizontale optimis\IeC {\'e}e 1$\times $3 sans utilisation de la m\IeC {\'e}moire partag\IeC {\'e}e.}{120}{lstlisting.9.5}} -\@writefile{lot}{\contentsline {table}{\numberline {9.5}{\ignorespaces Temps de transfert total depuis et vers le GPU, en fonction de la dimension de l'image. Extrait de la table \ref {tab-median-memcpy}.}}{121}{table.9.5}} -\newlabel{tab-convo-memcpy}{{9.5}{121}{Temps de transfert total depuis et vers le GPU, en fonction de la dimension de l'image. Extrait de la table \ref {tab-median-memcpy}}{table.9.5}{}} -\@writefile{lot}{\contentsline {table}{\numberline {9.6}{\ignorespaces Dur\IeC {\'e}e de la copie depuis la m\IeC {\'e}moire globale vers la m\IeC {\'e}moire texture, en fonction de la taille de l'image.}}{121}{table.9.6}} -\newlabel{tab-convons-memcpy}{{9.6}{121}{Durée de la copie depuis la mémoire globale vers la mémoire texture, en fonction de la taille de l'image}{table.9.6}{}} -\@writefile{lot}{\contentsline {table}{\numberline {9.7}{\ignorespaces Performances des kernels effectuant la convolution s\IeC {\'e}parable optimis\IeC {\'e}e sur le mod\IeC {\`e}le des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} l'ex\IeC {\'e}cution des 2 kernels.}}{122}{table.9.7}} -\newlabel{tab-convons-optim}{{9.7}{122}{Performances des kernels effectuant la convolution séparable optimisée sur le modèle des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070. Le temps d'exécution correspond à l'exécution des 2 kernels}{table.9.7}{}} -\@writefile{lot}{\contentsline {table}{\numberline {9.8}{\ignorespaces D\IeC {\'e}bit global en ms (incluant les transferts) des kernels effectuant la convolution s\IeC {\'e}parable sur le mod\IeC {\`e}le des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070.}}{122}{table.9.8}} -\newlabel{tab-convons-tpg}{{9.8}{122}{Débit global en ms (incluant les transferts) des kernels effectuant la convolution séparable sur le modèle des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070}{table.9.8}{}} -\@writefile{toc}{\contentsline {section}{\numberline {9.5}Conclusion}{122}{section.9.5}} -\@writefile{lof}{\contentsline {figure}{\numberline {9.2}{\ignorespaces G\IeC {\'e}n\IeC {\'e}rateur de codes sources pour les filtres GPU rapides.}}{123}{figure.9.2}} -\newlabel{fig-convomed-copie}{{9.2}{123}{Générateur de codes sources pour les filtres GPU rapides}{figure.9.2}{}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {S\IeC {\'e}lection des param\IeC {\`e}tres.}}}{123}{figure.9.2}} -\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {T\IeC {\'e}l\IeC {\'e}chargement des fichiers.}}}{123}{figure.9.2}} -\@writefile{toc}{\contentsline {part}{IV\hspace {1em}Conclusions et perspectives}{125}{part.4}} -\@writefile{toc}{\contentsline {chapter}{\numberline {10}Conclusion g\IeC {\'e}n\IeC {\'e}rale}{127}{chapter.10}} +\newlabel{ch-convo}{{9}{113}{Les filtres de convolution sur GPU\label {ch-convo}\relax }{chapter.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {9.1}Introduction}{113}{section.9.1}} +\@writefile{toc}{\contentsline {section}{\numberline {9.2}Impl\IeC {\'e}mentation g\IeC {\'e}n\IeC {\'e}rique de la convolution non s\IeC {\'e}parable sur GPU}{113}{section.9.2}} +\@writefile{loa}{\contentsline {algocf}{\numberline {9}{\ignorespaces Convolution g\IeC {\'e}n\IeC {\'e}rique sur GPU}}{114}{algocfline.9}} +\newlabel{algo-convo-gene}{{9}{114}{Implémentation générique de la convolution non séparable sur GPU\relax }{algocfline.9}{}} +\newlabel{lst-convo-gene3reg8}{{9.1}{114}{Kernel réalisant la convolution par un masque moyenneur 3$\times $3 dont les coefficients normalisés sont codés \textit {en dur}, dans les registres du GPU}{lstlisting.9.1}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.1}Kernel r\IeC {\'e}alisant la convolution par un masque moyenneur 3$\times $3 dont les coefficients normalis\IeC {\'e}s sont cod\IeC {\'e}s \textit {en dur}, dans les registres du GPU.}{114}{lstlisting.9.1}} +\@writefile{lot}{\contentsline {table}{\numberline {9.1}{\ignorespaces Performances des kernels effectuant la convolution non-s\IeC {\'e}parable sur le mod\IeC {\`e}le du listing \ref {lst-convo-gene3reg8}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} la seule ex\IeC {\'e}cution du kernel. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert. Les valeurs en gras correspondent au traitement de r\IeC {\'e}f\IeC {\'e}rence.}}{115}{table.9.1}} +\newlabel{tab-convo-gene3reg8-2070}{{9.1}{115}{Performances des kernels effectuant la convolution non-séparable sur le modèle du listing \ref {lst-convo-gene3reg8}, sur GPU C2070. Le temps d'exécution correspond à la seule exécution du kernel. Le débit global intègre les temps de transfert. Les valeurs en gras correspondent au traitement de référence}{table.9.1}{}} +\@writefile{lot}{\contentsline {table}{\numberline {9.2}{\ignorespaces Performances des kernels effectuant la convolution non-s\IeC {\'e}parable sur le mod\IeC {\`e}le du listing \ref {lst-convo-gene3reg8}, sur GPU GTX280. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} la seule ex\IeC {\'e}cution du kernel. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert. Les valeurs en gras correspondent au traitement de r\IeC {\'e}f\IeC {\'e}rence.}}{115}{table.9.2}} +\newlabel{tab-convo-gene3reg8-480}{{9.2}{115}{Performances des kernels effectuant la convolution non-séparable sur le modèle du listing \ref {lst-convo-gene3reg8}, sur GPU GTX280. Le temps d'exécution correspond à la seule exécution du kernel. Le débit global intègre les temps de transfert. Les valeurs en gras correspondent au traitement de référence}{table.9.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {9.3}Impl\IeC {\'e}mentation optimis\IeC {\'e}e de la convolution non s\IeC {\'e}parable sur GPU}{115}{section.9.3}} +\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces Multiplicit\IeC {\'e} des implications des pixels de la zone d'int\IeC {\'e}r\IeC {\^e}t d'un thread dans les calculs de convolution. Le nombre de calculs dans lequel est impliqu\IeC {\'e} un pixel est inscrit en son centre. Le premier pixel du paquet, ou pixel de base, est rep\IeC {\'e}r\IeC {\'e} par ses coordonn\IeC {\'e}es $(x, y)$ ; le dernier a pour coordonn\IeC {\'e}es $(x+7,y)$}}{116}{figure.9.1}} +\newlabel{fig-convo-overlap}{{9.1}{116}{Multiplicité des implications des pixels de la zone d'intérêt d'un thread dans les calculs de convolution. Le nombre de calculs dans lequel est impliqué un pixel est inscrit en son centre. Le premier pixel du paquet, ou pixel de base, est repéré par ses coordonnées $(x, y)$ ; le dernier a pour coordonnées $(x+7,y)$\relax }{figure.9.1}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Cas d'un masque de taille 3$\times $3 ($k=1$) o\IeC {\`u} l'on d\IeC {\'e}nombre 6 colonnes centrales, soit 18 pixels de multiplicit\IeC {\'e} maximale 3.}}}{116}{figure.9.1}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Cas d'un masque de taille 5$\times $5 ($k=2$) o\IeC {\`u} l'on d\IeC {\'e}nombre 4 colonnes centrales, soit 20 pixels de multiplicit\IeC {\'e} maximale 5.}}}{116}{figure.9.1}} +\@writefile{lot}{\contentsline {table}{\numberline {9.3}{\ignorespaces Performances des kernels effectuant la convolution non-s\IeC {\'e}parable sur le mod\IeC {\`e}le du listing \ref {lst-convo-8x8pL3}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} la seule ex\IeC {\'e}cution du kernel. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert. Les valeurs en gras correspondent au traitement de r\IeC {\'e}f\IeC {\'e}rence. }}{117}{table.9.3}} +\newlabel{tab-convo-8x8p}{{9.3}{117}{Performances des kernels effectuant la convolution non-séparable sur le modèle du listing \ref {lst-convo-8x8pL3}, sur GPU C2070. Le temps d'exécution correspond à la seule exécution du kernel. Le débit global intègre les temps de transfert. Les valeurs en gras correspondent au traitement de référence. \relax }{table.9.3}{}} +\newlabel{lst-convo-8x8pL3}{{9.2}{118}{Kernel réalisant la convolution par un masque 3$\times $3 dont les coefficients normalisés sont en mémoire constante}{lstlisting.9.2}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.2}Kernel r\IeC {\'e}alisant la convolution par un masque 3$\times $3 dont les coefficients normalis\IeC {\'e}s sont en m\IeC {\'e}moire constante.}{118}{lstlisting.9.2}} +\@writefile{toc}{\contentsline {section}{\numberline {9.4}Cas de la convolution s\IeC {\'e}parable}{119}{section.9.4}} +\newlabel{lst-convo-1Dv}{{9.3}{119}{Kernel réalisant la convolution verticale k$\times $1 avec utilisation de la mémoire partagée}{lstlisting.9.3}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.3}Kernel r\IeC {\'e}alisant la convolution verticale k$\times $1 avec utilisation de la m\IeC {\'e}moire partag\IeC {\'e}e.}{119}{lstlisting.9.3}} +\newlabel{lst-convo-1Dh}{{9.4}{120}{Kernel réalisant la convolution horizontale 1$\times $k avec utilisation de la mémoire partagée}{lstlisting.9.4}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.4}Kernel r\IeC {\'e}alisant la convolution horizontale 1$\times $k avec utilisation de la m\IeC {\'e}moire partag\IeC {\'e}e.}{120}{lstlisting.9.4}} +\@writefile{lot}{\contentsline {table}{\numberline {9.4}{\ignorespaces Performances des kernels effectuant la convolution s\IeC {\'e}parable sur le mod\IeC {\`e}le des listings \ref {lst-convo-1Dv} et \ref {lst-convo-1Dh}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} l'ex\IeC {\'e}cution des 2 kernels. Cette variante pr\IeC {\'e}sente des performances voisines de la solution Nvidia.}}{121}{table.9.4}} +\newlabel{tab-convons-nv}{{9.4}{121}{Performances des kernels effectuant la convolution séparable sur le modèle des listings \ref {lst-convo-1Dv} et \ref {lst-convo-1Dh}, sur GPU C2070. Le temps d'exécution correspond à l'exécution des 2 kernels. Cette variante présente des performances voisines de la solution Nvidia}{table.9.4}{}} +\newlabel{lst-convons-optim}{{9.5}{122}{Kernel réalisant la convolution horizontale optimisée 1$\times $3 sans utilisation de la mémoire partagée}{lstlisting.9.5}{}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {9.5}Kernel r\IeC {\'e}alisant la convolution horizontale optimis\IeC {\'e}e 1$\times $3 sans utilisation de la m\IeC {\'e}moire partag\IeC {\'e}e.}{122}{lstlisting.9.5}} +\@writefile{lot}{\contentsline {table}{\numberline {9.5}{\ignorespaces Temps de transfert total depuis et vers le GPU, en fonction de la dimension de l'image. Extrait de la table \ref {tab-median-memcpy}.}}{123}{table.9.5}} +\newlabel{tab-convo-memcpy}{{9.5}{123}{Temps de transfert total depuis et vers le GPU, en fonction de la dimension de l'image. Extrait de la table \ref {tab-median-memcpy}}{table.9.5}{}} +\@writefile{lot}{\contentsline {table}{\numberline {9.6}{\ignorespaces Dur\IeC {\'e}e de la copie depuis la m\IeC {\'e}moire globale vers la m\IeC {\'e}moire texture, en fonction de la taille de l'image.}}{123}{table.9.6}} +\newlabel{tab-convons-memcpy}{{9.6}{123}{Durée de la copie depuis la mémoire globale vers la mémoire texture, en fonction de la taille de l'image}{table.9.6}{}} +\@writefile{lot}{\contentsline {table}{\numberline {9.7}{\ignorespaces Performances des kernels effectuant la convolution s\IeC {\'e}parable optimis\IeC {\'e}e sur le mod\IeC {\`e}le des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070. Le temps d'ex\IeC {\'e}cution correspond \IeC {\`a} l'ex\IeC {\'e}cution des 2 kernels.}}{124}{table.9.7}} +\newlabel{tab-convons-optim}{{9.7}{124}{Performances des kernels effectuant la convolution séparable optimisée sur le modèle des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070. Le temps d'exécution correspond à l'exécution des 2 kernels}{table.9.7}{}} +\@writefile{lot}{\contentsline {table}{\numberline {9.8}{\ignorespaces D\IeC {\'e}bit global en ms (incluant les transferts) des kernels effectuant la convolution s\IeC {\'e}parable sur le mod\IeC {\`e}le des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070.}}{124}{table.9.8}} +\newlabel{tab-convons-tpg}{{9.8}{124}{Débit global en ms (incluant les transferts) des kernels effectuant la convolution séparable sur le modèle des listings \ref {lst-convo-1Dv} et \ref {lst-convons-optim}, sur GPU C2070}{table.9.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {9.5}Conclusion}{124}{section.9.5}} +\@writefile{lof}{\contentsline {figure}{\numberline {9.2}{\ignorespaces G\IeC {\'e}n\IeC {\'e}rateur de codes sources pour les filtres GPU rapides.}}{125}{figure.9.2}} +\newlabel{fig-convomed-copie}{{9.2}{125}{Générateur de codes sources pour les filtres GPU rapides}{figure.9.2}{}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {S\IeC {\'e}lection des param\IeC {\`e}tres.}}}{125}{figure.9.2}} +\@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {T\IeC {\'e}l\IeC {\'e}chargement des fichiers.}}}{125}{figure.9.2}} +\@writefile{toc}{\contentsline {part}{IV\hspace {1em}Conclusions et perspectives}{127}{part.4}} +\@writefile{toc}{\contentsline {chapter}{\numberline {10}Conclusion g\IeC {\'e}n\IeC {\'e}rale}{129}{chapter.10}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \bibstyle{plain} \bibdata{biblio} -\@writefile{toc}{\contentsline {chapter}{\numberline {11}Remerciements}{129}{chapter.11}} +\@writefile{toc}{\contentsline {chapter}{\numberline {11}Remerciements}{131}{chapter.11}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \bibcite{kddcup99}{1} @@ -867,20 +868,21 @@ \bibcite{theuwissen2001ccd}{96} \bibcite{710815}{97} \bibcite{tukey77}{98} -\bibcite{vedaldi2008quick}{99} -\bibcite{4563095}{100} -\bibcite{Vineet:2009:FMS:1572769.1572796}{101} -\bibcite{volkov2010better}{102} -\bibcite{wang2001image}{103} -\bibcite{wang2003image}{104} -\bibcite{Wang04imagequality}{105} -\bibcite{wong2010demystifying}{106} -\bibcite{wu1993optimal}{107} -\bibcite{xiao2010efficient}{108} -\bibcite{5206542}{109} -\bibcite{Zahn:1971:GMD:1309266.1309359}{110} -\bibcite{zheng2011performance}{111} -\bibcite{zheng2012fast}{112} +\bibcite{van2004detection}{99} +\bibcite{vedaldi2008quick}{100} +\bibcite{4563095}{101} +\bibcite{Vineet:2009:FMS:1572769.1572796}{102} +\bibcite{volkov2010better}{103} +\bibcite{wang2001image}{104} +\bibcite{wang2003image}{105} +\bibcite{Wang04imagequality}{106} +\bibcite{wong2010demystifying}{107} +\bibcite{wu1993optimal}{108} +\bibcite{xiao2010efficient}{109} +\bibcite{5206542}{110} +\bibcite{Zahn:1971:GMD:1309266.1309359}{111} +\bibcite{zheng2011performance}{112} +\bibcite{zheng2012fast}{113} \citation{CUDAPG} \citation{CUDAPG} \citation{zheng2011performance}