\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 {chapter}{\numberline {1}Introduction}{9}{chapter.1}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \citation{CUDAPG} \citation{CUDAPG} \citation{CUDAPG} \citation{CUDAPG} \@writefile{toc}{\contentsline {chapter}{\numberline {2}Les processeurs graphiques (GPU) NVidia\textregistered }{13}{chapter.2}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{ch-GPU}{{2}{13}{Les processeurs graphiques (GPU) NVidia\textregistered \relax }{chapter.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {2.1}Pourquoi ?}{13}{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}).}}{13}{figure.2.1}} \newlabel{fig-gpucpu1}{{2.1}{13}{Comparaison des structures d'un c\oe ur de GPU et d'un c\oe ur de CPU (d'après \cite {CUDAPG})}{figure.2.1}{}} \citation{wong2010demystifying} \@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}).}}{14}{figure.2.2}} \newlabel{fig-gpucpu2}{{2.2}{14}{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.}}}{14}{figure.2.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Bande passante th\IeC {\'e}orique maximale des diverses architectures.}}}{14}{figure.2.2}} \@writefile{toc}{\contentsline {section}{\numberline {2.2}Comment ?}{14}{section.2.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.1}Le mat\IeC {\'e}riel}{14}{subsection.2.2.1}} \citation{wong2010demystifying} \citation{wong2010demystifying} \@writefile{lof}{\contentsline {figure}{\numberline {2.3}{\ignorespaces Organisation des GPU d'architecture Fermi, comme le C2070 (d'apr\IeC {\`e}s www.hpcresearch.nl).}}{15}{figure.2.3}} \newlabel{fig-c2070}{{2.3}{15}{Organisation des GPU 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 }}}{15}{figure.2.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Constitution d'un SM.}}}{15}{figure.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/}. Les mesures ont \IeC {\'e}t\IeC {\'e} obtenues \IeC {\`a} l'aide des microprogrammes de test de \cite {wong2010demystifying}.}}{15}{table.2.1}} \newlabel{tab-gpu-memoire}{{2.1}{15}{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/}. Les mesures ont été obtenues à l'aide des microprogrammes de test de \cite {wong2010demystifying}}{table.2.1}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2.2}Le logiciel}{15}{subsection.2.2.2}} \@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.}}{16}{figure.2.4}} \newlabel{fig-threads}{{2.4}{16}{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 {subsection}{\numberline {2.2.3}l'Occupancy}{16}{subsection.2.2.3}} \citation{Caselles99topographicmaps} \citation{cutrona1990synthetic} \@writefile{toc}{\contentsline {chapter}{\numberline {3}Le traitement des images bruit\IeC {\'e}es}{19}{chapter.3}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \citation{mancuso2001introduction} \citation{theuwissen2001ccd} \citation{healey1994radiometric} \citation{kodakccd} \@writefile{toc}{\contentsline {section}{\numberline {3.1}Mod\IeC {\`e}le d'image bruit\IeC {\'e}e}{20}{section.3.1}} \@writefile{toc}{\contentsline {section}{\numberline {3.2}Mod\IeC {\`e}les de bruit}{20}{section.3.2}} \newlabel{sec_bruits}{{3.2}{20}{Modèles de bruit\relax }{section.3.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Le bruit gaussien}{20}{subsection.3.2.1}} \@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 ``sel et poivre''}{21}{subsection.3.2.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.2.4}Le bruit de Poisson}{21}{subsection.3.2.4}} \@writefile{toc}{\contentsline {section}{\numberline {3.3}Les techniques de r\IeC {\'e}duction de bruit}{21}{section.3.3}} \citation{coil} \citation{Wang04imagequality} \@writefile{lof}{\contentsline {figure}{\numberline {3.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\%.}}{22}{figure.3.1}} \newlabel{fig-ny-noises}{{3.1}{22}{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.3.1}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Sans bruit}}}{22}{figure.3.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Bruit gaussien $\sigma =25$, PSNR=22.3~dB MSSIM=0.16}}}{22}{figure.3.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Bruit impulsionnel 25\%, PSNR=9.48~dB MSSIM=0.04}}}{22}{figure.3.1}} \citation{tukey77} \citation{4287006} \@writefile{lof}{\contentsline {figure}{\numberline {3.2}{\ignorespaces Filtrage par convolution.}}{23}{figure.3.2}} \newlabel{fig-ny-convo}{{3.2}{23}{Filtrage par convolution}{figure.3.2}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Moyenneur 3$\times $3, PSNR=27.6dB MSSIM=0.34}}}{23}{figure.3.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Moyenneur 5$\times $5, PSNR=27.7dB MSSIM=0.38}}}{23}{figure.3.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Filtre gaussien 3$\times $3, PSNR=27.4dB MSSIM=0.33}}}{23}{figure.3.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Les op\IeC {\'e}rateurs de base}{23}{subsection.3.3.1}} \newlabel{sec-op-base}{{3.3.1}{23}{Les opérateurs de base\relax }{subsection.3.3.1}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1.1}Le filtre de convolution}{23}{subsubsection.3.3.1.1}} \newlabel{convoDef}{{3.1}{23}{Le filtre de convolution\relax }{equation.3.3.1}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1.2}Le filtre m\IeC {\'e}dian}{23}{subsubsection.3.3.1.2}} \citation{710815} \citation{1521458} \citation{4587843} \citation{BuadesCM06} \citation{bertaux2004speckle} \@writefile{lof}{\contentsline {figure}{\numberline {3.3}{\ignorespaces R\IeC {\'e}duction du bruit impulsionnel par filtre m\IeC {\'e}dian.}}{24}{figure.3.3}} \newlabel{fig-ny-median}{{3.3}{24}{Réduction du bruit impulsionnel par filtre médian}{figure.3.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {M\IeC {\'e}dian 3$\times $3 une passe, PSNR=26.4~dB MSSIM=0.90}}}{24}{figure.3.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {M\IeC {\'e}dian 3$\times $3 deux passes, PSNR=34.4~dB MSSIM=0.98}}}{24}{figure.3.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {M\IeC {\'e}dian 5$\times $5 une passe, PSNR=35.1~dB MSSIM=0.98}}}{24}{figure.3.3}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1.3}Le filtre bilat\IeC {\'e}ral}{24}{subsubsection.3.3.1.3}} \@writefile{lof}{\contentsline {figure}{\numberline {3.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}.}}{25}{figure.3.4}} \newlabel{fig-ny-bilat}{{3.4}{25}{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.3.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$\sigma _S=1.0$ et $\sigma _I=0.1$, PSNR=25.6~dB MSSIM=0.25}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$\sigma _S=1.0$ et $\sigma _I=0.5$, PSNR=28.0~dB MSSIM=0.36}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$\sigma _S=1.0$ et $\sigma _I=1.0$, PSNR=27.9~dB MSSIM=0.36}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$\sigma _S=2.0$ et $\sigma _I=0.1$, PSNR=26.7~dB MSSIM=0.29}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {$\sigma _S=2.0$ et $\sigma _I=0.5$, PSNR=27.9~dB MSSIM=0.39}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {$\sigma _S=2.0$ et $\sigma _I=1.0$, PSNR=27.5~dB MSSIM=0.38}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {$\sigma _S=5.0$ et $\sigma _I=0.1$, PSNR=26.8~dB MSSIM=0.29}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {$\sigma _S=5.0$ et $\sigma _I=0.5$, PSNR=26.8~dB MSSIM=0.37}}}{25}{figure.3.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {$\sigma _S=5.0$ et $\sigma _I=1.0$, PSNR=25.9~dB MSSIM=0.36}}}{25}{figure.3.4}} \citation{Mallat:2008:WTS:1525499} \citation{Daubechies:1992:TLW:130655} \citation{1093941} \citation{strang1999discrete} \citation{elad2006image} \citation{elad2006image} \citation{1467423} \citation{Dabov06imagedenoising} \citation{Dabov09bm3dimage} \@writefile{lof}{\contentsline {figure}{\numberline {3.5}{\ignorespaces Filtrage par d\IeC {\'e}composition en ondelettes et seuillage dur des coefficients inf\IeC {\'e}rieurs au seuil $T$.}}{26}{figure.3.5}} \newlabel{fig-ny-dwt}{{3.5}{26}{Filtrage par décomposition en ondelettes et seuillage dur des coefficients inférieurs au seuil $T$}{figure.3.5}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$T=20$, PSNR=26.9~dB MSSIM=0.30}}}{26}{figure.3.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$T=35$, PSNR=27.6~dB MSSIM=0.36}}}{26}{figure.3.5}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$T=70$, PSNR=26.7~dB MSSIM=0.37}}}{26}{figure.3.5}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {3.3.1.4}Les algorithmes de filtrage par dictionnaire}{26}{subsubsection.3.3.1.4}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.3.2}Les algorithmes de filtrage par patches}{26}{subsection.3.3.2}} \citation{cmla2009Kes} \@writefile{lof}{\contentsline {figure}{\numberline {3.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$.}}{27}{figure.3.6}} \newlabel{fig-ny-nlm}{{3.6}{27}{Filtrage par NL-means pour différentes combinaisons des paramètres de similarité $f$ et de non localité $t$}{figure.3.6}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$f=2$ et $t=2$, PSNR=28.5~dB MSSIM=0.37}}}{27}{figure.3.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$f=2$ et $t=5$, PSNR=28.6~dB MSSIM=0.38}}}{27}{figure.3.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$f=5$ et $t=2$, PSNR=29.0~dB MSSIM=0.39}}}{27}{figure.3.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$f=5$ et $t=5$, PSNR=29.0~dB MSSIM=0.40}}}{27}{figure.3.6}} \@writefile{lof}{\contentsline {figure}{\numberline {3.7}{\ignorespaces Filtrage par BM3D, PSNR=29.3~dB MSSIM=0.41}}{27}{figure.3.7}} \newlabel{fig-ny-bm3d}{{3.7}{27}{Filtrage par BM3D, PSNR=29.3~dB MSSIM=0.41\relax }{figure.3.7}{}} \citation{convolutionsoup} \citation{4287006} \citation{6288187} \citation{5402362} \citation{chen09} \citation{5402362} \citation{sanchez2013highly} \@writefile{toc}{\contentsline {section}{\numberline {3.4}Les impl\IeC {\'e}mentations GPU des algorithmes de filtrage}{28}{section.3.4}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.4.1}Le filtrage par convolution}{28}{subsection.3.4.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.4.2}Le filtre m\IeC {\'e}dian}{28}{subsection.3.4.2}} \newlabel{sec-median}{{3.4.2}{28}{Le filtre médian\relax }{subsection.3.4.2}{}} \citation{5402362} \citation{sanchez2013highly} \citation{aldinucci2012parallel} \citation{5206542} \newlabel{fig-compare-jacket-pcmf1}{{3.8(a)}{29}{Subfigure 3 3.8(a)\relax }{subfigure.3.8.1}{}} \newlabel{sub@fig-compare-jacket-pcmf1}{{(a)}{29}{Subfigure 3 3.8(a)\relax }{subfigure.3.8.1}{}} \newlabel{fig-compare-jacket-pcmf2}{{3.8(b)}{29}{Subfigure 3 3.8(b)\relax }{subfigure.3.8.2}{}} \newlabel{sub@fig-compare-jacket-pcmf2}{{(b)}{29}{Subfigure 3 3.8(b)\relax }{subfigure.3.8.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {3.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}le de g\IeC {\'e}n\IeC {\'e}rations diff\IeC {\'e}rentes.}}{29}{figure.3.8}} \newlabel{fig-compare-jacket-pcmf}{{3.8}{29}{Performances relatives des filtres médians implémentés sur GPU dans libJacket/ArrayFire, PCMF et BVM et exécutés sur deux modèle de générations différentes}{figure.3.8}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Sur GPU GTX260. Courbe tir\IeC {\'e}e de \cite {5402362}}}}{29}{figure.3.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Sur GPU C2075. Courbe tir\IeC {\'e}e de \cite {sanchez2013highly}}}}{29}{figure.3.8}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.4.3}Le filtre bilat\IeC {\'e}ral}{29}{subsection.3.4.3}} \newlabel{sec-bilateral}{{3.4.3}{29}{Le filtre bilatéral\relax }{subsection.3.4.3}{}} \citation{zheng2011performance} \citation{zheng2011performance} \citation{zheng2011performance} \@writefile{lof}{\contentsline {figure}{\numberline {3.9}{\ignorespaces Illustration pr\IeC {\'e}-chargement en m\IeC {\'e}moire partag\IeC {\'e}e mise 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.}}{30}{figure.3.9}} \newlabel{fig-prefetch-zheng}{{3.9}{30}{Illustration pré-chargement en mémoire partagée mise 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.3.9}{}} \citation{PALHANOXAVIERDEFONTES} \citation{nlmeansgpubelge} \@writefile{toc}{\contentsline {subsection}{\numberline {3.4.4}Les filtres par patches}{31}{subsection.3.4.4}} \@writefile{toc}{\contentsline {section}{\numberline {3.5}Les techniques de segmentation}{31}{section.3.5}} \citation{humphrey1924psychology} \citation{4310076} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.1}Analyse d'histogramme}{32}{subsection.3.5.1}} \newlabel{sec-histo}{{3.5.1}{32}{Analyse d'histogramme\relax }{subsection.3.5.1}{}} \newlabel{fig-histo-cochon-a}{{3.10(a)}{33}{Subfigure 3 3.10(a)\relax }{subfigure.3.10.1}{}} \newlabel{sub@fig-histo-cochon-a}{{(a)}{33}{Subfigure 3 3.10(a)\relax }{subfigure.3.10.1}{}} \newlabel{fig-histo-cochon-b}{{3.10(b)}{33}{Subfigure 3 3.10(b)\relax }{subfigure.3.10.2}{}} \newlabel{sub@fig-histo-cochon-b}{{(b)}{33}{Subfigure 3 3.10(b)\relax }{subfigure.3.10.2}{}} \newlabel{fig-histo-cochon-c}{{3.10(c)}{33}{Subfigure 3 3.10(c)\relax }{subfigure.3.10.3}{}} \newlabel{sub@fig-histo-cochon-c}{{(c)}{33}{Subfigure 3 3.10(c)\relax }{subfigure.3.10.3}{}} \newlabel{fig-histo-cochon-d}{{3.10(d)}{33}{Subfigure 3 3.10(d)\relax }{subfigure.3.10.4}{}} \newlabel{sub@fig-histo-cochon-d}{{(d)}{33}{Subfigure 3 3.10(d)\relax }{subfigure.3.10.4}{}} \newlabel{fig-histo-cochon-e}{{3.10(e)}{33}{Subfigure 3 3.10(e)\relax }{subfigure.3.10.5}{}} \newlabel{sub@fig-histo-cochon-e}{{(e)}{33}{Subfigure 3 3.10(e)\relax }{subfigure.3.10.5}{}} \newlabel{fig-histo-cochon-f}{{3.10(f)}{33}{Subfigure 3 3.10(f)\relax }{subfigure.3.10.6}{}} \newlabel{sub@fig-histo-cochon-f}{{(f)}{33}{Subfigure 3 3.10(f)\relax }{subfigure.3.10.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {3.10}{\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.}}{33}{figure.3.10}} \newlabel{fig-histo-cochon}{{3.10}{33}{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.3.10}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image initiale comportant deux zones : le fond et le cochon (la cible)}}}{33}{figure.3.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Histogramme des niveaux de gris}}}{33}{figure.3.10}} \@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.}}}{33}{figure.3.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Image initiale bruit\IeC {\'e}e}}}{33}{figure.3.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Histogramme des niveaux de gris}}}{33}{figure.3.10}} \@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.}}}{33}{figure.3.10}} \@writefile{loa}{\contentsline {algocf}{\numberline {1}{\ignorespaces Calcul du seuil de s\IeC {\'e}paration des segments de l'histogramme.}}{33}{algocfline.1}} \newlabel{algo-histo-cochon}{{1}{33}{Analyse d'histogramme\relax }{algocfline.1}{}} \citation{Zahn:1971:GMD:1309266.1309359} \citation{wu1993optimal} \citation{wang2001image} \citation{wang2003image} \citation{felzenszwalb2004efficient} \citation{shi2000normalized} \citation{shi2000normalized} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.2}Partitionnement de graphe}{34}{subsection.3.5.2}} \citation{ford1955simple} \citation{boykov2004experimental} \citation{chandran2009computational} \citation{cherkassky1997implementing} \citation{hochbaum2013simplifications} \citation{macqueen1967some} \@writefile{lof}{\contentsline {figure}{\numberline {3.11}{\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.}}{35}{figure.3.11}} \newlabel{fig-graph-cochon}{{3.11}{35}{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.3.11}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$s = 2$}}}{35}{figure.3.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$s = 3$}}}{35}{figure.3.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$s = 4$}}}{35}{figure.3.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$s = 5$}}}{35}{figure.3.11}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.3}kernel-means, mean-shift et apparent\IeC {\'e}s}{35}{subsection.3.5.3}} \citation{agarwal2002exact} \citation{arora1998approximation} \citation{pelleg2000x} \citation{fukunaga1975estimation} \citation{cheng1995mean} \citation{foley1994introduction} \citation{comaniciu1999mean} \citation{comaniciu2002mean} \citation{keselman1998extraction} \@writefile{lof}{\contentsline {figure}{\numberline {3.12}{\ignorespaces Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme \textit {k-means} pour un nombre $s$ 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.}}{36}{figure.3.12}} \newlabel{fig-kmeans-cochon}{{3.12}{36}{Segmentation d'une image en niveaux de gris de 128 $\times $ 128 pixels par algorithme \textit {k-means} pour un nombre $s$ 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.3.12}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$s = 2$}}}{36}{figure.3.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$s = 3$}}}{36}{figure.3.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$s = 4$}}}{36}{figure.3.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$s = 5$}}}{36}{figure.3.12}} \@writefile{lof}{\contentsline {figure}{\numberline {3.13}{\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 $s$ 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.}}{37}{figure.3.13}} \newlabel{fig-meanshift-cochon}{{3.13}{37}{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 $s$ 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.3.13}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$r=100 \Rightarrow s = 2$}}}{37}{figure.3.13}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$r=50 \Rightarrow s = 3$}}}{37}{figure.3.13}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$r=35 \Rightarrow s = 4$}}}{37}{figure.3.13}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$r=25 \Rightarrow s = 5$}}}{37}{figure.3.13}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.4}Les contours actifs, ou \textit {snakes}}{37}{subsection.3.5.4}} \citation{KassWT88} \citation{osher1988fronts} \citation{adalsteinsson1994fast} \citation{sethian1996fast} \@writefile{lof}{\contentsline {figure}{\numberline {3.14}{\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. }}{38}{figure.3.14}} \newlabel{fig-snake-tradi-cochon}{{3.14}{38}{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.3.14}{}} \@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}}}{38}{figure.3.14}} \@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}}}{38}{figure.3.14}} \@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}}}{38}{figure.3.14}} \@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.}}}{38}{figure.3.14}} \citation{cohen1993surface} \citation{ronfard1994region} \citation{ChesnaudRB99} \citation{GallandBR03} \citation{GermainR01} \citation{arbelaez2011contour} \@writefile{toc}{\contentsline {subsection}{\numberline {3.5.5}M\IeC {\'e}thodes hybrides}{39}{subsection.3.5.5}} \@writefile{toc}{\contentsline {section}{\numberline {3.6}Les impl\IeC {\'e}mentations GPU des techniques de segmentation}{39}{section.3.6}} \citation{fluck2006gpu} \citation{lefohn2003interactive} \citation{Vineet:2009:FMS:1572769.1572796} \citation{dixit2005gpu} \citation{4563095} \citation{kohli2007dynamic} \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.1}Calcul d'histogramme}{40}{subsection.3.6.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.2}Partitionnement de graphe}{40}{subsection.3.6.2}} \citation{graphcutscuda} \citation{graphcutscuda} \citation{4563095} \citation{graphcutscuda} \citation{graphcutscuda} \citation{che2008performance} \citation{kddcup99} \citation{5170921} \citation{che2008performance} \@writefile{lof}{\contentsline {figure}{\numberline {3.15}{\ignorespaces \IeC {\'E}volution du nombre de pixels actifs pour les it\IeC {\'e}ration 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.}}{41}{figure.3.15}} \newlabel{fig-graphcutscuda}{{3.15}{41}{Évolution du nombre de pixels actifs pour les itération 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.3.15}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.3}K-means, mean-shift et apparent\IeC {\'e}s}{41}{subsection.3.6.3}} \citation{kmeansgpuopengl} \citation{li2009mean} \citation{vedaldi2008quick} \citation{fulkerson2012really} \citation{fulkerson2012really} \citation{fulkerson2012really} \citation{fulkerson2012really} \citation{xiao2010efficient} \citation{lefohn2003inter} \citation{lefohn2003interactive} \citation{rumpf2001level} \citation{rumpf2001level} \citation{lefohn2005streaming} \citation{cates2004gist} \citation{jeong2009scalable} \citation{jeong2009scalable} \@writefile{lof}{\contentsline {figure}{\numberline {3.16}{\ignorespaces Segmentation d'une image couleur de 512$\times $512 pixels par l'impl\IeC {\'e}mentation GPU quick-shift de \cite {fulkerson2012really}.}}{43}{figure.3.16}} \newlabel{fig-quickshift-yo}{{3.16}{43}{Segmentation d'une image couleur de 512$\times $512 pixels par l'implémentation GPU quick-shift de \cite {fulkerson2012really}}{figure.3.16}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image originale}}}{43}{figure.3.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$\tau =10$ et $\sigma =2$}}}{43}{figure.3.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {$\tau =10$ et $\sigma =10$}}}{43}{figure.3.16}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {$\tau =20$ et $\sigma =10$}}}{43}{figure.3.16}} \@writefile{lof}{\contentsline {figure}{\numberline {3.17}{\ignorespaces Segmentation d'une image couleur de 2256$\times $3008 pixels.}}{43}{figure.3.17}} \newlabel{fig-meanshift-castle}{{3.17}{43}{Segmentation d'une image couleur de 2256$\times $3008 pixels}{figure.3.17}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image originale}}}{43}{figure.3.17}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image segment\IeC {\'e}e par mean-shift standard}}}{43}{figure.3.17}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image segment\IeC {\'e}e par mean-shift kd-tree}}}{43}{figure.3.17}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.4}Snakes et Level set}{43}{subsection.3.6.4}} \citation{Roberts:2010:WGA:1921479.1921499} \citation{lefohn2003inter} \citation{snakegvf06} \citation{bauer2009segmentation} \citation{li2011robust} \citation{snakegvfopencl12} \citation{snakegvf06} \citation{snakegvf06} \citation{snakegvf06} \citation{zheng2012fast} \citation{li2011robust} \newlabel{fig-l7-brain}{{3.18(a)}{45}{Subfigure 3 3.18(a)\relax }{subfigure.3.18.1}{}} \newlabel{sub@fig-l7-brain}{{(a)}{45}{Subfigure 3 3.18(a)\relax }{subfigure.3.18.1}{}} \newlabel{fig-l7-reins}{{3.18(b)}{45}{Subfigure 3 3.18(b)\relax }{subfigure.3.18.2}{}} \newlabel{sub@fig-l7-reins}{{(b)}{45}{Subfigure 3 3.18(b)\relax }{subfigure.3.18.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {3.18}{\ignorespaces Segmentation d'images issues d'examens IRM par la m\IeC {\'e}thode des level set \IeC {\`a} bande \IeC {\'e}troite.}}{45}{figure.3.18}} \newlabel{fig-l7-narrow}{{3.18}{45}{Segmentation d'images issues d'examens IRM par la méthode des level set à bande étroite}{figure.3.18}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Cerveau 256$\times $256$\times $256 en 7~s}}}{45}{figure.3.18}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Reins et aorte, 256$\times $256$\times $272 en 16~s}}}{45}{figure.3.18}} \newlabel{fig-epaule-init}{{3.19(a)}{45}{Subfigure 3 3.19(a)\relax }{subfigure.3.19.1}{}} \newlabel{sub@fig-epaule-init}{{(a)}{45}{Subfigure 3 3.19(a)\relax }{subfigure.3.19.1}{}} \newlabel{fig-epaule-fin}{{3.19(b)}{45}{Subfigure 3 3.19(b)\relax }{subfigure.3.19.2}{}} \newlabel{sub@fig-epaule-fin}{{(b)}{45}{Subfigure 3 3.19(b)\relax }{subfigure.3.19.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {3.19}{\ignorespaces Segmentation d'une image d'\IeC {\'e}paule en 1024$^2$ 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 rougeet le contour final est obtenu en 11~s. }}{45}{figure.3.19}} \newlabel{fig-snakegvf}{{3.19}{45}{Segmentation d'une image d'épaule en 1024$^2$ pixels issue d'un examen IRM par l'implémentation du snake GVF de \cite {snakegvf06}. Le contour est représenté en rougeet le contour final est obtenu en 11~s. \relax }{figure.3.19}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Contour initial}}}{45}{figure.3.19}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Contour final}}}{45}{figure.3.19}} \citation{snakegvfopencl12} \citation{arbelaez2011contour} \citation{5459410} \citation{martin2001database} \citation{bresenham1965algorithm} \citation{martin2001database} \citation{martin2001database} \@writefile{lof}{\contentsline {figure}{\numberline {3.20}{\ignorespaces Extraction de contour par la version GPU de l'algorithme gPb. Les images sont issues de la base BSDS \cite {martin2001database}}}{46}{figure.3.20}} \newlabel{fig-gPb}{{3.20}{46}{Extraction de contour par la version GPU de l'algorithme gPb. Les images sont issues de la base BSDS \cite {martin2001database}\relax }{figure.3.20}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {3.6.5}Algorithmes hybrides}{46}{subsection.3.6.5}} \citation{volkov2010better} \@writefile{toc}{\contentsline {section}{\numberline {3.7}Conclusion}{47}{section.3.7}} \citation{ChesnaudRB99} \citation{ChesnaudRB99} \@writefile{toc}{\contentsline {chapter}{\numberline {4}La segmentation par snake polygonal orient\IeC {\'e} r\IeC {\'e}gions}{49}{chapter.4}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {4.1}Pr\IeC {\'e}sentation de l'algorithme}{49}{section.4.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Formulation}{49}{subsection.4.1.1}} \newlabel{eq-lhprod1}{{4.2}{50}{Formulation\relax }{equation.4.1.2}{}} \newlabel{eq-pdfgauss}{{4.3}{50}{Formulation\relax }{equation.4.1.3}{}} \newlabel{eq-gl1}{{4.4}{50}{Formulation\relax }{equation.4.1.4}{}} \newlabel{eq-teta}{{4.5}{50}{Formulation\relax }{equation.4.1.5}{}} \newlabel{eq-gl}{{4.6}{50}{Formulation\relax }{equation.4.1.6}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.2}Optimisation des calculs}{50}{subsection.4.1.2}} \newlabel{snake-formulation}{{4.1.2}{50}{Optimisation des calculs\relax }{subsection.4.1.2}{}} \newlabel{eq-sommes1}{{4.7}{50}{Optimisation des calculs\relax }{equation.4.1.7}{}} \citation{ChesnaudRB99} \newlabel{eq-sommes-gene}{{4.8}{51}{Optimisation des calculs\relax }{equation.4.1.8}{}} \newlabel{eq-cumuls1}{{4.9}{51}{Optimisation des calculs\relax }{equation.4.1.9}{}} \newlabel{eq-somme-cumuls2}{{4.10}{51}{Optimisation des calculs\relax }{equation.4.1.10}{}} \newlabel{eq-somme-contour}{{4.11}{51}{Optimisation des calculs\relax }{equation.4.1.11}{}} \newlabel{eq-coefC}{{4.12}{51}{Optimisation des calculs\relax }{equation.4.1.12}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.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. }}{51}{figure.4.1}} \newlabel{fig-freeman}{{4.1}{51}{À 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.4.1}{}} \citation{ChesnaudRB99} \newlabel{li-img-cumul}{{2}{52}{}{AlgoLine3.2}{}} \newlabel{li-bresen}{{18}{52}{}{AlgoLine3.18}{}} \newlabel{li-contrib-seg-deb}{{19}{52}{}{AlgoLine3.19}{}} \newlabel{li-contrib-seg-fin}{{21}{52}{}{AlgoLine3.21}{}} \@writefile{lot}{\contentsline {table}{\numberline {4.1}{\ignorespaces Valeur du coefficient $C(i,j)$ en fonction des valeurs des codes de Freeman des vecteurs $f_{in}$ et $f_{out}$.}}{52}{table.4.1}} \newlabel{tab-freeman}{{4.1}{52}{Valeur du coefficient $C(i,j)$ en fonction des valeurs des codes de Freeman des vecteurs $f_{in}$ et $f_{out}$}{table.4.1}{}} \newlabel{eq-img-cumul}{{4.13}{52}{Optimisation des calculs\relax }{equation.4.1.13}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.3}Impl\IeC {\'e}mentation s\IeC {\'e}quentielle}{52}{subsection.4.1.3}} \newlabel{snake-cpu-impl}{{4.1.3}{52}{Implémentation séquentielle\relax }{subsection.4.1.3}{}} \newlabel{algo-snake-cpu}{{2}{53}{Implémentation séquentielle\relax }{algocfline.2}{}} \@writefile{loa}{\contentsline {algocf}{\numberline {2}{\ignorespaces Principe mis en \oe uvre pour la convergence du snake polygonal}}{53}{algocfline.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1.4}Performances}{53}{subsection.4.1.4}} \@writefile{lof}{\contentsline {figure}{\numberline {4.2}{\ignorespaces \IeC {\'E}volution du contour lors de la segmentation d'une image de 512$^2$ 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.}}{54}{figure.4.2}} \newlabel{fig-snakecpu-cochon512}{{4.2}{54}{Évolution du contour lors de la segmentation d'une image de 512$^2$ pixels. La convergence est obtenue à l'itération 14 après 44~ms pour un total de 256 n\oe uds}{figure.4.2}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Initialisation : 4 n\oe uds}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {It\IeC {\'e}ration 1 : 8 n\oe uds 3~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {It\IeC {\'e}ration 2 : 16 n\oe uds 1~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {It\IeC {\'e}ration 3, 32 n\oe uds 1~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {It\IeC {\'e}ration 7 : 223 n\oe uds 3~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {It\IeC {\'e}ration 10 : 244 n\oe uds 3~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {It\IeC {\'e}ration 13 : 256 n\oe uds 3~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {It\IeC {\'e}ration 14 : 256 n\oe uds 3~ms}}}{54}{figure.4.2}} \@writefile{lof}{\contentsline {figure}{\numberline {4.3}{\ignorespaces Influence du contour initial sur la segmentation. Le contour final 1 est celui de la figure \ref {fig-snakecpu-cochon512}.}}{54}{figure.4.3}} \newlabel{fig-snakecpu-compinit}{{4.3}{54}{Influence du contour initial sur la segmentation. Le contour final 1 est celui de la figure \ref {fig-snakecpu-cochon512}}{figure.4.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Initialisation 2 }}}{54}{figure.4.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Contour final 2 : 273 n\oe uds 87~ms}}}{54}{figure.4.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Contour final 1 : 256 n\oe uds 44~ms}}}{54}{figure.4.3}} \newlabel{fig-snakecpu-cochon4ka}{{4.4(a)}{55}{Subfigure 4 4.4(a)\relax }{subfigure.4.4.1}{}} \newlabel{sub@fig-snakecpu-cochon4ka}{{(a)}{55}{Subfigure 4 4.4(a)\relax }{subfigure.4.4.1}{}} \newlabel{fig-snakecpu-cochon4kb}{{4.4(b)}{55}{Subfigure 4 4.4(b)\relax }{subfigure.4.4.2}{}} \newlabel{sub@fig-snakecpu-cochon4kb}{{(b)}{55}{Subfigure 4 4.4(b)\relax }{subfigure.4.4.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.4}{\ignorespaces Segmentation de l'image de test en 4000$^2$ pixels.}}{55}{figure.4.4}} \newlabel{fig-snakecpu-cochon4k}{{4.4}{55}{Segmentation de l'image de test en 4000$^2$ pixels}{figure.4.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {$d_{max}=16$ et $l_{min}=8$, 1246 n\oe uds en 1.3~s}}}{55}{figure.4.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {$d_{max}=128$ et $l_{min}=32$, 447 n\oe uds en 0.7~s}}}{55}{figure.4.4}} \@writefile{lof}{\contentsline {figure}{\numberline {4.5}{\ignorespaces Segmentation de l'image de test en 4000$^2$ pixels avec une cible de petite taille. Le contour initial est celui utilis\IeC {\'e} \IeC {\`a} la figure \ref {fig-snakecpu-cochon4k}.}}{55}{figure.4.5}} \newlabel{fig-snakecpu-cochon4kc3}{{4.5}{55}{Segmentation de l'image de test en 4000$^2$ pixels avec une cible de petite taille. Le contour initial est celui utilisé à la figure \ref {fig-snakecpu-cochon4k}}{figure.4.5}{}} \citation{BlellochTR90} \newlabel{fig-snakecpu-chronos1}{{4.2}{56}{Implémentation parallèle GPU du snake polygonal\relax }{section.4.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.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.}}{56}{figure.4.6}} \@writefile{toc}{\contentsline {section}{\numberline {4.2}Impl\IeC {\'e}mentation parall\IeC {\`e}le GPU du snake polygonal}{56}{section.4.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}pr\IeC {\'e}-calculs des images cumul\IeC {\'e}es}{56}{subsection.4.2.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}Calcul des contribution des segments}{57}{subsection.4.2.2}} \newlabel{fig-calcul-cumuls}{{4.2.1}{58}{pré-calculs des images cumulées\relax }{subfigure.4.7.3}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.7}{\ignorespaces Calcul des images cumul\IeC {\'e}es $S_x$ et $S_x^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.}}{58}{figure.4.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.}}}{58}{figure.4.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()}.}}}{58}{figure.4.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()}.}}}{58}{figure.4.7}} \newlabel{fig-structure-segment}{{4.2.2}{59}{Calcul des contribution des segments\relax }{subsection.4.2.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.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.}}{59}{figure.4.8}} \newlabel{fig-cycle-contribs-segments}{{4.2.2}{60}{Calcul des contribution des segments\relax }{subfigure.4.9.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.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.}}{60}{figure.4.9}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Contour de r\IeC {\'e}f\IeC {\'e}rence.}}}{60}{figure.4.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}.}}}{60}{figure.4.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}.}}}{60}{figure.4.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} \IeC {\'e}valu\IeC {\'e}s. On ne peut pas dire, a priori si le crit\IeC {\`e}re est am\IeC {\'e}lior\IeC {\'e}.}}}{60}{figure.4.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}.}}}{60}{figure.4.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}.}}}{60}{figure.4.9}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.2.2.1}Cas particulier des segments dont la pente $k$ v\IeC {\'e}rifie $|k|\leq 1$}{61}{subsubsection.4.2.2.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}Performances}{61}{subsection.4.2.3}} \newlabel{fig-segment-k<1}{{4.2.2.1}{62}{Cas particulier des segments dont la pente $k$ vérifie $|k|\leq 1$\relax }{subfigure.4.10.3}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.10}{\ignorespaces D\IeC {\'e}termination des coefficients $C(i,j)$ des pixels du contour.}}{62}{figure.4.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Quadrants 1 et 4}}}{62}{figure.4.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Quadrants 2 et 3}}}{62}{figure.4.10}} \newlabel{fig-snakegpu-result}{{4.2.3}{63}{Performances\relax }{subfigure.4.11.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.11}{\ignorespaces Segmentations de grandes images, avec le contour intial transpos\IeC {\'e} de celui de la figure \ref {fig-snakecpu-cochon512}. a) image de 100~MP. b) image de 150~MP.}}{63}{figure.4.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {5 it\IeC {\'e}rations en 0,59~s}}}{63}{figure.4.11}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {3 it\IeC {\'e}rations en 0,35~s}}}{63}{figure.4.11}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.4}Discussion sur l'initialisation}{63}{subsection.4.2.4}} \newlabel{fig-smart-init}{{4.2.4}{64}{Discussion sur l'initialisation\relax }{subfigure.4.12.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {4.12}{\ignorespaces D\IeC {\'e}termination intelligente du contour initial en deux phases successives. a) La premi\IeC {\`e}re \IeC {\'e}tape repose sur un \IeC {\'e}chantillonnage horizontal. b) La seconde \IeC {\'e}tape repose sur un \IeC {\'e}chantillonnage vertical. }}{64}{figure.4.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {D\IeC {\'e}termination de $j_L$ et $j_H$.}}}{64}{figure.4.12}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {D\IeC {\'e}termination de $i_L$ et $i_H$.}}}{64}{figure.4.12}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2.5}Conclusion}{64}{subsection.4.2.5}} \@writefile{loa}{\contentsline {algocf}{\numberline {3}{\ignorespaces D\IeC {\'e}tail de l'impl\IeC {\'e}mentation du snake polygonal}}{66}{algocfline.3}} \newlabel{cpualgo}{{3}{66}{Implémentation séquentielle\relax }{algocfline.3}{}} \@writefile{lot}{\contentsline {table}{\numberline {4.2}{\ignorespaces Performances (en secondes) de la segmentation par snake polygonal sur CPU en fonction de la taille de l'image \IeC {\`a} traiter. Le temps sont obtenus avec la m\IeC {\^e}me image de test dilat\IeC {\'e}e et bruit\IeC {\'e}e et un contour initial carr\IeC {\'e} dont la distance aux bords est proportionnelle \IeC {\`a} la taille de l'image. Seule l'image en 15~MP a pu \IeC {\^e}tre trait\IeC {\'e}e par une impl\IeC {\'e}mentation utilisant SSE2.}}{67}{table.4.2}} \newlabel{tab-snakecpu-speed-size}{{4.2}{67}{Performances (en secondes) de la segmentation par snake polygonal sur CPU en fonction de la taille de l'image à traiter. Le temps sont obtenus avec la même image de test dilatée et bruitée et un contour initial carré dont la distance aux bords est proportionnelle à la taille de l'image. Seule l'image en 15~MP a pu être traitée par une implémentation utilisant SSE2}{table.4.2}{}} \@writefile{lot}{\contentsline {table}{\numberline {4.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 par rapport \IeC {\`a} l'impl\IeC {\'e}mentation CPU de r\IeC {\'e}f\IeC {\'e}rence.}}{67}{table.4.3}} \newlabel{tab-speedup-cumuls}{{4.3}{67}{Accélération constatée, pour le calcul des images cumulées, de l'implémentation GPU par rapport à l'implémentation CPU de référence}{table.4.3}{}} \@writefile{lot}{\contentsline {table}{\numberline {4.4}{\ignorespaces Comparaison des temps d'ex\IeC {\'e}cution de l'impl\IeC {\'e}mentation GPU par rapport \IeC {\`a} l'impl\IeC {\'e}mentation CPU de r\IeC {\'e}f\IeC {\'e}rence, appliqu\IeC {\'e}s \IeC {\`a} une m\IeC {\^e}me image dilat\IeC {\'e}e pour en adapter la taille.}}{67}{table.4.4}} \newlabel{tab-snake-results}{{4.4}{67}{Comparaison des temps d'exécution de l'implémentation GPU par rapport à l'implémentation CPU de référence, appliqués à une même image dilatée pour en adapter la taille}{table.4.4}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {5}R\IeC {\'e}duction de bruit par recherche des lignes de niveaux}{71}{chapter.5}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {5.1}Pr\IeC {\'e}sentation de l'algorithme}{71}{section.5.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.1.1}Formulation}{71}{subsection.5.1.1}} \@writefile{lof}{\contentsline {figure}{\numberline {5.1}{\ignorespaces D\IeC {\'e}tail des motifs et de leur repr\IeC {\'e}sentation interne, pour la taille $d=5$. }}{72}{figure.5.1}} \newlabel{fig-lniv-p5q1}{{5.1}{72}{\label {fig-lniv-p5q1}Détail des motifs et de leur représentation interne, pour la taille $d=5$. \relax }{figure.5.1}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Les 8 premi\IeC {\`e}res lignes de la table $P_5$ dont les \IeC {\'e}l\IeC {\'e}ments sont les positions relatives des pixels de chaque motif par rapport au pixel central.}}}{72}{figure.5.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Motifs des 8 premier segments candidats pour. Les pixels noirs representent le pixel trait\IeC {\'e} (ou pixel central), qui n'appartient pas au motif. Les pixels gris sont ceux qui constituent le motif.}}}{72}{figure.5.1}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1.1}Isolines \IeC {\`a} un seul segment}{72}{subsubsection.5.1.1.1}} \@writefile{lof}{\contentsline {figure}{\numberline {5.2}{\ignorespaces . Exemple de la r\IeC {\'e}partition des pixels dans la r\IeC {\'e}gion $\omega $ pour le calcul de la vraisemblance, pour $n=6$.}}{72}{figure.5.2}} \newlabel{fig-lniv-regions}{{5.2}{72}{\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$}{figure.5.2}{}} \newlabel{LL2}{{5.1}{72}{Isolines à un seul segment\relax }{equation.5.1.1}{}} \newlabel{GL}{{5.3}{73}{Isolines à un seul segment\relax }{equation.5.1.3}{}} \newlabel{GL2}{{5.4}{73}{Isolines à un seul segment\relax }{equation.5.1.4}{}} \newlabel{LL1}{{5.5}{73}{Isolines à un seul segment\relax }{equation.5.1.5}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.1.1.2}Isolines compos\IeC {\'e}es de plusieurs segments - crit\IeC {\`e}re d'allongement}{73}{subsubsection.5.1.1.2}} \@writefile{lof}{\contentsline {figure}{\numberline {5.3}{\ignorespaces Allongement du segment $S^n$. Deux candidats $S^{p'}$ et $S^{p''}$ sont \IeC {\'e}valu\IeC {\'e}s au travers du crit\IeC {\`e}re GLRT de l'\IeC {\'e}quation \textup {\hbox {\mathsurround \z@ \normalfont (\ignorespaces \ref {GLRT}\unskip \@@italiccorr )}} 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.}}{74}{figure.5.3}} \newlabel{fig-lniv-allongement}{{5.3}{74}{\label {fig-lniv-allongement}Allongement du segment $S^n$. Deux candidats $S^{p'}$ et $S^{p''}$ sont évalués au travers du critère GLRT de l'équation \eqref {GLRT} que seul $S^{p''}$ s'avère satisfaire. a) Représentation dans le plan de l'image. b) Évolution des niveaux de gris en fonction de la position des pixels dans les lignes brisées ainsi formées}{figure.5.3}{}} \newlabel{LLNP}{{5.6}{74}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.5.1.6}{}} \newlabel{LLNP2}{{5.7}{74}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.5.1.7}{}} \newlabel{GLRT}{{5.8}{74}{Isolines composées de plusieurs segments - critère d'allongement\relax }{equation.5.1.8}{}} \@writefile{toc}{\contentsline {section}{\numberline {5.2}Impl\IeC {\'e}mentation parall\IeC {\`e}le}{75}{section.5.2}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.1}Isolines \IeC {\'e}valu\IeC {\'e}es semi-globalement}{75}{subsection.5.2.1}} \newlabel{pild:debut}{{5.4(a)}{76}{Subfigure 5 5.4(a)\relax }{subfigure.5.4.1}{}} \newlabel{sub@pild:debut}{{(a)}{76}{Subfigure 5 5.4(a)\relax }{subfigure.5.4.1}{}} \newlabel{pild:sub1}{{5.4(b)}{76}{Subfigure 5 5.4(b)\relax }{subfigure.5.4.2}{}} \newlabel{sub@pild:sub1}{{(b)}{76}{Subfigure 5 5.4(b)\relax }{subfigure.5.4.2}{}} \newlabel{pild:sub2}{{5.4(c)}{76}{Subfigure 5 5.4(c)\relax }{subfigure.5.4.3}{}} \newlabel{sub@pild:sub2}{{(c)}{76}{Subfigure 5 5.4(c)\relax }{subfigure.5.4.3}{}} \newlabel{pild:sub3}{{5.4(d)}{76}{Subfigure 5 5.4(d)\relax }{subfigure.5.4.4}{}} \newlabel{sub@pild:sub3}{{(d)}{76}{Subfigure 5 5.4(d)\relax }{subfigure.5.4.4}{}} \newlabel{pild:sub4}{{5.4(e)}{76}{Subfigure 5 5.4(e)\relax }{subfigure.5.4.5}{}} \newlabel{sub@pild:sub4}{{(e)}{76}{Subfigure 5 5.4(e)\relax }{subfigure.5.4.5}{}} \newlabel{pild:sub5}{{5.4(f)}{76}{Subfigure 5 5.4(f)\relax }{subfigure.5.4.6}{}} \newlabel{sub@pild:sub5}{{(f)}{76}{Subfigure 5 5.4(f)\relax }{subfigure.5.4.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.4}{\ignorespaces Processus de s\IeC {\'e}lection lors de l'allongement d'une \textit {isoline} comportant initialement deux segment $s_1$ et $s_2$. Dans cet exemple $d=5$ et $\Delta d_{max}=2$. Chaque segment \IeC {\'e}valu\IeC {\'e} est soumis au crit\IeC {\`e}re GLRT. Si au moins un des segments pr\IeC {\'e}sente un test GLRT positif, alors l'allongement est r\IeC {\'e}alis\IeC {\'e} avec le segment qui forme l'\textit {isoline} la plus vraisemblable.}}{76}{figure.5.4}} \newlabel{fig-lniv-pild}{{5.4}{76}{Processus de sélection lors de l'allongement d'une \textit {isoline} comportant initialement deux segment $s_1$ et $s_2$. Dans cet exemple $d=5$ et $\Delta d_{max}=2$. Chaque segment évalué est soumis au critère GLRT. Si au moins un des segments présente un test GLRT positif, alors l'allongement est réalisé avec le segment qui forme l'\textit {isoline} la plus vraisemblable}{figure.5.4}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Isoline comprenant deux segments $s_1$ et $s_2$.}}}{76}{figure.5.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Premier segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,0}$.}}}{76}{figure.5.4}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Deuxi\IeC {\`e}me segment \IeC {\'e}valu\IeC {\'e}, associ\IeC {\'e} au motif $p_{5,1}$.}}}{76}{figure.5.4}} \@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}$.}}}{76}{figure.5.4}} \@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}$.}}}{76}{figure.5.4}} \@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}$.}}}{76}{figure.5.4}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.2}Isolines \IeC {\`a} segments pre-\IeC {\'e}valu\IeC {\'e}s - mod\IeC {\`e}le PI-PD}{76}{subsection.5.2.2}} \newlabel{subsection-pipd-intro}{{5.2.2}{76}{Isolines à segments pre-évalués - modèle PI-PD\relax }{subsection.5.2.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.5}{\ignorespaces Histogramme des \IeC {\'e}carts angulaires entre la direction primaire de l'\textit {isoline} optimale et celle de l'\textit {isoline} s\IeC {\'e}lectionn\IeC {\'e}e, pour l'image du singe (Mandrill). Pour la tr\IeC {\`e}s grande majorit\IeC {\'e} des pixels, le mode de s\IeC {\'e}lection de l'\textit {isoline} ne g\IeC {\'e}n\IeC {\'e}re pas d'erreur sur la direction du premier segment.}}{77}{figure.5.5}} \newlabel{fig-lniv-histo-singe}{{5.5}{77}{Histogramme des écarts angulaires entre la direction primaire de l'\textit {isoline} optimale et celle de l'\textit {isoline} sélectionnée, pour l'image du singe (Mandrill). Pour la très grande majorité des pixels, le mode de sélection de l'\textit {isoline} ne génére pas d'erreur sur la direction du premier segment}{figure.5.5}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.6}{\ignorespaces Histogrammes des \IeC {\'e}carts angulaires entre la direction primaire de l'\textit {isoline} optimale et celle de l'\textit {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 naturelles.}}{77}{figure.5.6}} \newlabel{fig-lniv-histo-autres}{{5.6}{77}{Histogrammes des écarts angulaires entre la direction primaire de l'\textit {isoline} optimale et celle de l'\textit {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 naturelles}{figure.5.6}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Airplane}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Barbara}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Boat}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(d)}{\ignorespaces {Couple}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(e)}{\ignorespaces {Elaine}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(f)}{\ignorespaces {Finger}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(g)}{\ignorespaces {Goldhill}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(h)}{\ignorespaces {Lena}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(i)}{\ignorespaces {Man}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(j)}{\ignorespaces {Peppers}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(k)}{\ignorespaces {Stream}}}{77}{figure.5.6}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(l)}{\ignorespaces {Zelda}}}{77}{figure.5.6}} \newlabel{cx}{{5.9}{77}{Isolines à segments pre-évalués - modèle PI-PD\relax }{equation.5.2.9}{}} \newlabel{cx2}{{5.10}{77}{Isolines à segments pre-évalués - modèle PI-PD\relax }{equation.5.2.10}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.7}{\ignorespaces Exemple d'application du proc\IeC {\'e}d\IeC {\'e} d'allongement \IeC {\`a} une \textit {isoline} comprenant initialement 2 segments. la longueur des segments est $d=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.}}{78}{figure.5.7}} \newlabel{fig-lniv-pipd}{{5.7}{78}{Exemple d'application du procédé d'allongement à une \textit {isoline} comprenant initialement 2 segments. la longueur des segments est $d=5$. Le procédé se répète jusqu'à ce que le test GLRT échoue}{figure.5.7}{}} \@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.}}}{78}{figure.5.7}} \@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 }$.}}}{78}{figure.5.7}} \@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}.}}}{78}{figure.5.7}} \@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}.}}}{78}{figure.5.7}} \@writefile{loa}{\contentsline {algocf}{\numberline {4}{\ignorespaces Initialisations du mod\IeC {\`e}le PI-PD, en m\IeC {\'e}moire du GPU.}}{79}{algocfline.4}} \newlabel{algo-lniv-init}{{4}{79}{Isolines à segments pre-évalués - modèle PI-PD\relax }{algocfline.4}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2.3}Mod\IeC {\`e}le PI-PD hybride}{79}{subsection.5.2.3}} \@writefile{lof}{\contentsline {figure}{\numberline {5.8}{\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).}}{79}{figure.5.8}} \newlabel{fig-lniv-lsr1}{{5.8}{79}{Situation de la région servant à illustrer le comportant du modèle PI-PD dans les zones à faible pente (LSR)}{figure.5.8}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence non bruit\IeC {\'e}e.}}}{79}{figure.5.8}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {La r\IeC {\'e}gion de 11$\times $11 pixels \IeC {\'e}tudi\IeC {\'e}e.}}}{79}{figure.5.8}} \@writefile{loa}{\contentsline {algocf}{\numberline {5}{\ignorespaces \texttt {kernel\_precomp()} : g\IeC {\'e}n\IeC {\'e}ration des matrices $I_{\Theta }$ et $I_{\Sigma }$.}}{80}{algocfline.5}} \newlabel{algo-lniv-precomp}{{5}{80}{Isolines à segments pre-évalués - modèle PI-PD\relax }{algocfline.5}{}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {5.2.3.1}Le d\IeC {\'e}tecteur de zone \IeC {\`a} faible pente}{80}{subsubsection.5.2.3.1}} \@writefile{loa}{\contentsline {algocf}{\numberline {6}{\ignorespaces \texttt {kernel\_PIPD()} : gestion du processus d'allongement.}}{81}{algocfline.6}} \newlabel{algo-lniv-pipd}{{6}{81}{Isolines à segments pre-évalués - modèle PI-PD\relax }{algocfline.6}{}} \newlabel{GLRT2}{{5.11}{81}{Le détecteur de zone à faible pente\relax }{equation.5.2.11}{}} \newlabel{fig-lniv-lsr-tirages-a}{{5.9(a)}{82}{Subfigure 5 5.9(a)\relax }{subfigure.5.9.1}{}} \newlabel{sub@fig-lniv-lsr-tirages-a}{{(a)}{82}{Subfigure 5 5.9(a)\relax }{subfigure.5.9.1}{}} \newlabel{fig-lniv-lsr-tirages-b}{{5.9(b)}{82}{Subfigure 5 5.9(b)\relax }{subfigure.5.9.2}{}} \newlabel{sub@fig-lniv-lsr-tirages-b}{{(b)}{82}{Subfigure 5 5.9(b)\relax }{subfigure.5.9.2}{}} \newlabel{fig-lniv-lsr-tirages-c}{{5.9(c)}{82}{Subfigure 5 5.9(c)\relax }{subfigure.5.9.3}{}} \newlabel{sub@fig-lniv-lsr-tirages-c}{{(c)}{82}{Subfigure 5 5.9(c)\relax }{subfigure.5.9.3}{}} \newlabel{fig-lniv-lsr-tirages-d}{{5.9(d)}{82}{Subfigure 5 5.9(d)\relax }{subfigure.5.9.4}{}} \newlabel{sub@fig-lniv-lsr-tirages-d}{{(d)}{82}{Subfigure 5 5.9(d)\relax }{subfigure.5.9.4}{}} \newlabel{fig-lniv-lsr-tirages-e}{{5.9(e)}{82}{Subfigure 5 5.9(e)\relax }{subfigure.5.9.5}{}} \newlabel{sub@fig-lniv-lsr-tirages-e}{{(e)}{82}{Subfigure 5 5.9(e)\relax }{subfigure.5.9.5}{}} \@writefile{lof}{\contentsline {figure}{\numberline {5.9}{\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.}}{82}{figure.5.9}} \newlabel{fig-lniv-lsr-tirages}{{5.9}{82}{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.5.9}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image de r\IeC {\'e}f\IeC {\'e}rence.}}}{82}{figure.5.9}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }1$}}}{82}{figure.5.9}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(c)}{\ignorespaces {Image corrompue par le tirage de bruit $n^{\circ }2$}}}{82}{figure.5.9}} \@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$}}}{82}{figure.5.9}} \@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$}}}{82}{figure.5.9}} \citation{BuadesCM06} \@writefile{lof}{\contentsline {figure}{\numberline {5.10}{\ignorespaces Classification des pixels d'une image bruit\IeC {\'e}e, pour une valeur de seuil $T2=2$ du d\IeC {\'e}tecteur. b) Les pixels en noir sont ceux \IeC {\`a} qui le PI-PD sera appliqu\IeC {\'e}. Les pixels en blancs se verront appliquer une moyenne sur tout ou partie du voisinage.}}{83}{figure.5.10}} \newlabel{fig-lniv-classification}{{5.10}{83}{Classification des pixels d'une image bruitée, pour une valeur de seuil $T2=2$ du détecteur. b) Les pixels en noir sont ceux à qui le PI-PD sera appliqué. Les pixels en blancs se verront appliquer une moyenne sur tout ou partie du voisinage}{figure.5.10}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {Image bruit\IeC {\'e}e}}}{83}{figure.5.10}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Classification des pixels. }}}{83}{figure.5.10}} \@writefile{toc}{\contentsline {section}{\numberline {5.3}R\IeC {\'e}sultats}{83}{section.5.3}} \@writefile{toc}{\contentsline {section}{\numberline {5.4}Conclusion}{84}{section.5.4}} \@writefile{loa}{\contentsline {algocf}{\numberline {7}{\ignorespaces D\IeC {\'e}tecteur de zones \IeC {\`a} faible pente (LSR) \texttt {kernel\_LSR\_detector()}}}{85}{algocfline.7}} \newlabel{algo-lniv-detecteur}{{7}{85}{Le détecteur de zone à faible pente\relax }{algocfline.7}{}} \@writefile{lot}{\contentsline {table}{\numberline {5.1}{\ignorespaces Temps de calcul et de transfert des impl\IeC {\'e}mentations compar\IeC {\'e}es. }}{86}{table.5.1}} \newlabel{tab-lniv-chronos}{{5.1}{86}{Temps de calcul et de transfert des implémentations comparées. \relax }{table.5.1}{}} \@writefile{lot}{\contentsline {table}{\numberline {5.2}{\ignorespaces Comparaison image par image de la qualit\IeC {\'e} de d\IeC {\'e}bruitage du filtre 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-PD sont $l=5$, $n=25$, $T_{max}=1$ et $T2_{max}=2$. La colonne 'noisy' 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$.}}{87}{table.5.2}} \newlabel{tab-lniv-results}{{5.2}{87}{Comparaison image par image de la qualité de débruitage du filtre 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-PD sont $l=5$, $n=25$, $T_{max}=1$ et $T2_{max}=2$. La colonne 'noisy' donne les mesures relatives à l'image d'entrée corrompue par un bruit gaussien de moyenne nulle et d'écart type $\sigma =25$}{table.5.2}{}} \@writefile{toc}{\contentsline {chapter}{\numberline {6}Le filtre m\IeC {\'e}dian sur GPU}{89}{chapter.6}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {6.1}Introduction}{89}{section.6.1}} \@writefile{toc}{\contentsline {section}{\numberline {6.2}Les transferts de donn\IeC {\'e}es}{89}{section.6.2}} \@writefile{loa}{\contentsline {algocf}{\numberline {8}{\ignorespaces Gestion des transferts m\IeC {\'e}moire vers et depuis le GPU.}}{90}{algocfline.8}} \newlabel{algo-median-memcpy}{{8}{90}{Les transferts de données\relax }{algocfline.8}{}} \@writefile{lot}{\contentsline {table}{\numberline {6.1}{\ignorespaces Temps de transfert vers et depuis le GPU, en fonction de la dimension de l'image et de la profondeur de 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.}}{90}{table.6.1}} \newlabel{tab-median-memcpy}{{6.1}{90}{Temps de transfert vers et depuis le GPU, en fonction de la dimension de l'image et de la profondeur de niveaux de gris. La colonne ``Mémoire globale'' donne les temps mesurés lorsque cette seule mémoire est employée}{table.6.1}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.3}Utilisation des registres}{90}{section.6.3}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.1}La s\IeC {\'e}lection de la valeur m\IeC {\'e}diane}{91}{subsection.6.3.1}} \newlabel{fig-median-ffs3-a}{{6.1(a)}{92}{Subfigure 6 6.1(a)\relax }{subfigure.6.1.1}{}} \newlabel{sub@fig-median-ffs3-a}{{(a)}{92}{Subfigure 6 6.1(a)\relax }{subfigure.6.1.1}{}} \newlabel{fig-median-ffs3-b}{{6.1(b)}{92}{Subfigure 6 6.1(b)\relax }{subfigure.6.1.2}{}} \newlabel{sub@fig-median-ffs3-b}{{(b)}{92}{Subfigure 6 6.1(b)\relax }{subfigure.6.1.2}{}} \@writefile{lof}{\contentsline {figure}{\numberline {6.1}{\ignorespaces Application de la s\IeC {\'e}lection de m\IeC {\'e}diane par oubli. a) \IeC {\`a} une fen\IeC {\^e}tre de $3\times 3$ pixels. b) Maximisation de l'ILP pour l'identification des extrema. }}{92}{figure.6.1}} \newlabel{fig-median-ffs3}{{6.1}{92}{Application de la sélection de médiane par oubli. a) à une fenêtre de $3\times 3$ pixels. b) Maximisation de l'ILP pour l'identification des extrema. \relax }{figure.6.1}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {\IeC {\'E}tapes de la s\IeC {\'e}lection par oubli pour un filtre 3$\times $3.}}}{92}{figure.6.1}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {Premi\IeC {\`e}re \IeC {\'e}tape d'identification des extrema pour un filtre 5$\times $5.}}}{92}{figure.6.1}} \@writefile{toc}{\contentsline {subsection}{\numberline {6.3.2}Masquage des latences}{92}{subsection.6.3.2}} \@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\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.}}{94}{figure.6.2}} \newlabel{fig-median-overlap}{{6.2}{94}{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.6.2}{}} \newlabel{lst-median3}{{6.1}{94}{Kernel réalisant un filtre médian 3$\times $3 en registres}{lstlisting.6.1}{}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {6.1}Kernel r\IeC {\'e}alisant un filtre m\IeC {\'e}dian 3$\times $3 en registres.}{94}{lstlisting.6.1}} \@writefile{toc}{\contentsline {section}{\numberline {6.4}R\IeC {\'e}sultats}{95}{section.6.4}} \@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\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)}}{95}{figure.6.3}} \newlabel{fig-median-comp}{{6.3}{95}{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.6.3}{}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(a)}{\ignorespaces {image 512$\times $512 pixels.}}}{95}{figure.6.3}} \@writefile{lof}{\contentsline {subfigure}{\numberline{(b)}{\ignorespaces {image 4096$\times $4096 pixels.}}}{95}{figure.6.3}} \@writefile{lot}{\contentsline {table}{\numberline {6.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 and 16 bit sur GPU C2070.}}{96}{table.6.2}} \newlabel{tab-median-coutcpy}{{6.2}{96}{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 and 16 bit sur GPU C2070}{table.6.2}{}} \@writefile{lot}{\contentsline {table}{\numberline {6.3}{\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.}}{96}{table.6.3}} \newlabel{tab-median-debitmax}{{6.3}{96}{Débits maximum effectifs $T_8$ and $T_{16}$ (en MP/s), respectivement pour les variantes 8 et 16 bits sur C2070}{table.6.3}{}} \citation{sanchezICASSP12} \@writefile{lot}{\contentsline {table}{\numberline {6.4}{\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.}}{97}{table.6.4}} \newlabel{tab-median-chronos}{{6.4}{97}{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.6.4}{}} \@writefile{toc}{\contentsline {section}{\numberline {6.5}Conclusion}{97}{section.6.5}} \citation{convolutionsoup} \@writefile{toc}{\contentsline {chapter}{\numberline {7}Les filtres de convolution sur GPU}{99}{chapter.7}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \@writefile{toc}{\contentsline {section}{\numberline {7.1}Introduction}{99}{section.7.1}} \@writefile{toc}{\contentsline {section}{\numberline {7.2}Impl\IeC {\'e}mentation g\IeC {\'e}n\IeC {\'e}rique de la convolution non s\IeC {\'e}parable}{99}{section.7.2}} \@writefile{loa}{\contentsline {algocf}{\numberline {9}{\ignorespaces Convolution g\IeC {\'e}n\IeC {\'e}rique sur GPU}}{100}{algocfline.9}} \newlabel{algo-convo-gene}{{9}{100}{Implémentation générique de la convolution non séparable\relax }{algocfline.9}{}} \newlabel{lst-convo-gene3reg8}{{7.1}{100}{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.7.1}{}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {7.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.}{100}{lstlisting.7.1}} \@writefile{lot}{\contentsline {table}{\numberline {7.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.}}{101}{table.7.1}} \newlabel{tab-convo-gene3reg8-2070}{{7.1}{101}{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.7.1}{}} \@writefile{lot}{\contentsline {table}{\numberline {7.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.}}{101}{table.7.2}} \newlabel{tab-convo-gene3reg8-480}{{7.2}{101}{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.7.2}{}} \@writefile{toc}{\contentsline {section}{\numberline {7.3}Impl\IeC {\'e}mentation optimis\IeC {\'e}e de la convolution non s\IeC {\'e}parable}{101}{section.7.3}} \@writefile{lof}{\contentsline {figure}{\numberline {7.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)$}}{102}{figure.7.1}} \newlabel{fig-convo-overlap}{{7.1}{102}{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.7.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.}}}{102}{figure.7.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.}}}{102}{figure.7.1}} \@writefile{lot}{\contentsline {table}{\numberline {7.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 }}{103}{table.7.3}} \newlabel{tab-convo-8x8p}{{7.3}{103}{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.7.3}{}} \newlabel{lst-convo-8x8pL3}{{7.2}{103}{Kernel réalisant la convolution par un masque 3$\times $3 dont les coefficients normalisés sont en mémoire constante}{lstlisting.7.2}{}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {7.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.}{103}{lstlisting.7.2}} \@writefile{toc}{\contentsline {section}{\numberline {7.4}Cas de la convolution s\IeC {\'e}parable}{104}{section.7.4}} \@writefile{lot}{\contentsline {table}{\numberline {7.4}{\ignorespaces Co\IeC {\^u}t, en ms, de la copie effectu\IeC {\'e}e entre les deux phases de convolution 1D, sur C2070.}}{105}{table.7.4}} \newlabel{tab-convo-memcpy}{{7.4}{105}{Coût, en ms, de la copie effectuée entre les deux phases de convolution 1D, sur C2070}{table.7.4}{}} \newlabel{lst-convo-1Dv}{{7.3}{105}{Kernel réalisant la convolution verticale 3$\times $1}{lstlisting.7.3}{}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {7.3}Kernel r\IeC {\'e}alisant la convolution verticale 3$\times $1.}{105}{lstlisting.7.3}} \newlabel{lst-convo-1Dh}{{7.4}{106}{Kernel réalisant la convolution horizontale 1$\times $3}{lstlisting.7.4}{}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {7.4}Kernel r\IeC {\'e}alisant la convolution horizontale 1$\times $3.}{106}{lstlisting.7.4}} \@writefile{toc}{\contentsline {section}{\numberline {7.5}Conclusion}{107}{section.7.5}} \@writefile{lot}{\contentsline {table}{\numberline {7.5}{\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 et de la copie int\IeC {\'e}rm\IeC {\'e}diaire. Le d\IeC {\'e}bit global int\IeC {\`e}gre les temps de transfert.}}{108}{table.7.5}} \newlabel{tab-convo-sep}{{7.5}{108}{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 et de la copie intérmédiaire. Le débit global intègre les temps de transfert}{table.7.5}{}} \bibstyle{plain} \bibdata{biblio} \@writefile{toc}{\contentsline {chapter}{\numberline {8}Conclusion g\IeC {\'e}n\IeC {\'e}rale}{109}{chapter.8}} \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \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{BlellochTR90}{10} \bibcite{boykov2004experimental}{11} \bibcite{bresenham1965algorithm}{12} \bibcite{1467423}{13} \bibcite{BuadesCM06}{14} \bibcite{Caselles99topographicmaps}{15} \bibcite{5459410}{16} \bibcite{cates2004gist}{17} \bibcite{chandran2009computational}{18} \bibcite{che2008performance}{19} \bibcite{chen09}{20} \bibcite{1093941}{21} \bibcite{cheng1995mean}{22} \bibcite{cherkassky1997implementing}{23} \bibcite{ChesnaudRB99}{24} \bibcite{cohen1993surface}{25} \bibcite{comaniciu1999mean}{26} \bibcite{comaniciu2002mean}{27} \bibcite{cutrona1990synthetic}{28} \bibcite{Dabov06imagedenoising}{29} \bibcite{Dabov09bm3dimage}{30} \bibcite{Daubechies:1992:TLW:130655}{31} \bibcite{dixit2005gpu}{32} \bibcite{elad2006image}{33} \bibcite{felzenszwalb2004efficient}{34} \bibcite{fluck2006gpu}{35} \bibcite{foley1994introduction}{36} \bibcite{ford1955simple}{37} \bibcite{fukunaga1975estimation}{38} \bibcite{fulkerson2012really}{39} \bibcite{GallandBR03}{40} \bibcite{GermainR01}{41} \bibcite{nlmeansgpubelge}{42} \bibcite{snakegvf06}{43} \bibcite{healey1994radiometric}{44} \bibcite{hochbaum2013simplifications}{45} \bibcite{5170921}{46} \bibcite{humphrey1924psychology}{47} \bibcite{jeong2009scalable}{48} \bibcite{5402362}{49} \bibcite{KassWT88}{50} \bibcite{keselman1998extraction}{51} \bibcite{cmla2009Kes}{52} \bibcite{kohli2007dynamic}{53} \bibcite{lefohn2003inter}{54} \bibcite{lefohn2003interactive}{55} \bibcite{lefohn2005streaming}{56} \bibcite{li2009mean}{57} \bibcite{li2011robust}{58} \bibcite{macqueen1967some}{59} \bibcite{Mallat:2008:WTS:1525499}{60} \bibcite{mancuso2001introduction}{61} \bibcite{martin2001database}{62} \bibcite{coil}{63} \bibcite{CUDAPG}{64} \bibcite{osher1988fronts}{65} \bibcite{4310076}{66} \bibcite{PALHANOXAVIERDEFONTES}{67} \bibcite{pelleg2000x}{68} \bibcite{4287006}{69} \bibcite{1521458}{70} \bibcite{4587843}{71} \bibcite{Roberts:2010:WGA:1921479.1921499}{72} \bibcite{ronfard1994region}{73} \bibcite{rumpf2001level}{74} \bibcite{sanchezICASSP12}{75} \bibcite{6288187}{76} \bibcite{sethian1996fast}{77} \bibcite{kmeansgpuopengl}{78} \bibcite{shi2000normalized}{79} \bibcite{snakegvfopencl12}{80} \bibcite{convolutionsoup}{81} \bibcite{graphcutscuda}{82} \bibcite{strang1999discrete}{83} \bibcite{sanchez2013highly}{84} \bibcite{theuwissen2001ccd}{85} \bibcite{710815}{86} \bibcite{tukey77}{87} \bibcite{vedaldi2008quick}{88} \bibcite{4563095}{89} \bibcite{Vineet:2009:FMS:1572769.1572796}{90} \bibcite{volkov2010better}{91} \bibcite{wang2001image}{92} \bibcite{wang2003image}{93} \bibcite{Wang04imagequality}{94} \bibcite{wong2010demystifying}{95} \bibcite{wu1993optimal}{96} \bibcite{xiao2010efficient}{97} \bibcite{5206542}{98} \bibcite{Zahn:1971:GMD:1309266.1309359}{99} \bibcite{zheng2011performance}{100} \bibcite{zheng2012fast}{101} \citation{CUDAPG} \citation{CUDAPG} \citation{zheng2011performance} \citation{graphcutscuda} \citation{fulkerson2012really} \citation{snakegvf06} \citation{martin2001database} \citation{wong2010demystifying}