X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/these_gilles.git/blobdiff_plain/13ca7bf0cd6c0a68491100176b08e819ef173a57..e42b2289f57cc234c130e3cfdec43a7328d24958:/THESE/these.toc?ds=sidebyside diff --git a/THESE/these.toc b/THESE/these.toc index 831115f..d038de9 100644 --- a/THESE/these.toc +++ b/THESE/these.toc @@ -1,94 +1,92 @@ \select@language {french} -\contentsline {part}{I\hspace {1em}Introduction}{5}{part.1} -\contentsline {chapter}{\numberline {1}Pr\IeC {\'e}ambule}{7}{chapter.1} -\contentsline {chapter}{\numberline {2}Les processeurs graphiques (GPU) NVidia\textregistered }{11}{chapter.2} -\contentsline {section}{\numberline {2.1}Pourquoi ?}{11}{section.2.1} -\contentsline {section}{\numberline {2.2}Comment ?}{13}{section.2.2} -\contentsline {subsection}{\numberline {2.2.1}Le mat\IeC {\'e}riel}{13}{subsection.2.2.1} -\contentsline {subsection}{\numberline {2.2.2}Le logiciel}{13}{subsection.2.2.2} -\contentsline {subsection}{\numberline {2.2.3}L'occupancy}{14}{subsection.2.2.3} -\contentsline {section}{\numberline {2.3}Contraintes de conception}{16}{section.2.3} -\contentsline {part}{II\hspace {1em}Le traitement des images}{19}{part.2} -\contentsline {chapter}{\numberline {3}Mod\IeC {\`e}les d'image et de bruits - notations}{23}{chapter.3} -\contentsline {section}{\numberline {3.1}Mod\IeC {\`e}le d'image bruit\IeC {\'e}e}{23}{section.3.1} -\contentsline {section}{\numberline {3.2}Mod\IeC {\`e}les de bruit}{23}{section.3.2} -\contentsline {subsection}{\numberline {3.2.1}Le bruit gaussien}{23}{subsection.3.2.1} -\contentsline {subsection}{\numberline {3.2.2}Le speckle}{24}{subsection.3.2.2} -\contentsline {subsection}{\numberline {3.2.3}Le bruit \FB@og sel et poivre \FB@fg {}}{24}{subsection.3.2.3} -\contentsline {subsection}{\numberline {3.2.4}Le bruit de Poisson}{25}{subsection.3.2.4} -\contentsline {chapter}{\numberline {4}Les techniques de r\IeC {\'e}duction de bruit}{27}{chapter.4} -\contentsline {section}{\numberline {4.1}Les techniques de r\IeC {\'e}duction de bruit}{27}{section.4.1} -\contentsline {subsection}{\numberline {4.1.1}Les op\IeC {\'e}rateurs de base}{28}{subsection.4.1.1} -\contentsline {subsubsection}{\numberline {4.1.1.1}Le filtre de convolution}{28}{subsubsection.4.1.1.1} -\contentsline {subsubsection}{\numberline {4.1.1.2}Le filtre m\IeC {\'e}dian}{29}{subsubsection.4.1.1.2} -\contentsline {subsubsection}{\numberline {4.1.1.3}Le filtre bilat\IeC {\'e}ral}{30}{subsubsection.4.1.1.3} -\contentsline {subsubsection}{\numberline {4.1.1.4}Les algorithmes de filtrage par dictionnaire}{30}{subsubsection.4.1.1.4} -\contentsline {subsection}{\numberline {4.1.2}Les algorithmes de filtrage par patches}{32}{subsection.4.1.2} -\contentsline {section}{\numberline {4.2}Les impl\IeC {\'e}mentations sur GPU des algorithmes de filtrage}{33}{section.4.2} -\contentsline {subsection}{\numberline {4.2.1}Le filtrage par convolution}{33}{subsection.4.2.1} -\contentsline {subsection}{\numberline {4.2.2}Le filtre m\IeC {\'e}dian}{34}{subsection.4.2.2} -\contentsline {subsection}{\numberline {4.2.3}Le filtre bilat\IeC {\'e}ral}{35}{subsection.4.2.3} -\contentsline {subsection}{\numberline {4.2.4}Les filtres par patches}{37}{subsection.4.2.4} -\contentsline {chapter}{\numberline {5}Les techniques de segmentation des images}{39}{chapter.5} -\contentsline {section}{\numberline {5.1}Introduction}{39}{section.5.1} -\contentsline {section}{\numberline {5.2}Les techniques de segmentation orient\IeC {\'e}es r\IeC {\'e}gions}{39}{section.5.2} -\contentsline {subsection}{\numberline {5.2.1}Analyse d'histogramme}{40}{subsection.5.2.1} -\contentsline {subsection}{\numberline {5.2.2}Partitionnement de graphe}{40}{subsection.5.2.2} -\contentsline {subsection}{\numberline {5.2.3}kernel-means, mean-shift et apparent\IeC {\'e}s}{43}{subsection.5.2.3} -\contentsline {section}{\numberline {5.3}Les techniques de segmentation par contours actifs, ou snakes}{45}{section.5.3} -\contentsline {subsection}{\numberline {5.3.1}M\IeC {\'e}thodes hybrides}{47}{subsection.5.3.1} -\contentsline {section}{\numberline {5.4}Les impl\IeC {\'e}mentations des techniques de segmentation sur GPU}{47}{section.5.4} -\contentsline {subsection}{\numberline {5.4.1}Calcul d'histogramme}{48}{subsection.5.4.1} -\contentsline {subsection}{\numberline {5.4.2}Partitionnement de graphe}{48}{subsection.5.4.2} -\contentsline {subsection}{\numberline {5.4.3}K-means, mean-shift et apparent\IeC {\'e}s}{49}{subsection.5.4.3} -\contentsline {subsection}{\numberline {5.4.4}Level set et snakes}{52}{subsection.5.4.4} -\contentsline {subsection}{\numberline {5.4.5}Algorithmes hybrides}{54}{subsection.5.4.5} -\contentsline {section}{\numberline {5.5}Conclusion}{55}{section.5.5} -\contentsline {part}{III\hspace {1em}Algorithmes GPU rapides pour la r\IeC {\'e}duction de bruit et la segmentation}{57}{part.3} -\contentsline {chapter}{\numberline {6}La segmentation par snake polygonal orient\IeC {\'e} r\IeC {\'e}gions}{59}{chapter.6} -\contentsline {section}{\numberline {6.1}Introduction}{59}{section.6.1} -\contentsline {section}{\numberline {6.2}Pr\IeC {\'e}sentation de l'algorithme}{59}{section.6.2} -\contentsline {subsection}{\numberline {6.2.1}Formulation}{59}{subsection.6.2.1} -\contentsline {subsection}{\numberline {6.2.2}Optimisation des calculs}{60}{subsection.6.2.2} -\contentsline {subsection}{\numberline {6.2.3}Impl\IeC {\'e}mentation s\IeC {\'e}quentielle}{63}{subsection.6.2.3} -\contentsline {subsection}{\numberline {6.2.4}Performances}{64}{subsection.6.2.4} -\contentsline {section}{\numberline {6.3}Impl\IeC {\'e}mentation parall\IeC {\`e}le GPU du snake polygonal}{67}{section.6.3} -\contentsline {subsection}{\numberline {6.3.1}Pr\IeC {\'e}-calculs des images cumul\IeC {\'e}es}{68}{subsection.6.3.1} -\contentsline {subsection}{\numberline {6.3.2}Calcul des contributions des segments}{70}{subsection.6.3.2} -\contentsline {subsubsection}{\numberline {6.3.2.1}Cas particulier des segments dont la pente $k$ v\IeC {\'e}rifie $|k|\leq 1$}{74}{subsubsection.6.3.2.1} -\contentsline {subsection}{\numberline {6.3.3}Performances}{75}{subsection.6.3.3} -\contentsline {subsection}{\numberline {6.3.4}D\IeC {\'e}termination du contour initial au sens du maximum de vraisemblance}{75}{subsection.6.3.4} -\contentsline {subsection}{\numberline {6.3.5}Conclusion}{77}{subsection.6.3.5} -\contentsline {chapter}{\numberline {7}R\IeC {\'e}duction de bruit par recherche des lignes de niveaux}{79}{chapter.7} -\contentsline {section}{\numberline {7.1}Introduction}{79}{section.7.1} -\contentsline {section}{\numberline {7.2}Pr\IeC {\'e}sentation de l'algorithme}{80}{section.7.2} -\contentsline {subsection}{\numberline {7.2.1}Formulation}{80}{subsection.7.2.1} -\contentsline {subsubsection}{\numberline {7.2.1.1}D\IeC {\'e}termination du premier segment}{80}{subsubsection.7.2.1.1} -\contentsline {subsubsection}{\numberline {7.2.1.2}Isolines compos\IeC {\'e}es de plusieurs segments - crit\IeC {\`e}re d'allongement}{82}{subsubsection.7.2.1.2} -\contentsline {section}{\numberline {7.3}Mod\IeC {\'e}lisation des isolines pour l'impl\IeC {\'e}mentation parall\IeC {\`e}le sur GPU}{83}{section.7.3} -\contentsline {subsection}{\numberline {7.3.1}Isolines \IeC {\'e}valu\IeC {\'e}es semi-globalement}{84}{subsection.7.3.1} -\contentsline {subsection}{\numberline {7.3.2}Isolines \IeC {\`a} segments pr\IeC {\'e}-\IeC {\'e}valu\IeC {\'e}s - mod\IeC {\`e}le PI-PD}{86}{subsection.7.3.2} -\contentsline {subsection}{\numberline {7.3.3}Mod\IeC {\`e}le PI-PD hybride}{88}{subsection.7.3.3} -\contentsline {subsubsection}{\numberline {7.3.3.1}Le d\IeC {\'e}tecteur de bords}{89}{subsubsection.7.3.3.1} -\contentsline {section}{\numberline {7.4}R\IeC {\'e}sultats}{92}{section.7.4} -\contentsline {section}{\numberline {7.5}Extension aux images couleurs}{94}{section.7.5} -\contentsline {subsection}{\numberline {7.5.1}Expression du crit\IeC {\`e}re}{94}{subsection.7.5.1} -\contentsline {subsection}{\numberline {7.5.2}R\IeC {\'e}sultats - analyse}{95}{subsection.7.5.2} -\contentsline {section}{\numberline {7.6}Conclusion}{98}{section.7.6} -\contentsline {chapter}{\numberline {8}Le filtre m\IeC {\'e}dian sur GPU}{103}{chapter.8} -\contentsline {section}{\numberline {8.1}Introduction}{103}{section.8.1} -\contentsline {section}{\numberline {8.2}Les transferts de donn\IeC {\'e}es}{103}{section.8.2} -\contentsline {section}{\numberline {8.3}Utilisation des registres}{105}{section.8.3} -\contentsline {subsection}{\numberline {8.3.1}La s\IeC {\'e}lection de la valeur m\IeC {\'e}diane}{105}{subsection.8.3.1} -\contentsline {subsection}{\numberline {8.3.2}Masquage des latences}{106}{subsection.8.3.2} -\contentsline {section}{\numberline {8.4}R\IeC {\'e}sultats}{110}{section.8.4} -\contentsline {section}{\numberline {8.5}Conclusion}{112}{section.8.5} -\contentsline {chapter}{\numberline {9}Les filtres de convolution sur GPU}{113}{chapter.9} -\contentsline {section}{\numberline {9.1}Introduction}{113}{section.9.1} -\contentsline {section}{\numberline {9.2}Impl\IeC {\'e}mentation g\IeC {\'e}n\IeC {\'e}rique de la convolution non s\IeC {\'e}parable sur GPU}{113}{section.9.2} -\contentsline {section}{\numberline {9.3}Impl\IeC {\'e}mentation optimis\IeC {\'e}e de la convolution non s\IeC {\'e}parable sur GPU}{115}{section.9.3} -\contentsline {section}{\numberline {9.4}Cas de la convolution s\IeC {\'e}parable}{119}{section.9.4} -\contentsline {section}{\numberline {9.5}Conclusion}{124}{section.9.5} -\contentsline {part}{IV\hspace {1em}Conclusions et perspectives}{127}{part.4} -\contentsline {chapter}{\numberline {10}Conclusion g\IeC {\'e}n\IeC {\'e}rale}{129}{chapter.10} -\contentsline {chapter}{\numberline {11}Remerciements}{131}{chapter.11} +\contentsline {part}{I\hspace {1em}Introduction}{1}{part.1} +\contentsline {chapter}{\numberline {1}Pr\IeC {\'e}ambule}{3}{chapter.1} +\contentsline {chapter}{\numberline {2}Les processeurs graphiques (GPU) NVidia\textregistered }{7}{chapter.2} +\contentsline {section}{\numberline {2.1}Pourquoi ?}{7}{section.2.1} +\contentsline {section}{\numberline {2.2}Comment ?}{9}{section.2.2} +\contentsline {subsection}{\numberline {2.2.1}Le mat\IeC {\'e}riel}{9}{subsection.2.2.1} +\contentsline {subsection}{\numberline {2.2.2}Le logiciel}{9}{subsection.2.2.2} +\contentsline {subsection}{\numberline {2.2.3}L'occupancy}{10}{subsection.2.2.3} +\contentsline {section}{\numberline {2.3}Contraintes de conception}{12}{section.2.3} +\contentsline {part}{II\hspace {1em}Le traitement des images}{15}{part.2} +\contentsline {chapter}{\numberline {3}Mod\IeC {\`e}les d'image et de bruits - notations}{19}{chapter.3} +\contentsline {section}{\numberline {3.1}Mod\IeC {\`e}le d'image bruit\IeC {\'e}e}{19}{section.3.1} +\contentsline {section}{\numberline {3.2}Mod\IeC {\`e}les de bruit}{19}{section.3.2} +\contentsline {subsection}{\numberline {3.2.1}Le bruit gaussien}{19}{subsection.3.2.1} +\contentsline {subsection}{\numberline {3.2.2}Le speckle}{20}{subsection.3.2.2} +\contentsline {subsection}{\numberline {3.2.3}Le bruit \FB@og sel et poivre \FB@fg {}}{20}{subsection.3.2.3} +\contentsline {subsection}{\numberline {3.2.4}Le bruit de Poisson}{21}{subsection.3.2.4} +\contentsline {chapter}{\numberline {4}Les techniques de r\IeC {\'e}duction de bruit}{23}{chapter.4} +\contentsline {section}{\numberline {4.1}Les techniques de r\IeC {\'e}duction de bruit}{23}{section.4.1} +\contentsline {subsection}{\numberline {4.1.1}Les op\IeC {\'e}rateurs de base}{24}{subsection.4.1.1} +\contentsline {subsubsection}{\numberline {4.1.1.1}Le filtre de convolution}{24}{subsubsection.4.1.1.1} +\contentsline {subsubsection}{\numberline {4.1.1.2}Le filtre m\IeC {\'e}dian}{25}{subsubsection.4.1.1.2} +\contentsline {subsubsection}{\numberline {4.1.1.3}Le filtre bilat\IeC {\'e}ral}{26}{subsubsection.4.1.1.3} +\contentsline {subsubsection}{\numberline {4.1.1.4}Les algorithmes de filtrage par dictionnaire}{26}{subsubsection.4.1.1.4} +\contentsline {subsection}{\numberline {4.1.2}Les algorithmes de filtrage par patches}{28}{subsection.4.1.2} +\contentsline {section}{\numberline {4.2}Les impl\IeC {\'e}mentations sur GPU des algorithmes de filtrage}{29}{section.4.2} +\contentsline {subsection}{\numberline {4.2.1}Le filtrage par convolution}{29}{subsection.4.2.1} +\contentsline {subsection}{\numberline {4.2.2}Le filtre m\IeC {\'e}dian}{30}{subsection.4.2.2} +\contentsline {subsection}{\numberline {4.2.3}Le filtre bilat\IeC {\'e}ral}{31}{subsection.4.2.3} +\contentsline {subsection}{\numberline {4.2.4}Les filtres par patches}{33}{subsection.4.2.4} +\contentsline {chapter}{\numberline {5}Les techniques de segmentation des images}{35}{chapter.5} +\contentsline {section}{\numberline {5.1}Introduction}{35}{section.5.1} +\contentsline {section}{\numberline {5.2}Les techniques de segmentation orient\IeC {\'e}es r\IeC {\'e}gions}{35}{section.5.2} +\contentsline {subsection}{\numberline {5.2.1}Analyse d'histogramme}{36}{subsection.5.2.1} +\contentsline {subsection}{\numberline {5.2.2}Partitionnement de graphe}{36}{subsection.5.2.2} +\contentsline {subsection}{\numberline {5.2.3}kernel-means, mean-shift et apparent\IeC {\'e}s}{39}{subsection.5.2.3} +\contentsline {section}{\numberline {5.3}Les techniques de segmentation par contours actifs, ou snakes}{41}{section.5.3} +\contentsline {subsection}{\numberline {5.3.1}M\IeC {\'e}thodes hybrides}{43}{subsection.5.3.1} +\contentsline {section}{\numberline {5.4}Les impl\IeC {\'e}mentations des techniques de segmentation sur GPU}{43}{section.5.4} +\contentsline {subsection}{\numberline {5.4.1}Calcul d'histogramme}{44}{subsection.5.4.1} +\contentsline {subsection}{\numberline {5.4.2}Partitionnement de graphe}{44}{subsection.5.4.2} +\contentsline {subsection}{\numberline {5.4.3}K-means, mean-shift et apparent\IeC {\'e}s}{45}{subsection.5.4.3} +\contentsline {subsection}{\numberline {5.4.4}Level set et snakes}{48}{subsection.5.4.4} +\contentsline {subsection}{\numberline {5.4.5}Algorithmes hybrides}{50}{subsection.5.4.5} +\contentsline {section}{\numberline {5.5}Conclusion}{51}{section.5.5} +\contentsline {part}{III\hspace {1em}Algorithmes GPU rapides pour la r\IeC {\'e}duction de bruit et la segmentation}{53}{part.3} +\contentsline {chapter}{\numberline {6}La segmentation par snake polygonal orient\IeC {\'e} r\IeC {\'e}gions}{55}{chapter.6} +\contentsline {section}{\numberline {6.1}Introduction}{55}{section.6.1} +\contentsline {section}{\numberline {6.2}Pr\IeC {\'e}sentation de l'algorithme}{55}{section.6.2} +\contentsline {subsection}{\numberline {6.2.1}Formulation}{55}{subsection.6.2.1} +\contentsline {subsection}{\numberline {6.2.2}Optimisation des calculs}{56}{subsection.6.2.2} +\contentsline {subsection}{\numberline {6.2.3}Impl\IeC {\'e}mentation s\IeC {\'e}quentielle}{59}{subsection.6.2.3} +\contentsline {subsection}{\numberline {6.2.4}Performances}{60}{subsection.6.2.4} +\contentsline {section}{\numberline {6.3}Impl\IeC {\'e}mentation parall\IeC {\`e}le GPU du snake polygonal}{63}{section.6.3} +\contentsline {subsection}{\numberline {6.3.1}Pr\IeC {\'e}-calculs des images cumul\IeC {\'e}es}{64}{subsection.6.3.1} +\contentsline {subsection}{\numberline {6.3.2}Calcul des contributions des segments}{66}{subsection.6.3.2} +\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} +\contentsline {subsection}{\numberline {6.3.3}Performances}{71}{subsection.6.3.3} +\contentsline {subsection}{\numberline {6.3.4}D\IeC {\'e}termination du contour initial au sens du maximum de vraisemblance}{71}{subsection.6.3.4} +\contentsline {subsection}{\numberline {6.3.5}Conclusion}{73}{subsection.6.3.5} +\contentsline {chapter}{\numberline {7}R\IeC {\'e}duction de bruit par recherche des lignes de niveaux}{75}{chapter.7} +\contentsline {section}{\numberline {7.1}Introduction}{75}{section.7.1} +\contentsline {section}{\numberline {7.2}Pr\IeC {\'e}sentation de l'algorithme}{76}{section.7.2} +\contentsline {subsection}{\numberline {7.2.1}Formulation}{76}{subsection.7.2.1} +\contentsline {subsubsection}{\numberline {7.2.1.1}D\IeC {\'e}termination du premier segment}{76}{subsubsection.7.2.1.1} +\contentsline {subsubsection}{\numberline {7.2.1.2}Isolines compos\IeC {\'e}es de plusieurs segments - crit\IeC {\`e}re d'allongement}{78}{subsubsection.7.2.1.2} +\contentsline {section}{\numberline {7.3}Mod\IeC {\'e}lisation des isolines pour l'impl\IeC {\'e}mentation parall\IeC {\`e}le sur GPU}{79}{section.7.3} +\contentsline {subsection}{\numberline {7.3.1}Isolines \IeC {\'e}valu\IeC {\'e}es semi-globalement}{80}{subsection.7.3.1} +\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}{82}{subsection.7.3.2} +\contentsline {subsection}{\numberline {7.3.3}Mod\IeC {\`e}le PI-PD hybride}{84}{subsection.7.3.3} +\contentsline {subsubsection}{\numberline {7.3.3.1}Le d\IeC {\'e}tecteur de bords}{85}{subsubsection.7.3.3.1} +\contentsline {section}{\numberline {7.4}R\IeC {\'e}sultats}{88}{section.7.4} +\contentsline {section}{\numberline {7.5}Extension aux images couleurs}{90}{section.7.5} +\contentsline {subsection}{\numberline {7.5.1}Expression du crit\IeC {\`e}re}{90}{subsection.7.5.1} +\contentsline {subsection}{\numberline {7.5.2}R\IeC {\'e}sultats - analyse}{91}{subsection.7.5.2} +\contentsline {section}{\numberline {7.6}Conclusion}{94}{section.7.6} +\contentsline {chapter}{\numberline {8}Le filtre m\IeC {\'e}dian sur GPU}{99}{chapter.8} +\contentsline {section}{\numberline {8.1}Introduction}{99}{section.8.1} +\contentsline {section}{\numberline {8.2}Les transferts de donn\IeC {\'e}es}{99}{section.8.2} +\contentsline {section}{\numberline {8.3}Utilisation des registres}{101}{section.8.3} +\contentsline {subsection}{\numberline {8.3.1}La s\IeC {\'e}lection de la valeur m\IeC {\'e}diane}{101}{subsection.8.3.1} +\contentsline {subsection}{\numberline {8.3.2}Masquage des latences}{102}{subsection.8.3.2} +\contentsline {section}{\numberline {8.4}R\IeC {\'e}sultats}{106}{section.8.4} +\contentsline {section}{\numberline {8.5}Conclusion}{108}{section.8.5} +\contentsline {chapter}{\numberline {9}Les filtres de convolution sur GPU}{109}{chapter.9} +\contentsline {section}{\numberline {9.1}Introduction}{109}{section.9.1} +\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} +\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} +\contentsline {section}{\numberline {9.4}Cas de la convolution s\IeC {\'e}parable}{115}{section.9.4} +\contentsline {section}{\numberline {9.5}Conclusion}{120}{section.9.5} +\contentsline {chapter}{\numberline {10}Conclusion g\IeC {\'e}n\IeC {\'e}rale}{123}{chapter.10}