From: Greg Burri Date: Sat, 30 Jan 2016 18:06:03 +0000 (+0100) Subject: Update report. X-Git-Tag: 1.0.11~21 X-Git-Url: http://git.euphorik.ch/?p=master-thesis.git;a=commitdiff_plain;h=d3fdf4bce5aa39363998276346bca7445b0a351d Update report. --- diff --git a/rapport/figures-sources/construction-ellipse-vecteurs-valides-1.svg b/rapport/figures-sources/construction-ellipse-vecteurs-valides-1.svg new file mode 100644 index 0000000..c5d9a06 --- /dev/null +++ b/rapport/figures-sources/construction-ellipse-vecteurs-valides-1.svg @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + p1 + + + + + + + + p2 + p0 + v1 + v2 + d1 + d2 + + α + + diff --git a/rapport/figures-sources/construction-ellipse-vecteurs-valides-2.svg b/rapport/figures-sources/construction-ellipse-vecteurs-valides-2.svg new file mode 100644 index 0000000..d1c95bf --- /dev/null +++ b/rapport/figures-sources/construction-ellipse-vecteurs-valides-2.svg @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + p1 + + + + + + + + + p2 + p0 + v1 + v2 + d1 + d2 + + α + + diff --git a/rapport/figures-sources/construction-ellipse-vecteurs-valides-3.svg b/rapport/figures-sources/construction-ellipse-vecteurs-valides-3.svg new file mode 100644 index 0000000..dd60175 --- /dev/null +++ b/rapport/figures-sources/construction-ellipse-vecteurs-valides-3.svg @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + p1 + + + + + + + + + p2 + p0 + v1 + v2 + d1 + d2 + + diff --git a/rapport/figures-sources/construction-ellipse.svg b/rapport/figures-sources/construction-ellipse.svg index ab5990c..cf57140 100644 --- a/rapport/figures-sources/construction-ellipse.svg +++ b/rapport/figures-sources/construction-ellipse.svg @@ -72,9 +72,9 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="1.4" - inkscape:cx="5.6033933" - inkscape:cy="157.03376" + inkscape:zoom="2.8" + inkscape:cx="183.15611" + inkscape:cy="118.89306" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -96,7 +96,7 @@ image/svg+xml - + @@ -239,27 +239,27 @@ md1 md2 diff --git a/rapport/figures-sources/non-maximum-suppression-schema.svg b/rapport/figures-sources/non-maximum-suppression-schema.svg index 383e188..a8fa450 100644 --- a/rapport/figures-sources/non-maximum-suppression-schema.svg +++ b/rapport/figures-sources/non-maximum-suppression-schema.svg @@ -118,8 +118,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="2.8" - inkscape:cx="96.777401" - inkscape:cy="75.48831" + inkscape:cx="26.599988" + inkscape:cy="96.691785" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" @@ -140,7 +140,7 @@ image/svg+xml - + @@ -153,10 +153,10 @@ inkscape:connector-curvature="0" id="path4590" d="M 328.58946,678.51485 289.36509,810.14532" - style="fill:none;fill-rule:evenodd;stroke:#818181;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + style="fill:none;fill-rule:evenodd;stroke:#bcbcbc;stroke-width:0.60000002;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" sodipodi:nodetypes="cc" /> @@ -174,13 +174,13 @@ xml:space="preserve" style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.5px;line-height:125%;font-family:Garamond;-inkscape-font-specification:'Garamond, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" x="355.72397" - y="773.87073" + y="774.12329" id="text13656" sodipodi:linespacing="125%">arête + y="774.12329">arête gradient + x="347.04056" + y="727.61548">gradient 0} \label{fig:ellipse-parametres} \end{figure} @@ -335,13 +335,13 @@ Deux autres approches on également été essayées, à savoir la fermeture morp \begin{figure}[htbp] \centering \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=\linewidth]{img/granulometrie-ellipse-cercle-closing-area.pdf} + \includegraphics[width=\linewidth]{figures/granulometrie-ellipse-cercle-closing-area.pdf} \caption{Cercle dont la surface est égale à celle de l'ellipse} \label{fig:granulometrie-ellipse-cercle-closing-area} \end{subfigure} ~ \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=\linewidth]{img/granulometrie-ellipse-cercle-closing-morpho.pdf} + \includegraphics[width=\linewidth]{figures/granulometrie-ellipse-cercle-closing-morpho.pdf} \caption{Cercle dont \emph{r} est égale au petit rayon \emph{a} de l'ellipse} \label{fig:granulometrie-ellipse-cercle-closing-morpho} \end{subfigure} @@ -367,13 +367,13 @@ Il faut remarquer que le spectre granulométrique par aire comporte un deuxième \begin{figure}[htbp] \centering \begin{subfigure}[t]{0.48\textwidth} - \includegraphics[width=1\linewidth]{img/Granulometry-pattern-spectrum-area.pdf} + \includegraphics[width=1\linewidth]{figures/Granulometry-pattern-spectrum-area.pdf} \caption{Spectre granulométrique d'une succession de fermetures par aire} \label{fig:spectre-granulométrique-aire} \end{subfigure} ~ \begin{subfigure}[t]{0.48\textwidth} - \includegraphics[width=1\linewidth]{img/Granulometry-time-area.pdf} + \includegraphics[width=1\linewidth]{figures/Granulometry-time-area.pdf} \caption{Temps en milliseconde pour chaque fermeture. Temps total : 8.4~s} \label{fig:temps-aire} \end{subfigure} @@ -384,13 +384,13 @@ Il faut remarquer que le spectre granulométrique par aire comporte un deuxième \begin{figure}[htbp] \centering \begin{subfigure}[t]{0.48\textwidth} - \includegraphics[width=1\linewidth]{img/Granulometry-pattern-spectrum-morpho-circle.pdf} + \includegraphics[width=1\linewidth]{figures/Granulometry-pattern-spectrum-morpho-circle.pdf} \caption{Spectre granulométrique d'une succession de fermetures morphologiques avec un disque} \label{fig:spectre-granulométrique-morpho-cercle} \end{subfigure} ~ \begin{subfigure}[t]{0.48\textwidth} - \includegraphics[width=1\linewidth]{img/Granulometry-time-morpho-circle.pdf} + \includegraphics[width=1\linewidth]{figures/Granulometry-time-morpho-circle.pdf} \caption{Temps en milliseconde pour chaque fermeture. Temps total : 54~s} \label{fig:temps-morpho-cercle} \end{subfigure} @@ -401,13 +401,13 @@ Il faut remarquer que le spectre granulométrique par aire comporte un deuxième \begin{figure}[htbp] \centering \begin{subfigure}[t]{0.48\textwidth} - \includegraphics[width=1\linewidth]{img/Granulometry-pattern-spectrum-morpho-octagon.pdf} + \includegraphics[width=1\linewidth]{figures/Granulometry-pattern-spectrum-morpho-octagon.pdf} \caption{Spectre granulométrique d'une succession de fermetures morphologiques avec un octogone} \label{fig:spectre-granulométrique-morpho-octogone} \end{subfigure} ~ \begin{subfigure}[t]{0.48\textwidth} - \includegraphics[width=1\linewidth]{img/Granulometry-time-morpho-octagon.pdf} + \includegraphics[width=1\linewidth]{figures/Granulometry-time-morpho-octagon.pdf} \caption{Temps en milliseconde pour chaque fermeture. Temps total : 54~s} \label{fig:temps-morpho-octogone} \end{subfigure} @@ -446,36 +446,36 @@ La norme euclidienne en chaque point est obtenu par l'équation~\ref{eq:gradient \begin{figure}[htbp] \centering \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=1\linewidth]{img/gradient-exemple.jpg} + \includegraphics[width=1\linewidth]{figures/gradient-exemple.jpg} \end{subfigure} ~ \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=1\linewidth,interpolate=false]{img/gradient-exemple.pdf} + \includegraphics[width=1\linewidth,interpolate=false]{figures/gradient-exemple.pdf} \end{subfigure} \caption{Une cellule dont le gradient de la partie jaune est montré à droite sous la forme d'un champ de vecteurs. Les bords sont également représentés} \label{fig:gradient} \end{figure} -Afin de ne garder que les crêtes, un algorithme de suppression des non-maxima est appliqué. Celui ci est illustré par le figure~\ref{fig:non-maximum-suppression-schema} et va, pour chaque élément de la norme, le comparer à ses voisins en définissant l'orientation de l'arête du bord comme étant la tangente perpendiculaire au gradient. Pour chaque coté de l'arête, une interpolation est calculée entre les deux éléments les plus proche de la droite ayant la même direction que le gradient et passant par l'élément traité. Par exemple, par rapport à la figure~\ref{fig:non-maximum-suppression-schema}, la valeur des voisins du haut est calculée comme étant $\tau = n_1 \cdot (1 - v_x/v_y) + n_2 \cdot v_x/v_y$ et celle des voisins du bas comme étant $\upsilon = n_4 \cdot (1 - v_x/v_y) + n_3 \cdot v_x/v_y$ où $v_x$ et $v_y$ sont les composantes du gradient au point traité $e$. Si la norme de $e$ est strictement plus grande que les valeurs $\tau$ et $\upsilon$ alors celui-ci sera définit comme étant un maxima. La figure~\ref{fig:nms} montre la valeur de la norme ainsi que les maximas mis en évidence. +Afin de ne garder que les crêtes, un algorithme de suppression des non-maxima est appliqué. Celui ci est illustré par le figure~\ref{fig:non-maximum-suppression-schema} et va, pour chaque élément de la norme, le comparer à ses voisins en définissant l'orientation de l'arête du bord comme étant la droite perpendiculaire au gradient. Pour chaque coté de l'arête, une interpolation est calculée entre les deux éléments les plus proche de la droite ayant la même direction que la valeur du gradient de l'élément traité et passant par celui ci. Par exemple, par rapport à la figure~\ref{fig:non-maximum-suppression-schema}, la valeur des voisins du haut est calculée comme étant $\tau = n_1 \cdot (1 - v_x/v_y) + n_2 \cdot v_x/v_y$ et celle des voisins du bas comme étant $\upsilon = n_4 \cdot (1 - v_x/v_y) + n_3 \cdot v_x/v_y$ où $v_x$ et $v_y$ sont les composantes du gradient au point traité $e$. Si la norme de $e$ est strictement plus grande que les valeurs $\tau$ et $\upsilon$ alors celui-ci sera définit comme étant un maxima. La figure~\ref{fig:nms} montre la valeur de la norme ainsi que les maximas mis en évidence. \begin{figure}[htbp] \centering \begin{subfigure}[t]{0.35\textwidth} - \includegraphics[width=1\linewidth,interpolate=false]{img/non-maximum-suppression-schema.pdf} - \caption{Les voisins ($n_1$, $n_2$, $n_3$, $n_4$) de $e$ qui vont être utilisés pour déterminé si $e$ est un maxima} + \includegraphics[width=1\linewidth,interpolate=false]{figures/non-maximum-suppression-schema.pdf} + \caption{Les voisins ($n_1$, $n_2$, $n_3$, $n_4$) de $e$ qui vont être utilisés pour déterminer si $e$ est un maxima} \label{fig:non-maximum-suppression-schema} \end{subfigure} ~ \begin{subfigure}[t]{0.35\textwidth} - \includegraphics[width=1\linewidth,interpolate=false]{img/nms.png} - \caption{Le résultat de l'application de la suppression des non-maxima. Les maximas sont mis en évidence en blanc et la norme du gradient est montré avec des niveaux d'intensité de gris} + \includegraphics[width=1\linewidth,interpolate=false]{figures/nms.png} + \caption{Le résultat de l'application de la suppression des non-maxima. Les maximas sont mis en évidence en blanc et la norme du gradient est montrée avec des niveaux d'intensité de gris} \label{fig:nms} \end{subfigure} \caption{Suppression des non-maxima} \label{fig:non-maximum-suppression} \end{figure} -Le résultat obtenu par l'étape précédente, la suppression des non-maxima, va prendre en compte tous les bords et ceci indépendamment de la norme du gradient (inclinaison de la pente). Il est nécessaire maintenant de ne garder que les bords les plus pertinent, pour ce faire une recherche par hystérèse est appliquée en ne gardant, dans un premier temps, que les éléments dont la norme est supérieure au seuil obtenu précédemment par la méthode de Otsu majoré d'un pourcentage (par exemple 10~\%). Puis, dans un second temps, nous y ajoutons récursivement tous les éléments 8-connexes dont la norme est supérieure au seuil. +Le résultat obtenu par l'étape précédente, la suppression des non-maxima, va prendre en compte tous les bords et ceci indépendamment de la norme du gradient (inclinaison de la pente). Il est nécessaire maintenant de ne retenir que les bords les plus pertinents, pour ce faire une recherche par hystérèse est appliquée en ne gardant, dans un premier temps, que les éléments dont la norme est supérieure au seuil obtenu précédemment par la méthode de Otsu majoré d'un pourcentage (par exemple 10~\%). Puis, dans un second temps, nous y ajoutons récursivement tous les éléments 8-connexes dont la norme est supérieure au seuil. Finalement, les zones 8-connexes dont la surface est supérieure à un facteur du rayon moyen sont supprimées afin d'éliminer les bords de faible longueur qui ne correspondent, en général, pas aux bords des érythrocytes. @@ -485,57 +485,154 @@ Finalement, les zones 8-connexes dont la surface est supérieure à un facteur d L'étape précédente nous fournit une matrice de vecteurs définissant le gradient. Les éléments dont le vecteur est non-nul constituent les bords des érythrocytes. -Une méthode proche de la méthode RANSAC~\ref{} (\emph{RANdom SAmple Consensus}) est appliquée qui consiste à faire glisser une fenêtre à travers la matrice et à tirer aléatoirement, un certain nombre de fois, trois points éloignés les uns des autres. À l'aide du gradient de deux des trois point il est éventuellement possible de construire une ellipse unique. Les ellipses ainsi construites sont alors ajoutées à l'ensemble des ellipses. Une fois la matrice entièrement traversée par la fenêtre, un score est attribué à chacune des ellipses en fonction de sa proximité aux autres ellipses. Finalement, les ellipses dont le score est trop faible, ou qui se trouve trop proche d'une ellipse ayant un score plus élevé sont supprimées. +Une méthode proche de la méthode RANSAC~\ref{} (\emph{RANdom SAmple Consensus}) est appliquée qui consiste à faire glisser une fenêtre à travers la matrice et à tirer aléatoirement, un certain nombre de fois, trois points éloignés les uns des autres. À l'aide du gradient de deux des trois points il est éventuellement possible de construire une ellipse unique. Les ellipses ainsi construites sont alors ajoutées à l'ensemble des ellipses. Une fois la matrice entièrement traversée par la fenêtre, un score est attribué à chacune des ellipses en fonction de sa proximité aux autres ellipses. Finalement, les ellipses dont le score est trop faible, ou qui se trouve trop proche d'une ellipse ayant un score plus élevé sont supprimées. -La taille de la fenêtre glissante est un carré dont la longueur des cotés correspond au rayon maximum (voir section~\ref{granulometrie}). La fenêtre va balayer toute la matrice de gauche à droite et de haut en bas. Un incrément d'un quart de sa dimension a été choisi. Pour chaque position un certain nombre de tirage de triplet de points non-égaux parmi les vecteurs non-nuls est effectué, ce nombre est égal à un coefficient multipliant le nombre courant d'élément du bord. Celui ci à été ajusté comme valant 1. +La taille de la fenêtre glissante est un carré dont la longueur des cotés correspond à deux fois le rayon maximum (voir section~\ref{granulometrie}). La fenêtre va balayer toute la matrice de gauche à droite et de haut en bas. Un incrément d'un quart sa dimension a été choisi. Pour chaque position un certain nombre de tirage de triplet de points valides parmi les vecteurs non-nuls est effectué, ce nombre est égal à un coefficient multipliant le nombre courant d'élément du bord. Celui ci à été ajusté comme valant 6~\%. Un triplet valide correspond à trois points éloignés les uns des autres d'au moins une fraction du rayon moyen (par exemple la moitié) et avec lesquels il est possible de construire une ellipse dont les deux rayons se trouvent entre le rayon minimum et le rayon maximum. \begin{figure}[htbp] \centering - \includegraphics[width=0.6\linewidth]{img/construction-ellipse.pdf} - \caption{Le triplet de point $p_1$, $p_2$ et $p_3$ ainsi que les deux vecteurs du gradient $v_1$ et $v_2$ permettent possiblement la construction d'une ellipse.} + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/cellule-bords-deformes.jpg} + \end{subfigure} + ~ + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/cellule-bords-deformes-bords.png} + \end{subfigure} + \caption{Une cellule présentant un contour déformé fournit moins de triplet avec lesquels il est possible de construire une ellipse. La résultat de la recherche d'ellipse pour cette cellule est montrée au centre de la figure~\ref{fig:exemple-ellipses-4}} + \label{fig:cellule-bords-deformes} +\end{figure} + +la densité de points valides dans la fenêtre à un endroit donné dépend de la qualité des bords, ainsi, une cellule dont l'aspect s'éloigne d'une ellipse comme montré à la figure~\ref{fig:cellule-bords-deformes} produira moins de triplets valides. De ce fait il est nécessaire de fixer une limite du nombre de tirage dans le cas ou les 6~\% de triplets valides sont difficiles voir impossibles à atteindre. Cette limite est fixé à 400~\% du nombre de vecteurs non-nuls. + +\begin{figure}[htbp] + \centering + \includegraphics[width=0.5\linewidth]{figures/construction-ellipse.pdf} + \caption{Le triplet de point $p_1$, $p_2$ et $p_3$ ainsi que les deux vecteurs du gradient $v_1$ et $v_2$ permettent possiblement la construction d'une ellipse. $m_1$ et $m_2$ sont les droites perpendiculaires à $v_1$ respectivement $v_2$ et passant par les points associés} \label{fig:construction-ellipse} \end{figure} -À partir de chaque triplet de point et des deux vecteurs du gradient au deux premiers points une ellipse va tenter d'être construite comme montrer par la figure~\ref{fig:construction-ellipse}. Tout d'abord il faut s'assurer que les deux vecteurs $v_1$ et $v_2$ pointent bien dans +À partir de chaque triplet de point et des deux vecteurs du gradient des deux premiers points une ellipse va tenter d'être construite comme montrer par la figure~\ref{fig:construction-ellipse}. Tout d'abord il faut s'assurer que les deux vecteurs $v_1$ et $v_2$ pointent bien dans le bon sens, c'est à dire vers le centre de l'ellipse. Pour cela il faut vérifier que les sens de rotation de $p_1$ et $p_2$ donné par $v_1$ et $v_2$ par rapport au pivot $p_0$ soient différents et que l'angle formé entre les deux droites $d_1$ et $d_2$ soit strictement inférieur à $\pi$. La figure~\ref{fig:construction-ellipse-vecteurs-valides} illustre ces différents cas. \begin{figure}[htbp] \centering - \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=1\linewidth]{figures/ellipses/example-1-green-filtered.jpg} - \caption{} - \label{} - \end{subfigure} - ~ - \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=1\linewidth]{figures/ellipses/example-2-edges.png} - \caption{} - \label{} + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/construction-ellipse-vecteurs-valides-3.pdf} + \caption{Triplet invalide : sens contraire des vecteurs par rapport à $p_0$} + \label{fig:construction-ellipse-vecteurs-valides-3} \end{subfigure} ~ - \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=1\linewidth]{figures/ellipses/example-3-all-ellipses.jpg} - \caption{} - \label{} + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/construction-ellipse-vecteurs-valides-2.pdf} + \caption{Triplet invalide : $\alpha \geqslant \pi$} + \label{fig:construction-ellipse-vecteurs-valides-2} \end{subfigure} ~ - \begin{subfigure}[t]{0.4\textwidth} - \includegraphics[width=1\linewidth]{figures/ellipses/example-4-ellipses.jpg} - \caption{} - \label{} + \begin{subfigure}[t]{0.3\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/construction-ellipse-vecteurs-valides-1.pdf} + \caption{Triplet valide : $\alpha < \pi$} + \label{fig:construction-ellipse-vecteurs-valides-1} \end{subfigure} - \caption{} - \label{} + \caption{Cas des triplet} + \label{fig:construction-ellipse-vecteurs-valides} \end{figure} +Tout d'abord le point $p_0$ est calculé comme montré par les équations~\ref{eq:p0-debut} à~\ref{eq:p0-fin}. Si $m_1 = m_2$, alors $p_0$ est définit comme étant le point à l'infini. Si les conditions de la figure~\ref{fig:construction-ellipse-vecteurs-valides-1} sont respectées alors une conique est construite à partir des quatre points $p_0$, $p_1$, $p_2$ et $p_3$. Si cette conique est une ellipse valide alors elle est ajouté à l'ensemble des ellipses. +{\setlength{\abovedisplayskip}{0pt} +\begin{flalign} + \label{eq:p0-debut} + m_1 &= -v_{1_x} / v_{1_y} \\ + m_2 &= -v_{2_x} / v_{2_y} \\ + b_1 &= -m_1 p_{1_x} + p_{1_y} \\ + b_2 &= -m_2 p_{2_x} + p_{2_y} \\ + d_1(x) &= y = m_1 x + b_1 \\ + d_2(x) &= y = m_2 x + b_2 \\ + p_{0_x} &= -(b_1 - b_2) / (m_1 - m_2) \\ + p_{0_y} &= -(m_2 * b_1 - m_1 * b_2) / (m_1 - m_2) \label{eq:p0-fin} +\end{flalign} -% RANSAC + scoring + pruning +La construction d'une ellipse est décrite si après. Dans le repère projectif $\{\upsilon_0, \upsilon_1, \upsilon_2, \upsilon_3\}$ lié à la conique où $\upsilon_0 = \begin{pmatrix}1 & p_{0_x} & p_{0_y}\end{pmatrix}, \; \upsilon_1 = \begin{pmatrix}1 & p_{1_x} & p_{1_y}\end{pmatrix}, \; \upsilon_2 = \begin{pmatrix}1 & p_{2_x} & p_{2_y}\end{pmatrix}, \; \upsilon_3 = \begin{pmatrix}1 & p_{3_x} & p_{3_y}\end{pmatrix}$. Si $p_0$ est à l'infini alors $\upsilon_0 = \begin{pmatrix}0 & * & *\end{pmatrix}$. L'équation de la conique est la suivante : + +{\setlength{\abovedisplayskip}{0pt} +\begin{flalign} + T^2 &= X Y \\ + S &= \begin{pmatrix}1 & 0 & 0 \\ 0 & 0 & -1/2 \\ 0 & -1/2 & 0\end{pmatrix} +\end{flalign} + +Changement de repère projectif par la matrice de passage $P$ ($3 \times 3$) : + +{\setlength{\abovedisplayskip}{0pt} +\begin{flalign} + P &= \begin{pmatrix} + det(\upsilon_3, \upsilon_1, \upsilon_2) \, \upsilon_0 \\ + det(\upsilon_0, \upsilon_3, \upsilon_2) \, \upsilon_1 \\ + det(\upsilon_0, \upsilon_1, \upsilon_3) \, \upsilon_2 + \end{pmatrix} +\end{flalign} + +Matrice de la conique dans le repère projectif de référence : + +{\setlength{\abovedisplayskip}{0pt} +\begin{flalign} + \begin{pmatrix} A & B & D \\ B & C & E \\ D & E & F\end{pmatrix} &= P \cdot S^{-1} \cdot P^\top +\end{flalign} + +Le centre est définit comme suit : + +{\setlength{\abovedisplayskip}{0pt} +\begin{flalign} + (\alpha, \; \beta) = (B/A, \; D/A) +\end{flalign} + +Les tailles des deux rayons son données par $1/\sqrt{\lambda}$ et $1/\sqrt{\mu}$ où $\lambda$ et $\mu$ sont les valeurs propres de la matrice $Q$. Les vecteurs propres de $Q$ donnent les directions des deux axes de l'ellipse. La matrice $Q$ est calculé comme suit : + +{\setlength{\abovedisplayskip}{0pt} +\begin{flalign} + Ã &= E^2 - C F + (B F - E D) \alpha + (C D - B E) \beta \\ + Q &= Ã^{-1} \begin{pmatrix}A F - D^2 & B D - A E \\ + B D - A E & A C - B^2\end{pmatrix} +\end{flalign} + + +\subsubsection{Calcul du score des ellipses} + +% Détailler le calcul du nombre de pick (valid + max) \subsubsection{Élagage des ellipses} % suppression uniquement +\begin{figure}[htbp] + \centering + \begin{subfigure}[t]{0.4\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/exemple-1-green-filtered.jpg} + \caption{Image initiale pour la recherche d'ellipses. Composante verte flouté dont le centre clair des érythrocytes a été ouvert} + \label{fig:exemple-ellipses-1} + \end{subfigure} + ~ + \begin{subfigure}[t]{0.4\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/exemple-2-edges.png} + \caption{Bords des cellules : éléments pour lesquels le gradient est non-null} + \label{fig:exemple-ellipses-2} + \end{subfigure} + ~ + \begin{subfigure}[t]{0.4\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/exemple-3-all-ellipses.jpg} + \caption{L'ensemble des ellipses accumulées dessiné sur l'image initiale} + \label{fig:exemple-ellipses-3} + \end{subfigure} + ~ + \begin{subfigure}[t]{0.4\textwidth} + \includegraphics[width=1\linewidth]{figures/ellipses/exemple-4-ellipses.jpg} + \caption{Le résultat final après élagage, il est a noter certaines ellipses } + \label{fig:exemple-ellipses-4} + \end{subfigure} + \caption{Aperçu du processus de recherche d'érythrocytes par ajustement d'ellipses. Le gradient n'est pas représenté} + \label{fig:exemple-ellipses} +\end{figure} + + \subsection{Segmentation des parasites} \subsubsection{Extraction des zones colorées sombres}