From: Greg Burri Date: Tue, 9 Jun 2015 06:22:29 +0000 (+0200) Subject: Mise à jour rapport. X-Git-Url: https://git.euphorik.ch/?a=commitdiff_plain;h=9c22685e59e81dff262579b88ca9a4207ad1c717;p=malaria.git Mise à jour rapport. --- diff --git a/Documentation/Traitement image/TERI_MorphoMath.pdf b/Documentation/Traitement image/TERI_MorphoMath.pdf new file mode 100644 index 0000000..aa7063e Binary files /dev/null and b/Documentation/Traitement image/TERI_MorphoMath.pdf differ diff --git a/rapport/main.tex b/rapport/main.tex index ffd6127..b68bb02 100644 --- a/rapport/main.tex +++ b/rapport/main.tex @@ -231,13 +231,19 @@ Cette section aborde la description des différents outils morphologiques ainsi \subsection{Outils morphologique} + + +La morphologie mathématique est un + * mmdil * mmero * mmopen * mmclose * mmareaopen (areaOpen) * mmareaclose +* Regmax (maximaux locaux) * mminfrec reconstruction par dilatation +* Watersheds (ligne de partage des eaux) * gamma\_lambda à la place de areaOpen @@ -284,8 +290,6 @@ La qualité du résultat final n'est pas beaucoup affectée par diminution de la Tout au long de cette description nous lions certains résultats d'opération à des noms de variables issues du code \emph{MATLAB} (fourni en annexe). Ceci afin de pouvoir facilement retrouver le détail de ces opérations dans le code et de faciliter le suivi de l'enchaînement des opérations. - Caractériser les images en entrée + mettre une image en figure (sachant que l'ensemble du processus y est très sensible). - \subsection{Détection des parasites} \label{detection-parasites} @@ -333,15 +337,15 @@ Afin de gommer le bruit et de rendre le fond plus homogène, un filtre médian 5 L'objectif ici est de déterminer le rayon moyen des globules rouges (souvent abrégé \emph{RBC} pour \emph{red blood cell}). Pour ce faire, nous réalisons une succession de fermetures à l'aide d'un élément structurant de forme octogonale sur la composante \emph{saturation} ($\mli{imgFiltered\{2\}}$). Il est à noter que les globules rouges ont une intensité moindre que le fond (voir la figure~\ref{imgSFiltered}), c'est pour cela que nous utilisons une fermeture et non une ouverture. Nous évitons ici un élément structurant ayant la forme d'un disque pour des raisons de performance, une fermeture avec ce dernier demandant d'effectuer beaucoup plus de calculs. Une ouverture par aire de 1000 est appliquée au préalable sur la composante \emph{saturation} afin de niveler l'intensité des cellules. \begin{sloppypar} % Pour éviter que certaines formules inline débordent dans la marge. -Nous partons d'un rayon initial de un pour arriver à un rayon maximal de $\mli{width}(\mli{imgRGB}) / 35$. Le rayon maximal est défini en fonction de la largeur de l'image, ce qui permet de ne pas être dépendant de sa résolution. À chaque itération une fermeture est effectuée suivi du calcul du volume relatif de l'image : $\mli{volume}(\mli{imgClosed}) \rightarrow A, 1 - A / \mli{volImg} \rightarrow N$ où $\mli{volImg}$ est le volume de $\mli{imgFiltered\{2\}}$. La différence de volume est calculée pour chaque itération $i$ comme suit : $\lvert N_{i + 1} - N_i \rvert$. +Nous partons d'un rayon initial de un pour arriver à un rayon maximal de $\mli{width}(\mli{imgRGB}) / 35$. Le rayon maximal est défini en fonction de la largeur de l'image, ce qui permet de ne pas être dépendant de sa résolution. À chaque itération une fermeture est effectuée suivi du calcul du volume relatif de l'image : $\mli{volume}(\mli{imgClosed}) \rightarrow A, 1 - A / \mli{volImg} \rightarrow N$ où $\mli{volImg}$ est le volume de $\mli{imgFiltered\{2\}}$. La différence de volume (spectre granulométrique) est calculée pour chaque itération $i$ comme suit : $\lvert N_{i + 1} - N_i \rvert$. \end{sloppypar} -Nous définissons le rayon moyen des globules rouges ($\mli{RBCRadius}$) comme étant le rayon de l'élément structurant correspondant à la valeur maximale parmi les différences de volume. Le rayon moyen du noyau des parasites est impossible à extraire des différences de volume : nous le calculons comme étant un cinquième de la taille des globules rouges : $\mli{RBCRadius} / 5 \rightarrow \mli{nucleiRadius}$. La figure \ref{fig:patternSpectrum} montre le graphique de la distribution des différences. Dans ce cas $\mli{RBCRadius}$ est égal à 35 et $\mli{nucleiRadius}$ à 7. +Nous définissons le rayon moyen des globules rouges ($\mli{RBCRadius}$) comme étant le rayon de l'élément structurant correspondant à la valeur maximale parmi le spectre granulométrique. Le rayon moyen du noyau des parasites est impossible à extraire des différences de volume : nous le calculons comme étant un cinquième de la taille des globules rouges : $\mli{RBCRadius} / 5 \rightarrow \mli{nucleiRadius}$. La figure \ref{fig:patternSpectrum} montre le graphique d'un spectre granulométrique. Dans ce cas $\mli{RBCRadius}$ est égal à 35 et $\mli{nucleiRadius}$ à 7. \begin{figure}[htbp] \centering \includegraphics[width=0.8\linewidth]{img/pattern_spectrum_granulometry.eps} - \caption{Distribution des différences calculée lors de la granulométrie} + \caption{Spectre granulométrique} \label{fig:patternSpectrum} \end{figure} @@ -363,7 +367,7 @@ La figure \ref{fig:regmax_sample} montre un exemple d'application de cette fonct ~ \begin{subfigure}[b]{0.15\textwidth} \includegraphics[width=\linewidth]{img/regmax_sample_se.eps} - \caption{L'élément structurant : un carré de taille 5} + \caption{L'élément structurant : un carré de taille 5 symétrique} \label{fig:regmax_sample_se} \end{subfigure} ~ @@ -449,7 +453,7 @@ Pour savoir si deux sous-ensembles, $A$ et $B$, sont à une \emph{distance de Ha \subsection{Segmentation des globules rouges} \label{segmentation-globules-rouges} -Le but ici est de séparer les globules rouges : nous utilisons l'image initiale ($\mli{imgRGB}$), le rayon des globules rouges ($\mli{RBCRadius}$), les globules blancs ($\mli{WBC}$) et les schizontes ($\mli{schizonts}$). Pour ce faire nous utilisons dans un premier temps une segmentation par \emph{watersheds} à l'aide d'une transformée de distance. Nous séparons ensuite les segments en deux groupes, un groupe dont chaque élément représente une unique cellule et un autre groupe dont chaque élément représente un composé de cellules. Les cellules des éléments composés sont ensuite séparées : le résultat est uni aux cellules uniques et les éléments touchant les bords sont enlevés afin d'obtenir le résultat final. +Le but ici est de séparer les globules rouges : nous utilisons l'image initiale ($\mli{imgRGB}$), le rayon des globules rouges ($\mli{RBCRadius}$), les globules blancs ($\mli{WBC}$) et les schizontes ($\mli{schizonts}$). Pour ce faire nous utilisons dans un premier temps une segmentation par ligne de partage (\emph{watersheds} en anglais) des eaux à l'aide d'une transformée en distance. Nous séparons ensuite les segments en deux groupes, un groupe dont chaque élément représente une unique cellule et un autre groupe dont chaque élément représente un composé de cellules. Les cellules des éléments composés sont ensuite séparées : le résultat est uni aux cellules uniques et les éléments touchant les bords sont enlevés afin d'obtenir le résultat final. Durant le processus, nous avons besoin de définir le rayon minimum d'un globule rouge ainsi que son aire. Le rayon minimum est défini comme étant 75~\% du rayon nominal, comme montré ci dessous. @@ -486,9 +490,9 @@ La figure~\ref{fig:segmentation-histogramme-grayflat} montre l'histogramme de $\ \end{figure} -\subsubsection{Calcul des distances et \emph{watersheds}} +\subsubsection{Calcul des distances et ligne de partage des eaux} -Après le seuillage des globules rouges, certaines régions comprennent deux ou plusieurs globules rouges qu'il faut séparer. Pour se faire nous appliquons une transformée de distance (\texttt{mmdist}) qui permet de donner une distance à chaque pixel blanc. Cette distance correspond à la plus courte distance euclidienne entre le pixel blanc et un pixel noir. Nous cherchons ensuite les maximaux régionaux de l'image de distance en utilisant un élément structurant octogonal dont le rayon est la moitié de $\mli{RBCRadius}$. Une dilatée d'un disque de rayon $\mli{RBCRadius} / 7$ est alors appliquée aux maximaux pour fusionner d'éventuelles zones très proches. L'algorithme \emph{watersheds} est appliqué au négatif des distances en utilisant les maximaux dilatés comme marqueurs. Finalement l'intersection entre le négatif des \emph{watersheds} et de $\mli{thresholdOpened}$ correspond au résultat. La figure~\ref{fig:segmentation-watershed} montre les étapes de ce processus. +Après le seuillage des globules rouges, certaines régions comprennent deux ou plusieurs globules rouges qu'il faut séparer. Pour se faire nous appliquons une transformée en distance (\texttt{mmdist}) qui permet de donner une distance à chaque pixel blanc. Cette distance correspond à la plus courte distance euclidienne entre le pixel blanc et un pixel noir. Nous cherchons ensuite les maximaux régionaux de l'image en distance en utilisant un élément structurant octogonal dont le rayon est la moitié de $\mli{RBCRadius}$. Une dilatée d'un disque de rayon $\mli{RBCRadius} / 7$ est alors appliquée aux maximaux pour fusionner d'éventuelles zones très proches. L'algorithme de recherche de la ligne de partage des eaux est appliqué au négatif des distances en utilisant les maximaux dilatés comme marqueurs. Finalement l'intersection entre le négatif de la ligne de partage des eaux et de $\mli{thresholdOpened}$ correspond au résultat. La figure~\ref{fig:segmentation-watershed} montre les étapes de ce processus. \begin{figure}[htbp] \centering @@ -506,10 +510,10 @@ Après le seuillage des globules rouges, certaines régions comprennent deux ou ~ \begin{subfigure}[t]{0.3\textwidth} \includegraphics[width=\linewidth]{img/segmentation_watershed_3.jpg} - \caption{Image après découpe de l'image initiale avec le résultat de l'algorithme \emph{watersheds}} + \caption{Image après découpe de l'image initiale avec le résultat de la ligne de partage des eaux} \label{fig:segmentation-watershed-3} \end{subfigure} - \caption{Wastershed par transformé de distance} + \caption{Wastershed par transformé en distance} \label{fig:segmentation-watershed} \end{figure}