\relax \catcode`:\active \catcode`;\active \catcode`!\active \catcode`?\active \ifx\hyper@anchor\@undefined \global \let \oldcontentsline\contentsline \gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} \global \let \oldnewlabel\newlabel \gdef \newlabel#1#2{\newlabelxx{#1}#2} \gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} \AtEndDocument{\let \contentsline\oldcontentsline \let \newlabel\oldnewlabel} \else \global \let \hyper@last\relax \fi \select@language{french} \@writefile{toc}{\select@language{french}} \@writefile{lof}{\select@language{french}} \@writefile{lot}{\select@language{french}} \@writefile{toc}{\contentsline {part}{I\hspace {1em}Introduction}{1}{part.1}} \@writefile{toc}{\contentsline {chapter}{\numberline {1}Pr\IeC {\'e}ambule}{3}{chapter.1}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \citation{CUDAPG} \citation{CUDAPG} \@writefile{toc}{\contentsline {chapter}{\numberline {2}Les processeurs graphiques (GPU) NVidia\textregistered }{7}{chapter.2}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-GPU}{{2}{7}{Les processeurs graphiques (GPU) NVidia\textregistered \relax }{chapter.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.1}Pourquoi ?}{7}{section.2.1}} \@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Comparaison des structures d'un c\oe ur de GPU et d'un c\oe ur de CPU (d'apr\IeC {\`e}s \cite {CUDAPG}). ALU = Arithmetical \& Logical Unit.}}{7}{figure.2.1}} \newlabel{fig-gpucpu1}{{2.1}{7}{Comparaison des structures d'un c\oe ur de GPU et d'un c\oe ur de CPU (d'après \cite {CUDAPG}). ALU = Arithmetical \& Logical Unit}{figure.2.1}{}} \citation{CUDAPG} \citation{CUDAPG} \@writefile{lof}{\contentsline {figure}{\numberline {2.2}{\ignorespaces Comparaison des performances des GPUs Nvidia et des CPU Intel (d'apr\IeC {\`e}s \cite {CUDAPG}).}}{8}{figure.2.2}} \newlabel{fig-gpucpu2}{{2.2}{8}{Comparaison des performances des GPUs Nvidia et des CPU Intel (d'après \cite {CUDAPG})}{figure.2.2}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Nombre maximum th\IeC {\'e}orique d'op\IeC {\'e}rations en virgule flottante par seconde en fonction de l'ann\IeC {\'e}e et de l'architecture.}}}{8}{figure.2.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Bande passante th\IeC {\'e}orique maximale des diverses architectures.}}}{8}{figure.2.2}} \citation{wong2010demystifying} \citation{wong2010demystifying} \citation{wong2010demystifying} \@writefile{toc}{\contentsline {section}{\numberline {2.2}Comment ?}{9}{section.2.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Le mat\IeC {\'e}riel}{9}{subsection.2.2.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Le logiciel}{9}{subsection.2.2.2}} \@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces Organisation des GPUs d'architecture Fermi, comme le C2070 (d'apr\IeC {\`e}s www.hpcresearch.nl).}}{10}{figure.2.3}} \newlabel{fig-c2070}{{2.3}{10}{Organisation des GPUs d'architecture Fermi, comme le C2070 (d'après www.hpcresearch.nl)}{figure.2.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Organisation en groupes de SMs }}}{10}{figure.2.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Constitution d'un SM.}}}{10}{figure.2.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.3}L'occupancy}{10}{subsection.2.2.3}} \@writefile{lot}{\contentsline {table}{\numberline {2.1}{\ignorespaces Caract\IeC {\'e}ristiques des diff\IeC {\'e}rents types de m\IeC {\'e}moire disponibles sur le GPU. Pour les m\IeC {\'e}moires cach\IeC {\'e}es, les latences sont donn\IeC {\'e}es selon l'acc\IeC {\`e}s \textit {sans-cache/L1/L2} et ont \IeC {\'e}t\IeC {\'e} obtenues \IeC {\`a} l'aide des microprogrammes de test de \cite {wong2010demystifying}. Les valeurs de d\IeC {\'e}bit sont donn\IeC {\'e}es par le constructeur.}}{11}{table.2.1}} \newlabel{tab-gpu-memoire}{{2.1}{11}{Caractéristiques des différents types de mémoire disponibles sur le GPU. Pour les mémoires cachées, les latences sont données selon l'accès \textit {sans-cache/L1/L2} et ont été obtenues à l'aide des microprogrammes de test de \cite {wong2010demystifying}. Les valeurs de débit sont données par le constructeur}{table.2.1}{}} \@writefile{lof}{\contentsline {figure}{\numberline {2.4}{\ignorespaces Repr\IeC {\'e}sentation d'une grille de calcul en 2D et des blocs de threads, \IeC {\`a} 2 dimensions, qui la composent.}}{12}{figure.2.4}} \newlabel{fig-threads}{{2.4}{12}{Représentation d'une grille de calcul en 2D et des blocs de threads, à 2 dimensions, qui la composent}{figure.2.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.3}Contraintes de conception}{12}{section.2.3}} \@writefile{toc}{\contentsline {part}{II\hspace {1em}Le traitement des images}{15}{part.2}} \citation{Caselles99topographicmaps} \citation{cutrona1990synthetic} \citation{mancuso2001introduction} \citation{theuwissen2001ccd} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Mod\IeC {\`e}les d'image et de bruits - notations}{19}{chapter.3}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Mod\IeC {\`e}le d'image bruit\IeC {\'e}e}{19}{section.3.1}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}Mod\IeC {\`e}les de bruit}{19}{section.3.2}} \newlabel{sec_bruits}{{3.2}{19}{Modèles de bruit\relax }{section.3.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Le bruit gaussien}{19}{subsection.3.2.1}} \citation{healey1994radiometric} \citation{kodakccd} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Le speckle}{20}{subsection.3.2.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Le bruit \FB@og sel et poivre \FB@fg {}}{20}{subsection.3.2.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.4}Le bruit de Poisson}{21}{subsection.3.2.4}} \citation{coil} \citation{Wang04imagequality} \@writefile{toc}{\contentsline {chapter}{\numberline {4}Les techniques de r\IeC {\'e}duction de bruit}{23}{chapter.4}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-filtrage}{{4}{23}{Les techniques de réduction de bruit\label {ch-filtrage}\relax }{chapter.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.1}Les techniques de r\IeC {\'e}duction de bruit}{23}{section.4.1}} \citation{tukey77} \citation{4287006} \newlabel{ny-sap}{{4.1(c)}{24}{Subfigure 4 4.1(c)\relax }{subfigure.4.1.3}{}} \newlabel{sub@ny-sap}{{(c)}{24}{Subfigure 4 4.1(c)\relax }{subfigure.4.1.3}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.1}{\ignorespaces Images 256$\times $256 en niveau de gris 8 bits utilis\IeC {\'e}es pour l'illustration des propri\IeC {\'e}t\IeC {\'e}s des filtres. (a) l'image de r\IeC {\'e}f\IeC {\'e}rence non bruit\IeC {\'e}e. (b) l'image corrompue par un bruit gaussien d'\IeC {\'e}cart type $\sigma =25$. (c) l'image corrompue par un bruit impulsionnel \IeC {\`a} 25\%.}}{24}{figure.4.1}} \newlabel{fig-ny-noises}{{4.1}{24}{Images 256$\times $256 en niveau de gris 8 bits utilisées pour l'illustration des propriétés des filtres. (a) l'image de référence non bruitée. (b) l'image corrompue par un bruit gaussien d'écart type $\sigma =25$. (c) l'image corrompue par un bruit impulsionnel à 25\%}{figure.4.1}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Sans bruit}}}{24}{figure.4.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Bruit gaussien $\sigma =25$, PSNR=22.3~dB MSSIM=0.16}}}{24}{figure.4.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Bruit impulsionnel 25\%, PSNR=9.48~dB MSSIM=0.04}}}{24}{figure.4.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Les op\IeC {\'e}rateurs de base}{24}{subsection.4.1.1}} \newlabel{sec-op-base}{{4.1.1}{24}{Les opérateurs de base\relax }{subsection.4.1.1}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1.1}Le filtre de convolution}{24}{subsubsection.4.1.1.1}} \newlabel{convoDef}{{4.1}{24}{Le filtre de convolution\relax }{equation.4.1.1}{}} \citation{710815} \@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces Filtrage par convolution.}}{25}{figure.4.2}} \newlabel{fig-ny-convo}{{4.2}{25}{Filtrage par convolution}{figure.4.2}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Moyenneur 3$\times $3, PSNR=27.6dB MSSIM=0.34}}}{25}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Moyenneur 5$\times $5, PSNR=27.7dB MSSIM=0.38}}}{25}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Filtre gaussien 3$\times $3, PSNR=27.4dB MSSIM=0.33}}}{25}{figure.4.2}} \@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces R\IeC {\'e}duction du bruit impulsionnel par filtre m\IeC {\'e}dian.}}{25}{figure.4.3}} \newlabel{fig-ny-median}{{4.3}{25}{Réduction du bruit impulsionnel par filtre médian}{figure.4.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {M\IeC {\'e}dian 3$\times $3 une passe, PSNR=26.4~dB MSSIM=0.90}}}{25}{figure.4.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {M\IeC {\'e}dian 3$\times $3 deux passes, PSNR=34.4~dB MSSIM=0.98}}}{25}{figure.4.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {M\IeC {\'e}dian 5$\times $5 une passe, PSNR=35.1~dB MSSIM=0.98}}}{25}{figure.4.3}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1.2}Le filtre m\IeC {\'e}dian}{25}{subsubsection.4.1.1.2}} \citation{1521458} \citation{4587843} \citation{BuadesCM06} \citation{bertaux2004speckle} \citation{Mallat:2008:WTS:1525499} \citation{Daubechies:1992:TLW:130655} \citation{1093941} \citation{strang1999discrete} \citation{elad2006image} \citation{elad2006image} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1.3}Le filtre bilat\IeC {\'e}ral}{26}{subsubsection.4.1.1.3}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.1.1.4}Les algorithmes de filtrage par dictionnaire}{26}{subsubsection.4.1.1.4}} \newlabel{subfig-bruit-bilat}{{4.4(e)}{27}{Subfigure 4 4.4(e)\relax }{subfigure.4.4.5}{}} \newlabel{sub@subfig-bruit-bilat}{{(e)}{27}{Subfigure 4 4.4(e)\relax }{subfigure.4.4.5}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces R\IeC {\'e}duction de bruit gaussien par filtrage bilat\IeC {\'e}ral de voisinage 5$\times $5. $\sigma _S$ et $\sigma _I$ sont les \IeC {\'e}carts type des fonctions gaussiennes de pond\IeC {\'e}ration spatiale et d'intensit\IeC {\'e}.}}{27}{figure.4.4}} \newlabel{fig-ny-bilat}{{4.4}{27}{Réduction de bruit gaussien par filtrage bilatéral de voisinage 5$\times $5. $\sigma _S$ et $\sigma _I$ sont les écarts type des fonctions gaussiennes de pondération spatiale et d'intensité}{figure.4.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$\sigma _S=1.0$ et $\sigma _I=0.1$, PSNR=25.6~dB MSSIM=0.25}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$\sigma _S=1.0$ et $\sigma _I=0.5$, PSNR=28.0~dB MSSIM=0.36}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$\sigma _S=1.0$ et $\sigma _I=1.0$, PSNR=27.9~dB MSSIM=0.36}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$\sigma _S=2.0$ et $\sigma _I=0.1$, PSNR=26.7~dB MSSIM=0.29}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {$\sigma _S=2.0$ et $\sigma _I=0.5$, PSNR=27.9~dB MSSIM=0.39}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {$\sigma _S=2.0$ et $\sigma _I=1.0$, PSNR=27.5~dB MSSIM=0.38}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {$\sigma _S=5.0$ et $\sigma _I=0.1$, PSNR=26.8~dB MSSIM=0.29}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {$\sigma _S=5.0$ et $\sigma _I=0.5$, PSNR=26.8~dB MSSIM=0.37}}}{27}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {$\sigma _S=5.0$ et $\sigma _I=1.0$, PSNR=25.9~dB MSSIM=0.36}}}{27}{figure.4.4}} \citation{1467423} \citation{Dabov06imagedenoising} \citation{Dabov09bm3dimage} \@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces Filtrage par d\IeC {\'e}composition en ondelettes et seuillage dur des coefficients inf\IeC {\'e}rieurs au seuil $T$.}}{28}{figure.4.5}} \newlabel{fig-ny-dwt}{{4.5}{28}{Filtrage par décomposition en ondelettes et seuillage dur des coefficients inférieurs au seuil $T$}{figure.4.5}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$T=20$, PSNR=26.9~dB MSSIM=0.30}}}{28}{figure.4.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$T=35$, PSNR=27.6~dB MSSIM=0.36}}}{28}{figure.4.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$T=70$, PSNR=26.7~dB MSSIM=0.37}}}{28}{figure.4.5}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.2}Les algorithmes de filtrage par patches}{28}{subsection.4.1.2}} \citation{cmla2009Kes} \citation{convolutionsoup} \@writefile{lof}{\contentsline {figure}{\numberline {4.6}{\ignorespaces Filtrage par NL-means pour diff\IeC {\'e}rentes combinaisons des param\IeC {\`e}tres de similarit\IeC {\'e} $f$ et de non localit\IeC {\'e} $t$.}}{29}{figure.4.6}} \newlabel{fig-ny-nlm}{{4.6}{29}{Filtrage par NL-means pour différentes combinaisons des paramètres de similarité $f$ et de non localité $t$}{figure.4.6}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$f=2$ et $t=2$, PSNR=28.5~dB MSSIM=0.37}}}{29}{figure.4.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$f=2$ et $t=5$, PSNR=28.6~dB MSSIM=0.38}}}{29}{figure.4.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$f=5$ et $t=2$, PSNR=29.0~dB MSSIM=0.39}}}{29}{figure.4.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$f=5$ et $t=5$, PSNR=29.0~dB MSSIM=0.40}}}{29}{figure.4.6}} \@writefile{lof}{\contentsline {figure}{\numberline {4.7}{\ignorespaces Filtrage par BM3D, PSNR=29.3~dB MSSIM=0.41}}{29}{figure.4.7}} \newlabel{fig-ny-bm3d}{{4.7}{29}{Filtrage par BM3D, PSNR=29.3~dB MSSIM=0.41\relax }{figure.4.7}{}} \newlabel{sec-filtresgpu}{{4.2}{29}{Les implémentations sur GPU des algorithmes de filtrage\label {sec-filtresgpu}\relax }{section.4.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {4.2}Les impl\IeC {\'e}mentations sur GPU des algorithmes de filtrage}{29}{section.4.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}Le filtrage par convolution}{29}{subsection.4.2.1}} \citation{4287006} \citation{6288187} \citation{5402362} \citation{chen09} \citation{5402362} \citation{sanchez2013highly} \citation{5402362} \citation{sanchez2013highly} \citation{aldinucci2012parallel} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Le filtre m\IeC {\'e}dian}{30}{subsection.4.2.2}} \newlabel{sec-median}{{4.2.2}{30}{Le filtre médian\relax }{subsection.4.2.2}{}} \citation{5206542} \citation{zheng2011performance} \newlabel{fig-compare-jacket-pcmf1}{{4.8(a)}{31}{Subfigure 4 4.8(a)\relax }{subfigure.4.8.1}{}} \newlabel{sub@fig-compare-jacket-pcmf1}{{(a)}{31}{Subfigure 4 4.8(a)\relax }{subfigure.4.8.1}{}} \newlabel{fig-compare-jacket-pcmf2}{{4.8(b)}{31}{Subfigure 4 4.8(b)\relax }{subfigure.4.8.2}{}} \newlabel{sub@fig-compare-jacket-pcmf2}{{(b)}{31}{Subfigure 4 4.8(b)\relax }{subfigure.4.8.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.8}{\ignorespaces Performances relatives des filtres m\IeC {\'e}dians impl\IeC {\'e}ment\IeC {\'e}s sur GPU dans libJacket/ArrayFire, PCMF et BVM et ex\IeC {\'e}cut\IeC {\'e}s sur deux mod\IeC {\`e}les de g\IeC {\'e}n\IeC {\'e}rations diff\IeC {\'e}rentes.}}{31}{figure.4.8}} \newlabel{fig-compare-jacket-pcmf}{{4.8}{31}{Performances relatives des filtres médians implémentés sur GPU dans libJacket/ArrayFire, PCMF et BVM et exécutés sur deux modèles de générations différentes}{figure.4.8}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Sur GPU GTX260. Courbe tir\IeC {\'e}e de \cite {5402362}}}}{31}{figure.4.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Sur GPU C2075. Courbe tir\IeC {\'e}e de \cite {sanchez2013highly}}}}{31}{figure.4.8}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Le filtre bilat\IeC {\'e}ral}{31}{subsection.4.2.3}} \newlabel{sec-bilateral}{{4.2.3}{31}{Le filtre bilatéral\relax }{subsection.4.2.3}{}} \citation{zheng2011performance} \citation{zheng2011performance} \@writefile{lof}{\contentsline {figure}{\numberline {4.9}{\ignorespaces Illustration du pr\IeC {\'e}-chargement en m\IeC {\'e}moire partag\IeC {\'e}e mis en \oe uvre dans \cite {zheng2011performance} pour l'impl\IeC {\'e}mentation, entre autres, du filtre bilat\IeC {\'e}ral. a) en vert le bloc de threads associ\IeC {\'e} aux pixels centraux. b-e) les blocs de pixels successivement pr\IeC {\'e}-charg\IeC {\'e}s en m\IeC {\'e}moire partag\IeC {\'e}e. f) la configuration finale de la ROI en m\IeC {\'e}moire partag\IeC {\'e}e.}}{32}{figure.4.9}} \newlabel{fig-prefetch-zheng}{{4.9}{32}{Illustration du pré-chargement en mémoire partagée mis en \oe uvre dans \cite {zheng2011performance} pour l'implémentation, entre autres, du filtre bilatéral. a) en vert le bloc de threads associé aux pixels centraux. b-e) les blocs de pixels successivement pré-chargés en mémoire partagée. f) la configuration finale de la ROI en mémoire partagée}{figure.4.9}{}} \citation{PALHANOXAVIERDEFONTES} \citation{nlmeansgpubelge} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.4}Les filtres par patches}{33}{subsection.4.2.4}} \citation{humphrey1924psychology} \@writefile{toc}{\contentsline {chapter}{\numberline {5}Les techniques de segmentation des images}{35}{chapter.5}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {5.1}Introduction}{35}{section.5.1}} \@writefile{toc}{\contentsline {section}{\numberline {5.2}Les techniques de segmentation orient\IeC {\'e}es r\IeC {\'e}gions}{35}{section.5.2}} \citation{4310076} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}Analyse d'histogramme}{36}{subsection.5.2.1}} \newlabel{sec-histo}{{5.2.1}{36}{Analyse d'histogramme\relax }{subsection.5.2.1}{}} \newlabel{seggraph}{{5.2.2}{36}{Partitionnement de graphe\label {seggraph}\relax }{subsection.5.2.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}Partitionnement de graphe}{36}{subsection.5.2.2}} \newlabel{fig-histo-cochon-a}{{5.1(a)}{37}{Subfigure 5 5.1(a)\relax }{subfigure.5.1.1}{}} \newlabel{sub@fig-histo-cochon-a}{{(a)}{37}{Subfigure 5 5.1(a)\relax }{subfigure.5.1.1}{}} \newlabel{fig-histo-cochon-b}{{5.1(b)}{37}{Subfigure 5 5.1(b)\relax }{subfigure.5.1.2}{}} \newlabel{sub@fig-histo-cochon-b}{{(b)}{37}{Subfigure 5 5.1(b)\relax }{subfigure.5.1.2}{}} \newlabel{fig-histo-cochon-c}{{5.1(c)}{37}{Subfigure 5 5.1(c)\relax }{subfigure.5.1.3}{}} \newlabel{sub@fig-histo-cochon-c}{{(c)}{37}{Subfigure 5 5.1(c)\relax }{subfigure.5.1.3}{}} \newlabel{fig-histo-cochon-d}{{5.1(d)}{37}{Subfigure 5 5.1(d)\relax }{subfigure.5.1.4}{}} \newlabel{sub@fig-histo-cochon-d}{{(d)}{37}{Subfigure 5 5.1(d)\relax }{subfigure.5.1.4}{}} \newlabel{fig-histo-cochon-e}{{5.1(e)}{37}{Subfigure 5 5.1(e)\relax }{subfigure.5.1.5}{}} \newlabel{sub@fig-histo-cochon-e}{{(e)}{37}{Subfigure 5 5.1(e)\relax }{subfigure.5.1.5}{}} \newlabel{fig-histo-cochon-f}{{5.1(f)}{37}{Subfigure 5 5.1(f)\relax }{subfigure.5.1.6}{}} \newlabel{sub@fig-histo-cochon-f}{{(f)}{37}{Subfigure 5 5.1(f)\relax }{subfigure.5.1.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par analyse simple d'histogramme. Colonne de gauche : image d'entr\IeC {\'e}e. Colonne centrale : histogramme des niveaux de gris. Colonne de droite : r\IeC {\'e}sultat de la segmentation.}}{37}{figure.5.1}} \newlabel{fig-histo-cochon}{{5.1}{37}{Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par analyse simple d'histogramme. Colonne de gauche : image d'entrée. Colonne centrale : histogramme des niveaux de gris. Colonne de droite : résultat de la segmentation}{figure.5.1}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image initiale comportant deux zones : le fond et la peluche (la cible)}}}{37}{figure.5.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Histogramme des niveaux de gris}}}{37}{figure.5.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image binaire repr\IeC {\'e}sentant la segmentation. Seuil estim\IeC {\'e} \IeC {\`a} 101 apr\IeC {\`e}s 4 it\IeC {\'e}rations.}}}{37}{figure.5.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image initiale bruit\IeC {\'e}e}}}{37}{figure.5.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Histogramme des niveaux de gris}}}{37}{figure.5.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {Image binaire repr\IeC {\'e}sentant la segmentation. Seuil estim\IeC {\'e} \IeC {\`a} 99 apr\IeC {\`e}s 5 it\IeC {\'e}rations.}}}{37}{figure.5.1}} \@writefile{loa}{\contentsline {algocf}{\numberline {1}{\ignorespaces Calcul du seuil de s\IeC {\'e}paration des segments de l'histogramme.}}{37}{algocfline.1}} \newlabel{algo-histo-cochon}{{1}{37}{Analyse d'histogramme\relax }{algocfline.1}{}} \citation{Zahn:1971:GMD:1309266.1309359} \citation{wu1993optimal} \citation{wang2001image} \citation{wang2003image} \citation{felzenszwalb2004efficient} \citation{shi2000normalized} \citation{shi2000normalized} \citation{ford1955simple} \citation{boykov2004experimental} \citation{chandran2009computational} \citation{cherkassky1997implementing} \citation{hochbaum2013simplifications} \citation{macqueen1967some} \citation{agarwal2002exact} \citation{arora1998approximation} \citation{pelleg2000x} \@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par simplification de graphe de type \textit {Normalized cut} pour un nombre $s$ de segments variant de 2 \IeC {\`a} 5.}}{39}{figure.5.2}} \newlabel{fig-graph-cochon}{{5.2}{39}{Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par simplification de graphe de type \textit {Normalized cut} pour un nombre $s$ de segments variant de 2 à 5}{figure.5.2}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$s = 2$}}}{39}{figure.5.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$s = 3$}}}{39}{figure.5.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$s = 4$}}}{39}{figure.5.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$s = 5$}}}{39}{figure.5.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}kernel-means, mean-shift et apparent\IeC {\'e}s}{39}{subsection.5.2.3}} \citation{fukunaga1975estimation} \citation{cheng1995mean} \citation{foley1994introduction} \citation{comaniciu1999mean} \citation{comaniciu2002mean} \citation{keselman1998extraction} \@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme \textit {k-means} pour un nombre $K$ de segments variant de 2 \IeC {\`a} 5. Chaque couleur est associ\IeC {\'e}e \IeC {\`a} un segment. Les couleurs sont choisies pour une meilleure visualisation des diff\IeC {\'e}rents segments.}}{40}{figure.5.3}} \newlabel{fig-kmeans-cochon}{{5.3}{40}{Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme \textit {k-means} pour un nombre $K$ de segments variant de 2 à 5. Chaque couleur est associée à un segment. Les couleurs sont choisies pour une meilleure visualisation des différents segments}{figure.5.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$K = 2$}}}{40}{figure.5.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$K = 3$}}}{40}{figure.5.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$K = 4$}}}{40}{figure.5.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$K = 5$}}}{40}{figure.5.3}} \@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme \textit {mean-shift} pour un rayon de voisinage $r$ de 100, 50, 35 et 25 pixels permettant d'obtenir un nombre $K$ de segments variant respectivement de 2 \IeC {\`a} 5. Le volume minimal admis pour un segment est fix\IeC {\'e} \IeC {\`a} 100 pixels. Chaque couleur est associ\IeC {\'e}e \IeC {\`a} un segment. Les couleurs sont choisies pour une meilleure visualisation des diff\IeC {\'e}rents segments.}}{41}{figure.5.4}} \newlabel{fig-meanshift-cochon}{{5.4}{41}{Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme \textit {mean-shift} pour un rayon de voisinage $r$ de 100, 50, 35 et 25 pixels permettant d'obtenir un nombre $K$ de segments variant respectivement de 2 à 5. Le volume minimal admis pour un segment est fixé à 100 pixels. Chaque couleur est associée à un segment. Les couleurs sont choisies pour une meilleure visualisation des différents segments}{figure.5.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$r=100 \Rightarrow K = 2$}}}{41}{figure.5.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$r=50 \Rightarrow K = 3$}}}{41}{figure.5.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$r=35 \Rightarrow K = 4$}}}{41}{figure.5.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$r=25 \Rightarrow K = 5$}}}{41}{figure.5.4}} \@writefile{toc}{\contentsline {section}{\numberline {5.3}Les techniques de segmentation par contours actifs, ou snakes}{41}{section.5.3}} \citation{KassWT88} \citation{osher1988fronts} \citation{adalsteinsson1994fast} \citation{sethian1996fast} \@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme dit du \textit {snake}, dans sa version originale. Les param\IeC {\`e}tres d'\IeC {\'e}lasticit\IeC {\'e}, de raideur et d'attraction ont \IeC {\'e}t\IeC {\'e} fix\IeC {\'e}s respectivement aux valeurs 5, 0.1 et 5. }}{42}{figure.5.5}} \newlabel{fig-snake-tradi-cochon}{{5.5}{42}{Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme dit du \textit {snake}, dans sa version originale. Les paramètres d'élasticité, de raideur et d'attraction ont été fixés respectivement aux valeurs 5, 0.1 et 5. \relax }{figure.5.5}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Les \IeC {\'e}tats initial et suivant chacune des trois premi\IeC {\`e}res it\IeC {\'e}rations}}}{42}{figure.5.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {L'\IeC {\'e}tat du contour apr\IeC {\`e}s la septi\IeC {\`e}me it\IeC {\'e}ration}}}{42}{figure.5.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {L'\IeC {\'e}tat du contour apr\IeC {\`e}s la dixi\IeC {\`e}me it\IeC {\'e}ration}}}{42}{figure.5.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {L'\IeC {\'e}tat du contour apr\IeC {\`e}s la centi\IeC {\`e}me it\IeC {\'e}ration. C'est le contour final.}}}{42}{figure.5.5}} \citation{cohen1993surface} \citation{ronfard1994region} \citation{ChesnaudRB99} \citation{GallandBR03} \citation{GermainR01} \citation{galland2005minimal} \citation{5767240} \citation{ChesnaudRB99} \citation{arbelaez2011contour} \@writefile{toc}{\contentsline {subsection}{\numberline {5.3.1}M\IeC {\'e}thodes hybrides}{43}{subsection.5.3.1}} \@writefile{toc}{\contentsline {section}{\numberline {5.4}Les impl\IeC {\'e}mentations des techniques de segmentation sur GPU}{43}{section.5.4}} \citation{fluck2006gpu} \citation{lefohn2003interactive} \citation{Vineet:2009:FMS:1572769.1572796} \citation{dixit2005gpu} \citation{4563095} \citation{kohli2007dynamic} \@writefile{toc}{\contentsline {subsection}{\numberline {5.4.1}Calcul d'histogramme}{44}{subsection.5.4.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.4.2}Partitionnement de graphe}{44}{subsection.5.4.2}} \citation{graphcutscuda} \citation{graphcutscuda} \citation{graphcutscuda} \citation{graphcutscuda} \citation{che2008performance} \citation{kddcup99} \citation{5170921} \citation{che2008performance} \@writefile{lof}{\contentsline {figure}{\numberline {5.6}{\ignorespaces \IeC {\'E}volution du nombre de pixels actifs pour les it\IeC {\'e}rations successives de l'impl\IeC {\'e}mentation de l'algorithme push-relabel de \cite {graphcutscuda}. Les petites images montrent la localisation des pixels actifs apr\IeC {\`e}s chaque it\IeC {\'e}ration, en blanc.}}{45}{figure.5.6}} \newlabel{fig-graphcutscuda}{{5.6}{45}{Évolution du nombre de pixels actifs pour les itérations successives de l'implémentation de l'algorithme push-relabel de \cite {graphcutscuda}. Les petites images montrent la localisation des pixels actifs après chaque itération, en blanc}{figure.5.6}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.4.3}K-means, mean-shift et apparent\IeC {\'e}s}{45}{subsection.5.4.3}} \citation{kmeansgpuopengl} \citation{li2009mean} \citation{vedaldi2008quick} \citation{fulkerson2012really} \citation{fulkerson2012really} \citation{fulkerson2012really} \citation{fulkerson2012really} \citation{xiao2010efficient} \citation{xiao2010efficient} \citation{xiao2010efficient} \citation{lefohn2003inter} \citation{lefohn2003interactive} \citation{rumpf2001level} \citation{rumpf2001level} \@writefile{lof}{\contentsline {figure}{\numberline {5.7}{\ignorespaces Segmentation d'une image couleur de 512$\times $512 pixels par l'impl\IeC {\'e}mentation GPU quick-shift de \cite {fulkerson2012really}.}}{47}{figure.5.7}} \newlabel{fig-quickshift-yo}{{5.7}{47}{Segmentation d'une image couleur de 512$\times $512 pixels par l'implémentation GPU quick-shift de \cite {fulkerson2012really}}{figure.5.7}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image originale}}}{47}{figure.5.7}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$\tau =10$ et $\sigma =2$}}}{47}{figure.5.7}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$\tau =10$ et $\sigma =10$}}}{47}{figure.5.7}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$\tau =20$ et $\sigma =10$}}}{47}{figure.5.7}} \@writefile{lof}{\contentsline {figure}{\numberline {5.8}{\ignorespaces Comparaison des segmentations d'une image couleur de 2256$\times $3008 pixels r\IeC {\'e}alis\IeC {\'e}es par \textit {mean-shift} standard et par le \textit {mean-shift kd tree} de \cite {xiao2010efficient}.}}{47}{figure.5.8}} \newlabel{fig-meanshift-castle}{{5.8}{47}{Comparaison des segmentations d'une image couleur de 2256$\times $3008 pixels réalisées par \textit {mean-shift} standard et par le \textit {mean-shift kd tree} de \cite {xiao2010efficient}}{figure.5.8}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image originale}}}{47}{figure.5.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image segment\IeC {\'e}e par mean-shift standard}}}{47}{figure.5.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image segment\IeC {\'e}e par mean-shift kd-tree}}}{47}{figure.5.8}} \citation{lefohn2005streaming} \citation{cates2004gist} \citation{jeong2009scalable} \citation{jeong2009scalable} \citation{Roberts:2010:WGA:1921479.1921499} \citation{lefohn2003inter} \citation{snakegvf06} \citation{bauer2009segmentation} \citation{li2011robust} \citation{snakegvfopencl12} \@writefile{toc}{\contentsline {subsection}{\numberline {5.4.4}Level set et snakes}{48}{subsection.5.4.4}} \citation{snakegvf06} \citation{snakegvf06} \citation{snakegvf06} \newlabel{fig-l7-brain}{{5.9(a)}{49}{Subfigure 5 5.9(a)\relax }{subfigure.5.9.1}{}} \newlabel{sub@fig-l7-brain}{{(a)}{49}{Subfigure 5 5.9(a)\relax }{subfigure.5.9.1}{}} \newlabel{fig-l7-reins}{{5.9(b)}{49}{Subfigure 5 5.9(b)\relax }{subfigure.5.9.2}{}} \newlabel{sub@fig-l7-reins}{{(b)}{49}{Subfigure 5 5.9(b)\relax }{subfigure.5.9.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.9}{\ignorespaces Segmentation d'images issues d'examens IRM par la m\IeC {\'e}thode des level set \IeC {\`a} bande \IeC {\'e}troite.}}{49}{figure.5.9}} \newlabel{fig-l7-narrow}{{5.9}{49}{Segmentation d'images issues d'examens IRM par la méthode des level set à bande étroite}{figure.5.9}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Cerveau 256$\times $256$\times $256 en 7~s}}}{49}{figure.5.9}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Reins et aorte, 256$\times $256$\times $272 en 16~s}}}{49}{figure.5.9}} \newlabel{fig-epaule-init}{{5.10(a)}{49}{Subfigure 5 5.10(a)\relax }{subfigure.5.10.1}{}} \newlabel{sub@fig-epaule-init}{{(a)}{49}{Subfigure 5 5.10(a)\relax }{subfigure.5.10.1}{}} \newlabel{fig-epaule-fin}{{5.10(b)}{49}{Subfigure 5 5.10(b)\relax }{subfigure.5.10.2}{}} \newlabel{sub@fig-epaule-fin}{{(b)}{49}{Subfigure 5 5.10(b)\relax }{subfigure.5.10.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.10}{\ignorespaces Segmentation d'une image d'\IeC {\'e}paule en 1024$\times $1024 pixels issue d'un examen IRM par l'impl\IeC {\'e}mentation du snake GVF de \cite {snakegvf06}. Le contour est repr\IeC {\'e}sent\IeC {\'e} en rouge et son \IeC {\'e}tat final est obtenu en 11~s. Le trac\IeC {\'e} initial 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.}}{49}{figure.5.10}} \newlabel{fig-snakegvf}{{5.10}{49}{Segmentation d'une image d'épaule en 1024$\times $1024 pixels issue d'un examen IRM par l'implémentation du snake GVF de \cite {snakegvf06}. Le contour est représenté en rouge et son état final est obtenu en 11~s. Le tracé initial du contour a été artificiellement épaissi pour le rendre visible à l'échelle de l'impression}{figure.5.10}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Contour initial}}}{49}{figure.5.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Contour final}}}{49}{figure.5.10}} \citation{zheng2012fast} \citation{li2011robust} \citation{snakegvfopencl12} \citation{arbelaez2011contour} \citation{5459410} \citation{arbelaez2011contour} \citation{martin2001database} \citation{bresenham1965algorithm} \citation{martin2001database} \citation{martin2001database} \newlabel{sec-seg-hybride}{{5.4.5}{50}{Algorithmes hybrides\label {sec-seg-hybride}\relax }{subsection.5.4.5}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.4.5}Algorithmes hybrides}{50}{subsection.5.4.5}} \citation{volkov2010better} \@writefile{lof}{\contentsline {figure}{\numberline {5.11}{\ignorespaces Extraction de contour par la version GPU de l'algorithme gPb. Les images sont issues de la base BSDS \cite {martin2001database}}}{51}{figure.5.11}} \newlabel{fig-gPb}{{5.11}{51}{Extraction de contour par la version GPU de l'algorithme gPb. Les images sont issues de la base BSDS \cite {martin2001database}\relax }{figure.5.11}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.5}Conclusion}{51}{section.5.5}} \@writefile{toc}{\contentsline {part}{III\hspace {1em}Algorithmes GPU rapides pour la r\IeC {\'e}duction de bruit et la segmentation}{53}{part.3}} \citation{ChesnaudRB99} \citation{ChesnaudRB99} \@writefile{toc}{\contentsline {chapter}{\numberline {6}La segmentation par snake polygonal orient\IeC {\'e} r\IeC {\'e}gions}{55}{chapter.6}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-snake}{{6}{55}{La segmentation par snake polygonal orienté régions\label {ch-snake}\relax }{chapter.6}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.1}Introduction}{55}{section.6.1}} \@writefile{toc}{\contentsline {section}{\numberline {6.2}Pr\IeC {\'e}sentation de l'algorithme}{55}{section.6.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}Formulation}{55}{subsection.6.2.1}} \newlabel{eq-lhprod1}{{6.2}{56}{Formulation\relax }{equation.6.2.2}{}} \newlabel{eq-pdfgauss}{{6.3}{56}{Formulation\relax }{equation.6.2.3}{}} \newlabel{eq-gl1}{{6.4}{56}{Formulation\relax }{equation.6.2.4}{}} \newlabel{eq-teta}{{6.5}{56}{Formulation\relax }{equation.6.2.5}{}} \newlabel{eq-gl}{{6.6}{56}{Formulation\relax }{equation.6.2.6}{}} \newlabel{snake-formulation}{{6.2.2}{56}{Optimisation des calculs\label {snake-formulation}\relax }{subsection.6.2.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}Optimisation des calculs}{56}{subsection.6.2.2}} \citation{ChesnaudRB99} \citation{GallandBR03} \citation{GallandBR03} \citation{GallandBR03} \newlabel{eq-sommes1}{{6.7}{57}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.7}{}} \newlabel{eq-sommes-gene}{{6.8}{57}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.8}{}} \newlabel{eq-cumuls1}{{6.9}{57}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.9}{}} \newlabel{eq-somme-cumuls2}{{6.10}{57}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.10}{}} \newlabel{eq-somme-contour}{{6.11}{57}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.11}{}} \newlabel{eq-coefC}{{6.12}{57}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.12}{}} \citation{ChesnaudRB99} \@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces \IeC {\`A} gauche : d\IeC {\'e}termination des vecteurs $f_{in}$ et $f_{out}$. \IeC {\`A} droite : code de Freeman d'un vecteur en fonction de sa direction, l'origine \IeC {\'e}tant suppos\IeC {\'e}e au pixel central, en noir. }}{58}{figure.6.1}} \newlabel{fig-freeman}{{6.1}{58}{À gauche : détermination des vecteurs $f_{in}$ et $f_{out}$. À droite : code de Freeman d'un vecteur en fonction de sa direction, l'origine étant supposée au pixel central, en noir. \relax }{figure.6.1}{}} \@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces Valeur du coefficient $C(i,j)$ en fonction des valeurs des codes de Freeman des vecteurs $f_{in}$ et $f_{out}$ \cite {GallandBR03}.}}{58}{table.6.1}} \newlabel{tab-freeman}{{6.1}{58}{Valeur du coefficient $C(i,j)$ en fonction des valeurs des codes de Freeman des vecteurs $f_{in}$ et $f_{out}$ \cite {GallandBR03}}{table.6.1}{}} \newlabel{eq-img-cumul}{{6.13}{58}{Optimisation des calculs\label {snake-formulation}\relax }{equation.6.2.13}{}} \newlabel{li-img-cumul}{{2}{59}{}{AlgoLine3.2}{}} \newlabel{li-bresen}{{18}{59}{}{AlgoLine3.18}{}} \newlabel{li-contrib-seg-deb}{{19}{59}{}{AlgoLine3.19}{}} \newlabel{li-contrib-seg-fin}{{21}{59}{}{AlgoLine3.21}{}} \newlabel{snake-cpu-impl}{{6.2.3}{59}{Implémentation séquentielle\label {snake-cpu-impl}\relax }{subsection.6.2.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}Impl\IeC {\'e}mentation s\IeC {\'e}quentielle}{59}{subsection.6.2.3}} \newlabel{algo-snake-cpu1}{{2}{59}{Implémentation séquentielle\label {snake-cpu-impl}\relax }{algocfline.2}{}} \@writefile{loa}{\contentsline {algocf}{\numberline {2}{\ignorespaces Principe mis en \oe uvre pour la convergence du snake polygonal}}{59}{algocfline.2}} \@writefile{loa}{\contentsline {algocf}{\numberline {3}{\ignorespaces D\IeC {\'e}tail de l'impl\IeC {\'e}mentation du snake polygonal}}{60}{algocfline.3}} \newlabel{algo-snake-cpu2}{{3}{60}{Implémentation séquentielle\label {snake-cpu-impl}\relax }{algocfline.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.2.4}Performances}{60}{subsection.6.2.4}} \@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces \IeC {\'E}volution du contour lors de la segmentation d'une image de 512$\times $512 pixels. La convergence est obtenue \IeC {\`a} l'it\IeC {\'e}ration 14 apr\IeC {\`e}s 44~ms pour un total de 256 n\oe uds.}}{61}{figure.6.2}} \newlabel{fig-snakecpu-cochon512}{{6.2}{61}{Évolution du contour lors de la segmentation d'une image de 512$\times $512 pixels. La convergence est obtenue à l'itération 14 après 44~ms pour un total de 256 n\oe uds}{figure.6.2}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Initialisation : 4 n\oe uds}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {It\IeC {\'e}ration 1 : 8 n\oe uds 3~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {It\IeC {\'e}ration 2 : 16 n\oe uds 1~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {It\IeC {\'e}ration 3, 32 n\oe uds 1~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {It\IeC {\'e}ration 7 : 223 n\oe uds 3~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {It\IeC {\'e}ration 10 : 244 n\oe uds 3~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {It\IeC {\'e}ration 13 : 256 n\oe uds 3~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {It\IeC {\'e}ration 14 : 256 n\oe uds 3~ms}}}{61}{figure.6.2}} \@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces Influence du contour initial sur la segmentation. Le contour final 1 est celui de la figure \ref {fig-snakecpu-cochon512}.}}{62}{figure.6.3}} \newlabel{fig-snakecpu-compinit}{{6.3}{62}{Influence du contour initial sur la segmentation. Le contour final 1 est celui de la figure \ref {fig-snakecpu-cochon512}}{figure.6.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Initialisation 2 }}}{62}{figure.6.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Contour final 2 : 273 n\oe uds 87~ms}}}{62}{figure.6.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Contour final 1 : 256 n\oe uds 44~ms}}}{62}{figure.6.3}} \newlabel{fig-snakecpu-cochon4ka}{{6.4(a)}{62}{Subfigure 6 6.4(a)\relax }{subfigure.6.4.1}{}} \newlabel{sub@fig-snakecpu-cochon4ka}{{(a)}{62}{Subfigure 6 6.4(a)\relax }{subfigure.6.4.1}{}} \newlabel{fig-snakecpu-cochon4kb}{{6.4(b)}{62}{Subfigure 6 6.4(b)\relax }{subfigure.6.4.2}{}} \newlabel{sub@fig-snakecpu-cochon4kb}{{(b)}{62}{Subfigure 6 6.4(b)\relax }{subfigure.6.4.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {6.4}{\ignorespaces Segmentation de l'image de test en 4000$\times $4000 pixels. 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.}}{62}{figure.6.4}} \newlabel{fig-snakecpu-cochon4k}{{6.4}{62}{Segmentation de l'image de test en 4000$\times $4000 pixels. Le tracé du contour a été artificiellement épaissi pour le rendre visible à l'échelle de l'impression}{figure.6.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$d_{max}=16$ et $l_{min}=8$, 1246 n\oe uds en 1.3~s}}}{62}{figure.6.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$d_{max}=128$ et $l_{min}=32$, 447 n\oe uds en 0.7~s}}}{62}{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.}}{63}{figure.6.5}} \newlabel{fig-snakecpu-cochon4kc3}{{6.5}{63}{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.}}{63}{table.6.2}} \newlabel{tab-snakecpu-speed-size}{{6.2}{63}{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}{63}{section.6.3}} \citation{BlellochTR90} \newlabel{fig-snakecpu-chronos1}{{6.3}{64}{Implémentation parallèle GPU du snake polygonal\relax }{section.6.3}{}} \@writefile{lof}{\contentsline {figure}{\numberline {6.6}{\ignorespaces \IeC {\'E}volution du co\IeC {\^u}t relatif des trois fonctions les plus consommatrices en temps de calcul en fonction de la taille de l'image \IeC {\`a} traiter.}}{64}{figure.6.6}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}Pr\IeC {\'e}-calculs des images cumul\IeC {\'e}es}{64}{subsection.6.3.1}} \@writefile{lof}{\contentsline {figure}{\numberline {6.7}{\ignorespaces Calcul des images cumul\IeC {\'e}es $S_I$ et $S_{I^2}$ en trois \IeC {\'e}tapes successives. a) cumul partiel bloc par bloc et m\IeC {\'e}morisation de la somme de chaque bloc. b) cumul sur le vecteur des sommes partielles. c) ajout des sommes partielles \IeC {\`a} chaque \IeC {\'e}l\IeC {\'e}ment des blocs cumul\IeC {\'e}s.}}{65}{figure.6.7}} \newlabel{fig-calcul-cumuls}{{6.7}{65}{Calcul des images cumulées $S_I$ et $S_{I^2}$ en trois étapes successives. a) cumul partiel bloc par bloc et mémorisation de la somme de chaque bloc. b) cumul sur le vecteur des sommes partielles. c) ajout des sommes partielles à chaque élément des blocs cumulés}{figure.6.7}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {D\IeC {\'e}tail des op\IeC {\'e}rations effectu\IeC {\'e}es par le \textit {kernel} \texttt {compute\_block\_prefixes()}. La valeur $bs$ correspond au nombre de pixels de chaque bloc, qui est aussi le nombre de threads ex\IeC {\'e}cut\IeC {\'e} par chaque bloc de la grille de calcul.}}}{65}{figure.6.7}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {D\IeC {\'e}tail des op\IeC {\'e}rations effectu\IeC {\'e}es par le \textit {kernel} \texttt {scan\_blocksums()}.}}}{65}{figure.6.7}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {D\IeC {\'e}tail des op\IeC {\'e}rations effectu\IeC {\'e}es par le \textit {kernel} \texttt {add\_sums2prefixes()}.}}}{65}{figure.6.7}} \@writefile{lot}{\contentsline {table}{\numberline {6.3}{\ignorespaces Acc\IeC {\'e}l\IeC {\'e}ration constat\IeC {\'e}e, pour le calcul des images cumul\IeC {\'e}es, 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.}}{66}{table.6.3}} \newlabel{tab-speedup-cumuls}{{6.3}{66}{Accélération constatée, pour le calcul des images cumulées, de l'implémentation GPU (C2070) par rapport à l'implémentation CPU de référence}{table.6.3}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}Calcul des contributions des segments}{66}{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.}}{67}{figure.6.8}} \newlabel{fig-structure-segment}{{6.8}{67}{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)}{69}{Subfigure 6 6.9(a)\relax }{subfigure.6.9.1}{}} \newlabel{sub@fig-cycle-contribs-segments-a}{{(a)}{69}{Subfigure 6 6.9(a)\relax }{subfigure.6.9.1}{}} \newlabel{fig-cycle-contribs-segments-b}{{6.9(b)}{69}{Subfigure 6 6.9(b)\relax }{subfigure.6.9.2}{}} \newlabel{sub@fig-cycle-contribs-segments-b}{{(b)}{69}{Subfigure 6 6.9(b)\relax }{subfigure.6.9.2}{}} \newlabel{fig-cycle-contribs-segments-c}{{6.9(c)}{69}{Subfigure 6 6.9(c)\relax }{subfigure.6.9.3}{}} \newlabel{sub@fig-cycle-contribs-segments-c}{{(c)}{69}{Subfigure 6 6.9(c)\relax }{subfigure.6.9.3}{}} \newlabel{fig-cycle-contribs-segments-d}{{6.9(d)}{69}{Subfigure 6 6.9(d)\relax }{subfigure.6.9.4}{}} \newlabel{sub@fig-cycle-contribs-segments-d}{{(d)}{69}{Subfigure 6 6.9(d)\relax }{subfigure.6.9.4}{}} \newlabel{fig-cycle-contribs-segments-e}{{6.9(e)}{69}{Subfigure 6 6.9(e)\relax }{subfigure.6.9.5}{}} \newlabel{sub@fig-cycle-contribs-segments-e}{{(e)}{69}{Subfigure 6 6.9(e)\relax }{subfigure.6.9.5}{}} \newlabel{fig-cycle-contribs-segments-f}{{6.9(f)}{69}{Subfigure 6 6.9(f)\relax }{subfigure.6.9.6}{}} \newlabel{sub@fig-cycle-contribs-segments-f}{{(f)}{69}{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.}}{69}{figure.6.9}} \newlabel{fig-cycle-contribs-segments}{{6.9}{69}{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.}}}{69}{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}.}}}{69}{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}.}}}{69}{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}.}}}{69}{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}.}}}{69}{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}.}}}{69}{figure.6.9}} \@writefile{lof}{\contentsline {figure}{\numberline {6.10}{\ignorespaces D\IeC {\'e}termination des coefficients $C(i,j)$ des pixels du contour.}}{70}{figure.6.10}} \newlabel{fig-segment-k<1}{{6.10}{70}{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}}}{70}{figure.6.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Quadrants 2 et 3}}}{70}{figure.6.10}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {6.3.2.1}Cas particulier des segments dont la pente $k$ v\IeC {\'e}rifie $|k|\leq 1$}{70}{subsubsection.6.3.2.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.3}Performances}{71}{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}{71}{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.}}{72}{table.6.4}} \newlabel{tab-snake-results}{{6.4}{72}{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}. }}{72}{figure.6.11}} \newlabel{fig-snakegpu-result}{{6.11}{72}{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} \newlabel{fig-smart-init}{{6.3.4}{73}{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.}}{73}{figure.6.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {D\IeC {\'e}termination de $j_L$ et $j_H$.}}}{73}{figure.6.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {D\IeC {\'e}termination de $i_L$ et $i_H$.}}}{73}{figure.6.12}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.5}Conclusion}{73}{subsection.6.3.5}} \citation{haralick1987image} \citation{matheron75} \citation{caselles97} \citation{Caselles99topographicmaps} \@writefile{toc}{\contentsline {chapter}{\numberline {7}R\IeC {\'e}duction de bruit par recherche des lignes de niveaux}{75}{chapter.7}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-lniv}{{7}{75}{Réduction de bruit par recherche des lignes de niveaux\label {ch-lniv}\relax }{chapter.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.1}Introduction}{75}{section.7.1}} \citation{Caselles99topographicmaps} \citation{Caselles99topographicmaps} \citation{bertaux2004speckle} \@writefile{lof}{\contentsline {figure}{\numberline {7.1}{\ignorespaces Exemple d'exploitation des lignes de niveaux. En haut : l'image originale et sa repr\IeC {\'e}sentation \IeC {\`a} l'\IeC {\'e}chelle $\times $150. En bas : les lignes de niveaux de l'image originale et celles utilis\IeC {\'e}es pour la mise \IeC {\`a} l'\IeC {\'e}chelle. Toutes les lignes de niveaux de l'image de droite existent \IeC {\`a} l'identique dans l'ensemble original. Illustration tir\IeC {\'e}e de \cite {Caselles99topographicmaps}.}}{76}{figure.7.1}} \newlabel{fig-levellines-monasse}{{7.1}{76}{\label {fig-levellines-monasse}Exemple d'exploitation des lignes de niveaux. En haut : l'image originale et sa représentation à l'échelle $\times $150. En bas : les lignes de niveaux de l'image originale et celles utilisées pour la mise à l'échelle. Toutes les lignes de niveaux de l'image de droite existent à l'identique dans l'ensemble original. Illustration tirée de \cite {Caselles99topographicmaps}}{figure.7.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.2}Pr\IeC {\'e}sentation de l'algorithme}{77}{section.7.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.2.1}Formulation}{77}{subsection.7.2.1}} \@writefile{lof}{\contentsline {figure}{\numberline {7.2}{\ignorespaces D\IeC {\'e}tail des motifs et de leur repr\IeC {\'e}sentation interne, pour la taille $a=5$. }}{77}{figure.7.2}} \newlabel{fig-lniv-p5q1}{{7.2}{77}{\label {fig-lniv-p5q1}Détail des motifs et de leur représentation interne, pour la taille $a=5$. \relax }{figure.7.2}{}} \@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.}}}{77}{figure.7.2}} \@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.}}}{77}{figure.7.2}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {7.2.1.1}D\IeC {\'e}termination du premier segment}{77}{subsubsection.7.2.1.1}} \@writefile{lof}{\contentsline {figure}{\numberline {7.3}{\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$).}}{78}{figure.7.3}} \newlabel{fig-lniv-regions}{{7.3}{78}{\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.3}{}} \newlabel{LL2}{{7.1}{78}{Détermination du premier segment\relax }{equation.7.2.1}{}} \newlabel{GL}{{7.3}{78}{Détermination du premier segment\relax }{equation.7.2.3}{}} \newlabel{GL2}{{7.4}{78}{Détermination du premier segment\relax }{equation.7.2.4}{}} \newlabel{LL1}{{7.5}{78}{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}{79}{subsubsection.7.2.1.2}} \@writefile{lof}{\contentsline {figure}{\numberline {7.4}{\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.}}{79}{figure.7.4}} \newlabel{fig-lniv-allongement}{{7.4}{79}{\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.4}{}} \newlabel{LLNP}{{7.6}{80}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.7.2.6}{}} \newlabel{LLNP2}{{7.7}{80}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.7.2.7}{}} \newlabel{GLRT}{{7.8}{80}{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}{80}{section.7.3}} \citation{Dabov06imagedenoising} \@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}Isolines \IeC {\'e}valu\IeC {\'e}es semi-globalement}{81}{subsection.7.3.1}} \newlabel{pild:debut}{{7.5(a)}{81}{Subfigure 7 7.5(a)\relax }{subfigure.7.5.1}{}} \newlabel{sub@pild:debut}{{(a)}{81}{Subfigure 7 7.5(a)\relax }{subfigure.7.5.1}{}} \newlabel{pild:sub1}{{7.5(b)}{81}{Subfigure 7 7.5(b)\relax }{subfigure.7.5.2}{}} \newlabel{sub@pild:sub1}{{(b)}{81}{Subfigure 7 7.5(b)\relax }{subfigure.7.5.2}{}} \newlabel{pild:sub2}{{7.5(c)}{81}{Subfigure 7 7.5(c)\relax }{subfigure.7.5.3}{}} \newlabel{sub@pild:sub2}{{(c)}{81}{Subfigure 7 7.5(c)\relax }{subfigure.7.5.3}{}} \newlabel{pild:sub3}{{7.5(d)}{81}{Subfigure 7 7.5(d)\relax }{subfigure.7.5.4}{}} \newlabel{sub@pild:sub3}{{(d)}{81}{Subfigure 7 7.5(d)\relax }{subfigure.7.5.4}{}} \newlabel{pild:sub4}{{7.5(e)}{81}{Subfigure 7 7.5(e)\relax }{subfigure.7.5.5}{}} \newlabel{sub@pild:sub4}{{(e)}{81}{Subfigure 7 7.5(e)\relax }{subfigure.7.5.5}{}} \newlabel{pild:sub5}{{7.5(f)}{81}{Subfigure 7 7.5(f)\relax }{subfigure.7.5.6}{}} \newlabel{sub@pild:sub5}{{(f)}{81}{Subfigure 7 7.5(f)\relax }{subfigure.7.5.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.5}{\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.}}{81}{figure.7.5}} \newlabel{fig-lniv-pild}{{7.5}{81}{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.5}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Isoline comprenant deux segments $s_1$ et $s_2$.}}}{81}{figure.7.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Premier segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,0}$.}}}{81}{figure.7.5}} \@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}$.}}}{81}{figure.7.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Troisi\IeC {\`e}me segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,2}$.}}}{81}{figure.7.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Quatri\IeC {\`e}me segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,3}$.}}}{81}{figure.7.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {Cinqui\IeC {\`e}me segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,4}$.}}}{81}{figure.7.5}} \newlabel{fig-lniv-imgslansel}{{7.3.1}{82}{Isolines évaluées semi-globalement\relax }{subfigure.7.6.13}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.6}{\ignorespaces Images non bruit\IeC {\'e}es de la base d'images en niveaux de gris de S. Lansel.}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {airplane}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {boat}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {barbara}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {couple}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {elaine}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {fingerprint}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {goldhill}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {lena}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {man}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(j)}{\ignorespaces {mandrill}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(k)}{\ignorespaces {peppers}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(l)}{\ignorespaces {stream}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(m)}{\ignorespaces {zelda}}}{82}{figure.7.6}} \@writefile{lof}{\contentsline {figure}{\numberline {7.7}{\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.}}{83}{figure.7.7}} \newlabel{fig-lniv-histo-singe}{{7.7}{83}{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.7}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.8}{\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.}}{83}{figure.7.8}} \newlabel{fig-lniv-histo-autres}{{7.8}{83}{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.8}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Airplane}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Barbara}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Boat}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Couple}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Elaine}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {Finger}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {Goldhill}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {Lena}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {Man}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(j)}{\ignorespaces {Peppers}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(k)}{\ignorespaces {Stream}}}{83}{figure.7.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(l)}{\ignorespaces {Zelda}}}{83}{figure.7.8}} \newlabel{subsection-pipd-intro}{{7.3.2}{83}{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}{83}{subsection.7.3.2}} \newlabel{cx}{{7.9}{84}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{equation.7.3.9}{}} \newlabel{cx2}{{7.10}{84}{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.}}{84}{algocfline.4}} \newlabel{algo-lniv-init}{{4}{84}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{algocfline.4}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.9}{\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.}}{85}{figure.7.9}} \newlabel{fig-lniv-pipd}{{7.9}{85}{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.9}{}} \@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.}}}{85}{figure.7.9}} \@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 }$.}}}{85}{figure.7.9}} \@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}.}}}{85}{figure.7.9}} \@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}.}}}{85}{figure.7.9}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.3.3}Mod\IeC {\`e}le PI-PD hybride}{85}{subsection.7.3.3}} \@writefile{loa}{\contentsline {algocf}{\numberline {5}{\ignorespaces \texttt {kernel\_precomp()} : g\IeC {\'e}n\IeC {\'e}ration des matrices $I_{\Theta }$ et $I_{\Sigma }$.}}{86}{algocfline.5}} \newlabel{algo-lniv-precomp}{{5}{86}{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 bords}{86}{subsubsection.7.3.3.1}} \@writefile{loa}{\contentsline {algocf}{\numberline {6}{\ignorespaces \texttt {kernel\_PIPD()} : gestion du processus d'allongement.}}{87}{algocfline.6}} \newlabel{algo-lniv-pipd}{{6}{87}{Isolines à segments pré-évalués - modèle PI-PD\label {subsection-pipd-intro}\relax }{algocfline.6}{}} \newlabel{GLRT2}{{7.11}{87}{Le détecteur de bords\relax }{equation.7.3.11}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.10}{\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.10}} \newlabel{fig-lniv-lsr1}{{7.10}{88}{Situation de la région servant à illustrer le comportant du modèle PI-PD dans les zones à faible pente (LSR)}{figure.7.10}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence non bruit\IeC {\'e}e.}}}{88}{figure.7.10}} \@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.10}} \citation{BuadesCM06} \newlabel{fig-lniv-lsr-tirages-a}{{7.11(a)}{89}{Subfigure 7 7.11(a)\relax }{subfigure.7.11.1}{}} \newlabel{sub@fig-lniv-lsr-tirages-a}{{(a)}{89}{Subfigure 7 7.11(a)\relax }{subfigure.7.11.1}{}} \newlabel{fig-lniv-lsr-tirages-b}{{7.11(b)}{89}{Subfigure 7 7.11(b)\relax }{subfigure.7.11.2}{}} \newlabel{sub@fig-lniv-lsr-tirages-b}{{(b)}{89}{Subfigure 7 7.11(b)\relax }{subfigure.7.11.2}{}} \newlabel{fig-lniv-lsr-tirages-c}{{7.11(c)}{89}{Subfigure 7 7.11(c)\relax }{subfigure.7.11.3}{}} \newlabel{sub@fig-lniv-lsr-tirages-c}{{(c)}{89}{Subfigure 7 7.11(c)\relax }{subfigure.7.11.3}{}} \newlabel{fig-lniv-lsr-tirages-d}{{7.11(d)}{89}{Subfigure 7 7.11(d)\relax }{subfigure.7.11.4}{}} \newlabel{sub@fig-lniv-lsr-tirages-d}{{(d)}{89}{Subfigure 7 7.11(d)\relax }{subfigure.7.11.4}{}} \newlabel{fig-lniv-lsr-tirages-e}{{7.11(e)}{89}{Subfigure 7 7.11(e)\relax }{subfigure.7.11.5}{}} \newlabel{sub@fig-lniv-lsr-tirages-e}{{(e)}{89}{Subfigure 7 7.11(e)\relax }{subfigure.7.11.5}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.11}{\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.}}{89}{figure.7.11}} \newlabel{fig-lniv-lsr-tirages}{{7.11}{89}{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.11}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence.}}}{89}{figure.7.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }1$}}}{89}{figure.7.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }2$}}}{89}{figure.7.11}} \@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$}}}{89}{figure.7.11}} \@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$}}}{89}{figure.7.11}} \@writefile{toc}{\contentsline {section}{\numberline {7.4}R\IeC {\'e}sultats}{89}{section.7.4}} \@writefile{lof}{\contentsline {figure}{\numberline {7.12}{\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.}}{90}{figure.7.12}} \newlabel{fig-lniv-detecteur}{{7.12}{90}{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.12}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.13}{\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.}}{90}{figure.7.13}} \newlabel{fig-lniv-classification}{{7.13}{90}{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.13}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image bruit\IeC {\'e}e}}}{90}{figure.7.13}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Classification des pixels. }}}{90}{figure.7.13}} \@writefile{lof}{\contentsline {figure}{\numberline {7.14}{\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.}}{91}{figure.7.14}} \newlabel{fig-lniv-exempleresultat}{{7.14}{91}{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.14}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image \textit {airplane} bruit\IeC {\'e}e.}}}{91}{figure.7.14}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par moyenneur 5$\times $5.}}}{91}{figure.7.14}} \@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$.}}}{91}{figure.7.14}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image \textit {airplane} filtr\IeC {\'e}e par BM3D.}}}{91}{figure.7.14}} \@writefile{toc}{\contentsline {section}{\numberline {7.5}Extension aux images couleurs}{91}{section.7.5}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.5.1}Expression du crit\IeC {\`e}re}{91}{subsection.7.5.1}} \newlabel{eqlv0rgb}{{7.12}{91}{Expression du critère\relax }{equation.7.5.12}{}} \citation{tid2008a} \citation{psnrhvsm} \citation{tid2008a} \newlabel{eqlv1rgb}{{7.16}{92}{Expression du critère\relax }{equation.7.5.16}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}R\IeC {\'e}sultats - analyse}{92}{subsection.7.5.2}} \newlabel{fig-lniv-tid2008ref}{{7.5.2}{93}{Résultats - analyse\relax }{subfigure.7.15.25}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.15}{\ignorespaces Images non bruit\IeC {\'e}es de la base tid2008.}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {I01}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {I02}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {I03}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {I04}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {I05}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {I06}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {I07}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {I08}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {I09}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(j)}{\ignorespaces {I10}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(k)}{\ignorespaces {I11}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(l)}{\ignorespaces {I12}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(m)}{\ignorespaces {I13}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(n)}{\ignorespaces {I14}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(o)}{\ignorespaces {I15}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(p)}{\ignorespaces {I16}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(q)}{\ignorespaces {I17}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(r)}{\ignorespaces {I18}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(s)}{\ignorespaces {I19}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(t)}{\ignorespaces {I20}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(u)}{\ignorespaces {I21}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(v)}{\ignorespaces {I22}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(w)}{\ignorespaces {I23}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(x)}{\ignorespaces {I24}}}{93}{figure.7.15}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(y)}{\ignorespaces {I25}}}{93}{figure.7.15}} \newlabel{fig-lnivrgb-ex}{{7.5.2}{94}{Résultats - analyse\relax }{figure.7.15}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7.16}{\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.}}{94}{figure.7.16}} \newlabel{fig-lnivgrb-ex}{{7.16}{94}{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.16}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image I09 bruit\IeC {\'e}e, PSNR-HVS-M=23,70~dB.}}}{94}{figure.7.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image I09 filtr\IeC {\'e}e par PI-PD, PSNR-HVS-M=27,62~dB.}}}{94}{figure.7.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image I09 filtr\IeC {\'e}e par CBM3D, PSNR-HVS-M=33,26~dB.}}}{94}{figure.7.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image I25 bruit\IeC {\'e}e, PSNR-HVS-M=24,46~dB.}}}{94}{figure.7.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Image I25 filtr\IeC {\'e}e par PI-PD, PSNR-HVS-M=24,62~dB.}}}{94}{figure.7.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {Image I25 filtr\IeC {\'e}e par CBM3D, PSNR-HVS-M=31,09~dB.}}}{94}{figure.7.16}} \citation{perrotlniv} \@writefile{toc}{\contentsline {section}{\numberline {7.6}Conclusion}{95}{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()}}}{96}{algocfline.7}} \newlabel{algo-lniv-detecteur}{{7}{96}{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. }}{96}{table.7.1}} \newlabel{tab-lniv-chronos}{{7.1}{96}{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.}}{97}{table.7.2}} \newlabel{tab-lniv-results}{{7.2}{97}{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$).}}{98}{table.7.3}} \newlabel{tab-lniv-rvb}{{7.3}{98}{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}{99}{chapter.8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-median}{{8}{99}{Le filtre médian sur GPU\label {ch-median}\relax }{chapter.8}{}} \@writefile{toc}{\contentsline {section}{\numberline {8.1}Introduction}{99}{section.8.1}} \@writefile{toc}{\contentsline {section}{\numberline {8.2}Les transferts de donn\IeC {\'e}es}{99}{section.8.2}} \@writefile{loa}{\contentsline {algocf}{\numberline {8}{\ignorespaces Gestion des transferts m\IeC {\'e}moire vers et depuis le GPU.}}{100}{algocfline.8}} \newlabel{algo-median-memcpy}{{8}{100}{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.}}{100}{table.8.1}} \newlabel{tab-median-memcpy}{{8.1}{100}{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}{101}{section.8.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}La s\IeC {\'e}lection de la valeur m\IeC {\'e}diane}{101}{subsection.8.3.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Masquage des latences}{102}{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. }}{103}{figure.8.1}} \newlabel{fig-median-ffs3-a}{{8.1}{103}{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.}}{103}{figure.8.2}} \newlabel{fig-median-ffs3-b}{{8.2}{103}{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.}}{104}{figure.8.3}} \newlabel{fig-median-overlap}{{8.3}{104}{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}{105}{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.}{105}{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)}}{106}{figure.8.4}} \newlabel{fig-median-comp}{{8.4}{106}{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.}}}{106}{figure.8.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {image 4096$\times $4096 pixels.}}}{106}{figure.8.4}} \@writefile{toc}{\contentsline {section}{\numberline {8.4}R\IeC {\'e}sultats}{106}{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.}}{106}{table.8.2}} \newlabel{tab-median-coutcpy}{{8.2}{106}{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.}}{107}{table.8.3}} \newlabel{tab-median-chronos}{{8.3}{107}{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.}}{107}{table.8.4}} \newlabel{tab-median-debitmax}{{8.4}{107}{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}{108}{section.8.5}} \citation{convolutionsoup} \@writefile{toc}{\contentsline {chapter}{\numberline {9}Les filtres de convolution sur GPU}{109}{chapter.9}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-convo}{{9}{109}{Les filtres de convolution sur GPU\label {ch-convo}\relax }{chapter.9}{}} \@writefile{toc}{\contentsline {section}{\numberline {9.1}Introduction}{109}{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}{109}{section.9.2}} \@writefile{loa}{\contentsline {algocf}{\numberline {9}{\ignorespaces Convolution g\IeC {\'e}n\IeC {\'e}rique sur GPU}}{110}{algocfline.9}} \newlabel{algo-convo-gene}{{9}{110}{Implémentation générique de la convolution non séparable sur GPU\relax }{algocfline.9}{}} \newlabel{lst-convo-gene3reg8}{{9.1}{110}{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.}{110}{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.}}{111}{table.9.1}} \newlabel{tab-convo-gene3reg8-2070}{{9.1}{111}{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.}}{111}{table.9.2}} \newlabel{tab-convo-gene3reg8-480}{{9.2}{111}{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}{111}{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)$}}{112}{figure.9.1}} \newlabel{fig-convo-overlap}{{9.1}{112}{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.}}}{112}{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.}}}{112}{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. }}{113}{table.9.3}} \newlabel{tab-convo-8x8p}{{9.3}{113}{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}{114}{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.}{114}{lstlisting.9.2}} \@writefile{toc}{\contentsline {section}{\numberline {9.4}Cas de la convolution s\IeC {\'e}parable}{115}{section.9.4}} \newlabel{lst-convo-1Dv}{{9.3}{115}{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.}{115}{lstlisting.9.3}} \newlabel{lst-convo-1Dh}{{9.4}{116}{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.}{116}{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.}}{117}{table.9.4}} \newlabel{tab-convons-nv}{{9.4}{117}{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}{118}{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.}{118}{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}.}}{119}{table.9.5}} \newlabel{tab-convo-memcpy}{{9.5}{119}{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.}}{119}{table.9.6}} \newlabel{tab-convons-memcpy}{{9.6}{119}{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.}}{120}{table.9.7}} \newlabel{tab-convons-optim}{{9.7}{120}{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.}}{120}{table.9.8}} \newlabel{tab-convons-tpg}{{9.8}{120}{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}{120}{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.}}{121}{figure.9.2}} \newlabel{fig-convomed-copie}{{9.2}{121}{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.}}}{121}{figure.9.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {T\IeC {\'e}l\IeC {\'e}chargement des fichiers.}}}{121}{figure.9.2}} \@writefile{toc}{\contentsline {chapter}{\numberline {10}Conclusion g\IeC {\'e}n\IeC {\'e}rale}{123}{chapter.10}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \bibstyle{plain} \bibdata{biblio} \bibcite{kddcup99}{1} \bibcite{kodakccd}{2} \bibcite{adalsteinsson1994fast}{3} \bibcite{agarwal2002exact}{4} \bibcite{aldinucci2012parallel}{5} \bibcite{arbelaez2011contour}{6} \bibcite{arora1998approximation}{7} \bibcite{bauer2009segmentation}{8} \bibcite{bertaux2004speckle}{9} \bibcite{5767240}{10} \bibcite{BlellochTR90}{11} \bibcite{boykov2004experimental}{12} \bibcite{bresenham1965algorithm}{13} \bibcite{1467423}{14} \bibcite{BuadesCM06}{15} \bibcite{Caselles99topographicmaps}{16} \bibcite{caselles97}{17} \bibcite{5459410}{18} \bibcite{cates2004gist}{19} \bibcite{chandran2009computational}{20} \bibcite{che2008performance}{21} \bibcite{chen09}{22} \bibcite{1093941}{23} \bibcite{cheng1995mean}{24} \bibcite{cherkassky1997implementing}{25} \bibcite{ChesnaudRB99}{26} \bibcite{cohen1993surface}{27} \bibcite{comaniciu1999mean}{28} \bibcite{comaniciu2002mean}{29} \bibcite{cutrona1990synthetic}{30} \bibcite{Dabov06imagedenoising}{31} \bibcite{Dabov09bm3dimage}{32} \bibcite{Daubechies:1992:TLW:130655}{33} \bibcite{dixit2005gpu}{34} \bibcite{elad2006image}{35} \bibcite{felzenszwalb2004efficient}{36} \bibcite{fluck2006gpu}{37} \bibcite{foley1994introduction}{38} \bibcite{ford1955simple}{39} \bibcite{fukunaga1975estimation}{40} \bibcite{fulkerson2012really}{41} \bibcite{GallandBR03}{42} \bibcite{galland2005minimal}{43} \bibcite{GermainR01}{44} \bibcite{nlmeansgpubelge}{45} \bibcite{haralick1987image}{46} \bibcite{snakegvf06}{47} \bibcite{healey1994radiometric}{48} \bibcite{hochbaum2013simplifications}{49} \bibcite{5170921}{50} \bibcite{humphrey1924psychology}{51} \bibcite{jeong2009scalable}{52} \bibcite{5402362}{53} \bibcite{KassWT88}{54} \bibcite{keselman1998extraction}{55} \bibcite{cmla2009Kes}{56} \bibcite{kohli2007dynamic}{57} \bibcite{lefohn2003inter}{58} \bibcite{lefohn2003interactive}{59} \bibcite{lefohn2005streaming}{60} \bibcite{li2009mean}{61} \bibcite{li2011robust}{62} \bibcite{macqueen1967some}{63} \bibcite{Mallat:2008:WTS:1525499}{64} \bibcite{mancuso2001introduction}{65} \bibcite{martin2001database}{66} \bibcite{matheron75}{67} \bibcite{coil}{68} \bibcite{CUDAPG}{69} \bibcite{osher1988fronts}{70} \bibcite{4310076}{71} \bibcite{medianggems5}{72} \bibcite{PALHANOXAVIERDEFONTES}{73} \bibcite{pelleg2000x}{74} \bibcite{4287006}{75} \bibcite{6036776}{76} \bibcite{perrotbookgpu}{77} \bibcite{perrot2013fine}{78} \bibcite{perrotlniv}{79} \bibcite{1521458}{80} \bibcite{tid2008a}{81} \bibcite{psnrhvsm}{82} \bibcite{4587843}{83} \bibcite{Roberts:2010:WGA:1921479.1921499}{84} \bibcite{ronfard1994region}{85} \bibcite{rumpf2001level}{86} \bibcite{sanchezICASSP12}{87} \bibcite{6288187}{88} \bibcite{sethian1996fast}{89} \bibcite{kmeansgpuopengl}{90} \bibcite{shi2000normalized}{91} \bibcite{snakegvfopencl12}{92} \bibcite{convolutionsoup}{93} \bibcite{graphcutscuda}{94} \bibcite{strang1999discrete}{95} \bibcite{sanchez2013highly}{96} \bibcite{theuwissen2001ccd}{97} \bibcite{710815}{98} \bibcite{tukey77}{99} \bibcite{van2004detection}{100} \bibcite{vedaldi2008quick}{101} \bibcite{4563095}{102} \bibcite{Vineet:2009:FMS:1572769.1572796}{103} \bibcite{volkov2010better}{104} \bibcite{wang2001image}{105} \bibcite{wang2003image}{106} \bibcite{Wang04imagequality}{107} \bibcite{wong2010demystifying}{108} \bibcite{wu1993optimal}{109} \bibcite{xiao2010efficient}{110} \bibcite{5206542}{111} \bibcite{Zahn:1971:GMD:1309266.1309359}{112} \bibcite{zheng2011performance}{113} \bibcite{zheng2012fast}{114} \citation{CUDAPG} \citation{CUDAPG} \citation{zheng2011performance} \citation{graphcutscuda} \citation{fulkerson2012really} \citation{xiao2010efficient} \citation{snakegvf06} \citation{martin2001database} \citation{Caselles99topographicmaps} \citation{wong2010demystifying} \citation{GallandBR03}