Skip to content
Snippets Groups Projects
Commit 40f463b7 authored by even's avatar even
Browse files

Article: all figures with gradient 33

parent de5c9cf0
No related branches found
No related tags found
No related merge requests found
...@@ -70,8 +70,8 @@ $D$ the set of all the detected blurred segments.} ...@@ -70,8 +70,8 @@ $D$ the set of all the detected blurred segments.}
\begin{tabular}{ \begin{tabular}{
c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}} c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}}
\includegraphics[width=0.32\textwidth]{Fig_method/parpaings.png} & \includegraphics[width=0.32\textwidth]{Fig_method/parpaings.png} &
\includegraphics[width=0.32\textwidth]{Fig_hard/hardOld.png} & \includegraphics[width=0.32\textwidth]{Expe_hard/hardOld.png} &
\includegraphics[width=0.32\textwidth]{Fig_hard/hardNew.png} \includegraphics[width=0.32\textwidth]{Expe_hard/hardNew.png}
\begin{picture}(1,1) \begin{picture}(1,1)
{\color{dwhite}{ {\color{dwhite}{
\put(-286,4.5){\circle*{8}} \put(-286,4.5){\circle*{8}}
......
...@@ -15,30 +15,30 @@ data base. ...@@ -15,30 +15,30 @@ data base.
%\center %\center
\begin{tabular}{ \begin{tabular}{
c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}} c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}c@{\hspace{0.1cm}}}
\includegraphics[width=0.32\textwidth]{Fig_auto/buro.png} & \includegraphics[width=0.32\textwidth]{Expe_auto/buro.png} &
\includegraphics[width=0.32\textwidth]{Fig_auto/autoOld.png} & \includegraphics[width=0.32\textwidth]{Expe_auto/bsOld.png} &
\includegraphics[width=0.32\textwidth]{Fig_auto/autoNew.png} \\ \includegraphics[width=0.32\textwidth]{Expe_auto/bsNew.png} \\
& \includegraphics[width=0.22\textwidth]{Fig_auto/dssDetailOld.png} & & \includegraphics[width=0.22\textwidth]{Expe_auto/dssDetailOld.png} &
\includegraphics[width=0.22\textwidth]{Fig_auto/dssDetailNew.png} \includegraphics[width=0.22\textwidth]{Expe_auto/dssDetailNew.png}
\begin{picture}(1,1) \begin{picture}(1,1)
{\color{red}{ {\color{red}{
\put(-21.5,38){\framebox(18,8)} \put(-19.5,31){\framebox(28,9)}
\put(-12.5,38){\vector(-2,-1){25}} \put(-5.5,31){\vector(-2,-1){20}}
\put(-135.5,38){\framebox(18,8)} \put(-133.5,31){\framebox(28,9)}
\put(-124.5,38){\vector(-2,-1){25}} \put(-117.5,31){\vector(-2,-1){20}}
}} }}
{\color{dwhite}{ {\color{dwhite}{
\put(-287,37.5){\circle*{8}} \put(-291,32.5){\circle*{8}}
\put(-172,37.5){\circle*{8}} \put(-177,32.5){\circle*{8}}
\put(-59,37.5){\circle*{8}} \put(-63,32.5){\circle*{8}}
\put(-186,5.5){\circle*{8}} \put(-188,4.5){\circle*{8}}
\put(-73,5.5){\circle*{8}} \put(-75,4.5){\circle*{8}}
}} }}
\put(-289.5,35){a} \put(-293.5,30){a}
\put(-174.5,35){b} \put(-179.5,30){b}
\put(-61.5,35){c} \put(-65.5,30){c}
\put(-189,3){d} \put(-191,2){d}
\put(-75.5,3){e} \put(-77.5,2){e}
\end{picture} \end{picture}
\end{tabular} \end{tabular}
\caption{Automatic detection on standard images: \caption{Automatic detection on standard images:
...@@ -49,7 +49,7 @@ data base. ...@@ -49,7 +49,7 @@ data base.
\end{figure} \end{figure}
\begin{table} \begin{table}
\centering \centering
\input{Fig_auto/perfTable} \input{Expe_auto/perfTable}
\caption{Measured performance of both detectors on standard images. \caption{Measured performance of both detectors on standard images.
$M_{old}$ (resp. $M_{new}$) denotes the measure obtained with $M_{old}$ (resp. $M_{new}$) denotes the measure obtained with
the previous (resp. new) detector.} the previous (resp. new) detector.}
......
...@@ -175,16 +175,16 @@ the two opposite edges of a thin straight object. ...@@ -175,16 +175,16 @@ the two opposite edges of a thin straight object.
\begin{figure}[h] \begin{figure}[h]
\center \center
\begin{tabular}{c@{\hspace{0.2cm}}c} \begin{tabular}{c@{\hspace{0.2cm}}c}
\includegraphics[width=0.38\textwidth]{Fig_method/briques1_zoom.png} & \includegraphics[width=0.4\textwidth]{Fig_method/selectLine_zoom.png} &
\includegraphics[width=0.38\textwidth]{Fig_method/briques2_zoom.png} \includegraphics[width=0.4\textwidth]{Fig_method/selectEdges_zoom.png}
\end{tabular} \end{tabular}
\begin{picture}(1,1)(0,0) \begin{picture}(1,1)(0,0)
{\color{dwhite}{ {\color{dwhite}{
\put(-240,-12.5){\circle*{8}} \put(-220,-14.5){\circle*{8}}
\put(-102,-12.5){\circle*{8}} \put(-74,-14.5){\circle*{8}}
}} }}
\put(-242.5,-15){a} \put(-222.5,-17){a}
\put(-104.5,-15){b} \put(-76.5,-17){b}
\end{picture} \end{picture}
\caption{Blurred segments obtained in \textit{line} or \textit{edge \caption{Blurred segments obtained in \textit{line} or \textit{edge
selection mode} as a result of the gradient direction filtering selection mode} as a result of the gradient direction filtering
......
...@@ -45,6 +45,7 @@ BSDetectionWidget::BSDetectionWidget (QWidget *parent) ...@@ -45,6 +45,7 @@ BSDetectionWidget::BSDetectionWidget (QWidget *parent)
// Sets display parameters // Sets display parameters
darkHighlightOn = false; darkHighlightOn = false;
arlequinOn = true;
selectionColor = Qt::red; selectionColor = Qt::red;
bsColor = Qt::blue; bsColor = Qt::blue;
bsHighColor = Qt::yellow; bsHighColor = Qt::yellow;
...@@ -307,6 +308,12 @@ void BSDetectionWidget::switchHighlightColors () ...@@ -307,6 +308,12 @@ void BSDetectionWidget::switchHighlightColors ()
} }
void BSDetectionWidget::switchArlequin ()
{
arlequinOn = ! arlequinOn;
}
void BSDetectionWidget::mousePressEvent (QMouseEvent *event) void BSDetectionWidget::mousePressEvent (QMouseEvent *event)
{ {
oldp1.set (p1); oldp1.set (p1);
...@@ -775,6 +782,11 @@ void BSDetectionWidget::keyPressEvent (QKeyEvent *event) ...@@ -775,6 +782,11 @@ void BSDetectionWidget::keyPressEvent (QKeyEvent *event)
displayDetectionResult (); displayDetectionResult ();
break; break;
case Qt::Key_Equal :
switchArlequin ();
displayDetectionResult ();
break;
case Qt::Key_Asterisk : case Qt::Key_Asterisk :
switchStats (); switchStats ();
displayDetectionResult (); displayDetectionResult ();
...@@ -923,6 +935,39 @@ void BSDetectionWidget::drawBlurredSegment (QPainter &painter, ...@@ -923,6 +935,39 @@ void BSDetectionWidget::drawBlurredSegment (QPainter &painter,
} }
void BSDetectionWidget::drawArlequinSegment (QPainter &painter,
BlurredSegment *bs)
{
if (bs != NULL)
{
if (bsBoundsVisible)
{
vector<Pt2i> bnd;
DigitalStraightSegment *dss = bs->getSegment ();
if (dss != NULL)
{
dss->getBounds (bnd, 0, 0, width, height);
drawPoints (painter, bnd, boundHighColor);
}
}
if (bsPointsVisible)
{
bool nok = true;
int red, green, blue;
while (nok)
{
red = rand () % 256;
green = rand () % 256;
blue = rand () % 256;
nok = (darkHighlightOn && (red + green + blue) > 300)
|| (! darkHighlightOn && (red + green + blue) < 300);
}
drawPoints (painter, bs->getAllPoints (), QColor (red, green, blue));
}
}
}
void BSDetectionWidget::incBlackLevel (int val) void BSDetectionWidget::incBlackLevel (int val)
{ {
blevel += val * 5; blevel += val * 5;
...@@ -1003,6 +1048,7 @@ void BSDetectionWidget::displayDetectionResult () ...@@ -1003,6 +1048,7 @@ void BSDetectionWidget::displayDetectionResult ()
// cout << bss.size () << " blurred segments detected" << endl; // cout << bss.size () << " blurred segments detected" << endl;
// double bsw = 0.; // double bsw = 0.;
// int bsc = 0; // int bsc = 0;
if (arlequinOn && detector.getMaxDetections () == 0) srand (time (NULL));
vector<BlurredSegment *>::const_iterator it = bss.begin (); vector<BlurredSegment *>::const_iterator it = bss.begin ();
while (it != bss.end ()) while (it != bss.end ())
{ {
...@@ -1013,8 +1059,11 @@ void BSDetectionWidget::displayDetectionResult () ...@@ -1013,8 +1059,11 @@ void BSDetectionWidget::displayDetectionResult ()
// if (dss == NULL) cout << "DSS null" << endl; // if (dss == NULL) cout << "DSS null" << endl;
// else bsw += dss->width () / (double) dss->period (); // else bsw += dss->width () / (double) dss->period ();
// } // }
drawBlurredSegment (painter, *it, detector.getMaxDetections () == 0 if (arlequinOn && detector.getMaxDetections () == 0)
|| *it == bss.back ()); drawArlequinSegment (painter, *it);
else
drawBlurredSegment (painter, *it, detector.getMaxDetections () == 0
|| *it == bss.back ());
it++; it++;
} }
// cout << bsc << " effective blurred segments" << endl; // cout << bsc << " effective blurred segments" << endl;
...@@ -1470,7 +1519,7 @@ QSize BSDetectionWidget::setRandomImage (int type) ...@@ -1470,7 +1519,7 @@ QSize BSDetectionWidget::setRandomImage (int type)
AbsRat biasVal (7, 5); AbsRat biasVal (7, 5);
bool dispEach = false; bool dispEach = false;
bool dispLast = false; bool dispLast = false;
int nbruns = 1000; int nbruns = 100;
int nbIniPts[nbruns]; int nbIniPts[nbruns];
int oldTrials[nbruns]; int oldTrials[nbruns];
int newTrials[nbruns]; int newTrials[nbruns];
......
...@@ -130,6 +130,11 @@ void createMap (QString name, bool *tofind, bool *found, int iw, int ih); ...@@ -130,6 +130,11 @@ void createMap (QString name, bool *tofind, bool *found, int iw, int ih);
*/ */
void switchHighlightColors (); void switchHighlightColors ();
/**
* \brief Switches the random color display modality.
*/
void switchArlequin ();
/** /**
* \brief Switches the extraction stats display on or off. * \brief Switches the extraction stats display on or off.
*/ */
...@@ -227,6 +232,8 @@ private: ...@@ -227,6 +232,8 @@ private:
/** Kind of highlight colors. */ /** Kind of highlight colors. */
bool darkHighlightOn; bool darkHighlightOn;
/** Random color selection modality. */
bool arlequinOn;
/** Color of user selections. */ /** Color of user selections. */
QColor selectionColor; QColor selectionColor;
/** Color of blurred segments. */ /** Color of blurred segments. */
...@@ -333,6 +340,13 @@ private: ...@@ -333,6 +340,13 @@ private:
void drawBlurredSegment (QPainter &painter, void drawBlurredSegment (QPainter &painter,
BlurredSegment *bs, bool high = true); BlurredSegment *bs, bool high = true);
/**
* \brief Draws a blurred segment with a random color.
* @param painter Drawing device.
* @param bs Reference to the blurred segment to be drawn.
*/
void drawArlequinSegment (QPainter &painter, BlurredSegment *bs);
/** /**
* \brief Returns the background black level. * \brief Returns the background black level.
*/ */
......
...@@ -15,7 +15,7 @@ const int VMap::TYPE_FULL_BLACK_HAT = 6; ...@@ -15,7 +15,7 @@ const int VMap::TYPE_FULL_BLACK_HAT = 6;
const int VMap::TYPE_FULL_MORPHO = 7; const int VMap::TYPE_FULL_MORPHO = 7;
const int VMap::NEAR_SQ_ANGLE = 80; // 80% (roughly 25 degrees) const int VMap::NEAR_SQ_ANGLE = 80; // 80% (roughly 25 degrees)
const int VMap::DEFAULT_GRADIENT_THRESHOLD = 30; const int VMap::DEFAULT_GRADIENT_THRESHOLD = 33;
const int VMap::DEFAULT_GRADIENT_RESOLUTION = 100; const int VMap::DEFAULT_GRADIENT_RESOLUTION = 100;
const int VMap::MAX_BOWL = 20; const int VMap::MAX_BOWL = 20;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
\begin{picture}(150,170)(0,0) \begin{picture}(150,170)(0,0)
\put(40,0){\framebox(70,10){FILTRAGE}} \put(40,0){\framebox(70,10){FILTRAGE}}
\put(75,20){\vector(0,-1){10}} \put(75,20){\vector(0,-1){10}}
\put(40,20){\framebox(70,10){TEST DE CONNEXITE}} \put(40,20){\framebox(70,10){TEST DE SORTIE}}
\put(75,40){\vector(0,-1){10}} \put(75,40){\vector(0,-1){10}}
\thicklines \thicklines
\put(40,40){\framebox(70,10){\bf \large SUIVI FIN}} \put(40,40){\framebox(70,10){\bf \large SUIVI FIN}}
...@@ -28,11 +28,11 @@ ...@@ -28,11 +28,11 @@
\put(75,60){\vector(0,-1){10}} \put(75,60){\vector(0,-1){10}}
\put(40,60){\framebox(70,10){RECENTRAGE}} \put(40,60){\framebox(70,10){RECENTRAGE}}
\put(75,80){\vector(0,-1){10}} \put(75,80){\vector(0,-1){10}}
\put(40,80){\framebox(70,10){TEST D'ORIENTATION}} \put(40,80){\framebox(70,10){TESTS AVAL DU PRE-FILTRAGE}}
\put(75,100){\vector(0,-1){10}} \put(75,100){\vector(0,-1){10}}
\put(40,100){\framebox(70,10){PRE-FILTRAGE}} \put(40,100){\framebox(70,10){PRE-FILTRAGE}}
\put(75,120){\vector(0,-1){10}} \put(75,120){\vector(0,-1){10}}
\put(40,120){\framebox(70,10){TEST DE DENSITE}} \put(40,120){\framebox(70,10){TESTS AMONT DU PRE-FILTRAGE}}
\put(75,140){\vector(0,-1){10}} \put(75,140){\vector(0,-1){10}}
\thicklines \thicklines
\put(40,140){\framebox(70,10){\bf \large SUIVI RAPIDE}} \put(40,140){\framebox(70,10){\bf \large SUIVI RAPIDE}}
...@@ -102,20 +102,27 @@ dernier pixel ins\'er\'e (initialement 4 pixels, actuellement remont\'e ...@@ -102,20 +102,27 @@ dernier pixel ins\'er\'e (initialement 4 pixels, actuellement remont\'e
\`a 10 pixels). Ce test est par d\'efaut d\'esactiv\'e. \`a 10 pixels). Ce test est par d\'efaut d\'esactiv\'e.
\item Aucun test angulaire. \item Aucun test angulaire.
\item Tol\'erance aux interruptions : 5 pixels. \item Tol\'erance aux interruptions : 5 pixels.
\item Seuil de gradient : 30.
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
\subsection*{Test de densit\'e} \subsection*{Tests amont du pr\'e-filtrage}
\begin{enumerate}
\item Test de longueur :
\begin{itemize} \begin{itemize}
\item Etat par d\'efaut : activ\'e. \item Toujours activ\'e
\item Fonctionnement : \item V\'erifie que le nombre de points du SF est sup\'erieur \`a
\begin{itemize} {\tt bsMinSize}
\item V\'erifie que l'\'etendue du segment (\'ecart entre les barres des \item Valeur par d\'efaut : 3 (modifiable)
points extr\^emes) est inf\'erieure \`a la moiti\'e du nombre de points
constituant le segment.
\end{itemize} \end{itemize}
\item Test de densit\'e :
\item V\'erifie que le nombre de points du SF est au moins 2 fois
l'\'etendue du segments ($\#BS > (1 + d (P_{left}P_{right})) / 2$)
\begin{itemize}
\item Activ\'e par d\'efaut (d\'esactivable)
\end{itemize} \end{itemize}
\end{enumerate}
\subsection*{Pr\'e-filtrage} \subsection*{Pr\'e-filtrage}
...@@ -128,16 +135,23 @@ isol\'es \`a l'\'ecart du segment. ...@@ -128,16 +135,23 @@ isol\'es \`a l'\'ecart du segment.
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
\subsection*{Test d'orientation} \subsection*{Tests aval du pr\'efiltrage}
\begin{enumerate}
\item Test de longueur :
\begin{itemize} \begin{itemize}
\item Etat par d\'efaut : activ\'e. \item Toujours activ\'e
\item Fonctionnement : \item V\'erifie que le nombre de points du SF est sup\'erieur \`a
\begin{itemize} {\tt bsMinSize}
\item V\'erifie que l'orientation du segment n'est pas trop proche de \item Valeur par d\'efaut : 3 (modifiable)
celle de la barre de balayage $P_1P_2$ ($30^o$).
\end{itemize} \end{itemize}
\item Test d'orientation
V\'erifie que l'orientation du segment n'est pas trop proche de
celle de la barre de balayage $P_1P_2$ ($angle (BS,P_1P_2) > 30^o$).
\begin{itemize}
\item Toujours activ\'e
\end{itemize} \end{itemize}
\end{enumerate}
\subsection*{Recentrage} \subsection*{Recentrage}
...@@ -154,7 +168,11 @@ celle de la barre de balayage $P_1P_2$ ($30^o$). ...@@ -154,7 +168,11 @@ celle de la barre de balayage $P_1P_2$ ($30^o$).
\item $\epsilon _c$ : Consigne d'\'epaisseur pour le segment flou. \item $\epsilon _c$ : Consigne d'\'epaisseur pour le segment flou.
\item $V_{ref}$ : Direction de r\'ef\'erence pour le gradient. \item $V_{ref}$ : Direction de r\'ef\'erence pour le gradient.
\end{itemize} \end{itemize}
\item Modalit\'e par d\'efaut : asservissement de l'\'epaisseur activ\'e. \item Modalit\'es par d\'efaut :
\begin{itemize}
\item alignement activ\'e (d\'esactivable).
\item asservissement de l'\'epaisseur d\'esactiv\'e (activable).
\end{itemize}
\item Fonctionnement : \item Fonctionnement :
\begin{itemize} \begin{itemize}
\item Recalcule un point central, une direction de balayage et une \item Recalcule un point central, une direction de balayage et une
...@@ -162,10 +180,21 @@ celle de la barre de balayage $P_1P_2$ ($30^o$). ...@@ -162,10 +180,21 @@ celle de la barre de balayage $P_1P_2$ ($30^o$).
\item La direction de r\'ef\'erence pour le gradient est mesur\'ee au point \item La direction de r\'ef\'erence pour le gradient est mesur\'ee au point
de d\'epart du segment flou initial. de d\'epart du segment flou initial.
\item La nouvelle direction de balayage est le vecteur support du segment flou. \item La nouvelle direction de balayage est le vecteur support du segment flou.
\item La largeur de balayage est deux fois l'\'epaisseur de consigne.
\item Avec alignement :
\begin{itemize}
\item Recalcule un point central \`a l'intersection de la m\'ediane du segment
flou et de la barre $P_1P_2$.
\end{itemize}
\item Sans alignement :
\begin{itemize}
\item Laisse comme point central le point de d\'epart du segment flou.
\end{itemize}
\item Sans asservissement de l'\'epaisseur : \item Sans asservissement de l'\'epaisseur :
\begin{itemize} \begin{itemize}
\item le point de d\'epart est le point central du segment flou, \item le point de d\'epart est le point central du segment flou,
\item l'\'epaisseur de consigne est fix\'ee (5 pixels), \item l'\'epaisseur de consigne est fix\'ee (valeur par d\'efaut : 3 pixels,
modifiable),
\item la largeur de balayage est 4 fois l'\'epaisseur de consigne. \item la largeur de balayage est 4 fois l'\'epaisseur de consigne.
\end{itemize} \end{itemize}
\item Avec asservissement de l'\'epaisseur : \item Avec asservissement de l'\'epaisseur :
...@@ -173,8 +202,7 @@ de d\'epart du segment flou initial. ...@@ -173,8 +202,7 @@ de d\'epart du segment flou initial.
\item le point de d\'epart est l'intersection entre la barre de balayage \item le point de d\'epart est l'intersection entre la barre de balayage
initiale et la m\'ediane du segment, initiale et la m\'ediane du segment,
\item l'\'epaisseur de consigne est l'\'epaisseur du segment flou initial \item l'\'epaisseur de consigne est l'\'epaisseur du segment flou initial
avec un minimum de 8 pixels, plus un pixel.
\item la largeur de balayage est l'\'epaisseur de consigne.
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
...@@ -202,6 +230,7 @@ un segment flou \`a partir des sommets de gradients, correctement orient\'es ...@@ -202,6 +230,7 @@ un segment flou \`a partir des sommets de gradients, correctement orient\'es
d\'ecroissantes, trouv\'es dans la barre. d\'ecroissantes, trouv\'es dans la barre.
\item Aucun test de voisinage. \item Aucun test de voisinage.
\item Tol\'erance aux interruptions : 5 pixels. \item Tol\'erance aux interruptions : 5 pixels.
\item Seuil de gradient : 30.
\item Amincissement progressif (d\'esactiv\'e par d\'efaut) : \item Amincissement progressif (d\'esactiv\'e par d\'efaut) :
\`a partir de 20 balayages, la consigne d'\'epaisseur est r\'eduite de 2\% \`a partir de 20 balayages, la consigne d'\'epaisseur est r\'eduite de 2\%
\`a chaque balayage jusqu'\`a atteindre une valeur minimale de 150\% de \`a chaque balayage jusqu'\`a atteindre une valeur minimale de 150\% de
...@@ -213,14 +242,45 @@ largeur minimale du segment flou, la consigne d'\'epaisseur est fix\'ee ...@@ -213,14 +242,45 @@ largeur minimale du segment flou, la consigne d'\'epaisseur est fix\'ee
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
\subsection*{Test de connexit\'e} \subsection*{Tests de sortie}
\begin{enumerate}
\item Test de longueur :
\begin{itemize}
\item Toujours activ\'e
\item V\'erifie que le nombre de points du SF est sup\'erieur \`a
{\tt bsMinSize}
\item Valeur par d\'efaut : 3 (modifiable)
\end{itemize}
\item Test de densit\'e :
\item V\'erifie que le nombre de points est sup\'erieur \`a 3 fois
l'\'epaisseur arithm\'etique du segment.
\begin{itemize}
\item D\'esactiv\'e par d\'efaut (activable)
\end{itemize}
\item Test de nettet\'e des petits segments :
\item V\'erifie que l'\'etendue du segment ($1 + d (P_{left}P_{right})$)
est sup\'erieure \`a 20 pixels ou bien que le nombre de points du segment
est sup\'erieur \`a 4/5 fois l'\'etendue (on accepte les petits segments
s'ils sont bien remplis).
\begin{itemize}
\item D\'esactiv\'e par d\'efaut (activable)
\end{itemize}
\item Test de remplissage :
\item V\'erifie qu'au moins la moiti\'e des points appartiennent \`a une
courbe connexe d'au moins {\tt ccMinSize} pixels.
\begin{itemize}
\item D\'esactiv\'e par d\'efaut (activable)
\item Valeur par d\'efaut de {\tt ccMinSize} : 5 (modifiable)
\end{itemize}
\end{enumerate}
\begin{itemize} \begin{itemize}
\item Etat par d\'efaut : activ\'e. \item Etat par d\'efaut : activ\'e.
\item Fonctionnement : \item Fonctionnement :
\begin{itemize} \begin{itemize}
\item V\'erifie qu'au moins la moiti\'e des pixels du segment flou forment \item V\'erifie qu'au moins la moiti\'e des pixels du segment flou forment
des composantes connexes de taille sup\'erieure \`a 5 pixels. des composantes 8-connexes de taille sup\'erieure \`a 5 pixels.
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
...@@ -235,14 +295,4 @@ isol\'es \`a l'\'ecart du segment. ...@@ -235,14 +295,4 @@ isol\'es \`a l'\'ecart du segment.
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
\subsection*{Epaisseurs consid\'er\'ees}
Les \'epaisseurs de segments d\'efinies sont la plus petite valeur de
l'\'epaisseur verticale ou de l'\'epaisseur horizontale.
Les droites discr\`etes \'etant d\'efinies par
$c \leq ax + by < c + \nu$, cette \'epaisseur se d\'efinit par
$\epsilon = \nu / max (|a|, |b|)$.
C'est aussi la plus petite valeur des \'epaisseurs des paires antipodales.
A ne pas confondre avec la largeur des barres de balayage ({\it scans}).
\end{document} \end{document}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment