Skip to content
Snippets Groups Projects
method.tex 9.35 KiB
Newer Older
even's avatar
even committed
\section{The detection method}

even's avatar
even committed
\label{sec:method}

even's avatar
even committed
\subsection{Workflow of the detection process}

even's avatar
even committed
The workflow of the blurred segment detection process is summerized
even's avatar
even committed
in the following figure.

even's avatar
even committed
\begin{figure}[h]
\center
  \begin{picture}(340,34)(0,-4)
    %\put(0,-2.5){\framebox(340,35)}
    \put(-2,18){\scriptsize $(A,B)$}
    \put(-2,15){\vector(1,0){24}}
    \put(24,0){\framebox(56,30)}
even's avatar
even committed
    \put(24,16){\makebox(56,10){Initial}}
    \put(24,4){\makebox(56,10){detection}}
even's avatar
even committed
    \put(86,18){\scriptsize $\mathcal{B}_{1}$}
even's avatar
even committed
    \put(80,15){\vector(1,0){22}}
    %\put(102,0){\framebox(56,30)}
    \multiput(102,15)(28,9){2}{\line(3,-1){28}}
    \multiput(102,15)(28,-9){2}{\line(3,1){28}}
    \put(100,0){\makebox(60,30){Valid ?}}
even's avatar
even committed
    \put(133,-2){\scriptsize $\emptyset$}
even's avatar
even committed
    \put(130,6){\vector(0,-1){10}}
    \put(159,18){\scriptsize $(C,\vec{D})$}
    \put(158,15){\vector(1,0){28}}
    \put(186,0){\framebox(56,30)}
even's avatar
even committed
    \put(186,16){\makebox(56,10){Fine}}
    \put(186,4){\makebox(60,10){tracking}}
even's avatar
even committed
    \put(250,18){\scriptsize $\mathcal{B}_2$}
even's avatar
even committed
    \put(242,15){\vector(1,0){24}}
    \put(266,0){\framebox(56,30){Filtering}}
even's avatar
even committed
    \put(330,18){\scriptsize $\mathcal{B}_3$}
even's avatar
even committed
    \put(322,15){\vector(1,0){22}}
  \end{picture}
even's avatar
even committed
  \caption{The detection process main workflow.}
even's avatar
even committed
  \label{fig:workflow}
\end{figure}
even's avatar
even committed

even's avatar
even committed
The initial detection consists in building and extending a blurred segment
$\mathcal{B}_1$ based on the highest gradient points found in each scan
of a static directional scanner based on an input segment $AB$.
even's avatar
even committed

even's avatar
even committed
Validity tests based on the length or sparsity of $\mathcal{B}_1$ are
applied to decide of the detection poursuit. In case of positive response,
the position $C$ and direction $\vec{D}$ of this initial blurred segment
are extracted.
even's avatar
even committed

even's avatar
even committed
The fine tracking step consists on building and extending a blurred segment
even's avatar
even committed
$\mathcal{B}_2$ based on points that correspond to local maxima of the
image gradient, ranked by magnitude order, and with gradient direction
close to a reference gradient direction at the segment first point.
even's avatar
even committed
This step uses an adaptive directional scanner based on the found
position $C$ direction $\vec{D}$ in order to extends the segment in the
appropriate direction.
After $N$ points are added without any augmentation of the segment minimal
width, this width becomes the new assigned width so that the segment
can not thicken any more. This procedure allows to control the blurred
segment width based on the observation of its evolution in the vicinity
of the input stroke.
Setting $N=20$ shows a good behaviour on tested images.
even's avatar
even committed

The fine track output segment is finally filtered to remove artifacts
even's avatar
even committed
and outliers, and a solution blurred segment $\mathcal{B}_3$ is provided.

even's avatar
even committed
\subsection{Supervised blurred segment detection}

In supervised context, the user draws an input stroke across the specific
edge he wants to extract from the image.
The detection method previously described is continuously run during mouse
dragging and the output blurred segment is displayed on-the-fly.

The method is very sensitive to the local conditions of the initial detection
so that the output blurred segment may be quite unstable.
In order to temper this undesirable behaviour for particular applications,
the initial detection can be optionally run twice, the second fast scan being
aligned on the first detection output.
This strategy provides a first quick analysis of the local context before
extracting the segment and contributes to notably stabilize the overall
process.

Another option, called multi-detection allows the detection of all the
segments crossed by the input stroke $AB$.
The multi-detection algorithm is displayed below.
First the positions $M_j$ of the local maxima of the gradient magnitude found
under the stroke are sorted from the highest to the lowest.
For each of them the main detection process is run with three modifications:
i) the initial detection takes $M_j$ and the orthogonal direction $AB_\perp$
to the stroke as input to build a static scan of fixed width
$\varepsilon_{ini}$, and $M_j$ is used as start point of the blurred segment;
ii) a occupancy mask, initially empty, is filled in with the points of the
detected blurred segments $\mathcal{B}_{j3}$ at the end of each successful
detection;
iii) points marked as occupied are rejected when selecting candidates for the
blurred selegment extension in the fine tracking step.

\input{Fig_method/algoMulti}

Beyond the possible detection of a large set of edges at once, the
multi-detection allows the detection of some unaccessible edges in
classical single detection mode. This is particularly the case of edges
that are quite close to a more salient edge with a higher gradient.
The multi-detection detects both edges and the user may then select
the awaited one.
even's avatar
even committed

even's avatar
even committed
\begin{figure}[h]
\center
  \begin{tabular}{c@{\hspace{0.2cm}}c@{\hspace{0.2cm}}c@{\hspace{0.2cm}}c}
    \includegraphics[width=0.22\textwidth]{Fig_method/voisinImage_zoom.png} &
    \includegraphics[width=0.22\textwidth]{Fig_method/voisinGrad_zoom.png} &
    \includegraphics[width=0.22\textwidth]{Fig_method/voisinSingle_zoom.png} &
    \includegraphics[width=0.22\textwidth]{Fig_method/voisinMulti_zoom.png} \\
    \parbox{0.22\textwidth}{\centering{\scriptsize{a)}}} &
    \parbox{0.22\textwidth}{\centering{\scriptsize{b)}}} &
    \parbox{0.22\textwidth}{\centering{\scriptsize{c)}}} &
    \parbox{0.22\textwidth}{\centering{\scriptsize{d)}}}
  \end{tabular}
  \caption{Example of edge, detected only in multi-detection mode:
    a) the stroke on the intensity image,
    b) the gradient map,
    c) the result of the classical single mode detection,
    d) the result of the multi-detection. }
  \label{fig:voisins}
\end{figure}

even's avatar
even committed
This detection procedure can be used to detect as well straight edges
even's avatar
even committed
as thin straight objects. In the first case, the gradient vectors of all
edge points are assumed to be oriented in the same direction. But if the
sign of the gradient direction is not considered, points with gradient in
opposite directions are merged to build the same blurred segment, allowing
the detection of both edges of a thin linear structure, like for instance
even's avatar
even committed
the tile joins of \RefFig{fig:edgeDir}.
even's avatar
even committed

\begin{figure}[h]
\center
  \begin{tabular}{c@{\hspace{0.2cm}}c}
    \includegraphics[width=0.46\textwidth]{Fig_method/multiStroke_zoom.png} &
    \includegraphics[width=0.46\textwidth]{Fig_method/multiEdge_zoom.png} \\
    \parbox{0.46\textwidth}{\centering{\scriptsize{a)
            Detection of straight lines}}} &
    \parbox{0.46\textwidth}{\centering{\scriptsize{b)
            Detection of straight edges}}}
  \end{tabular}
  \caption{Testing the gradient direction to detect as well edges as
           linear structures from the same input stroke.}
  \label{fig:edgeDir}
\end{figure}

On that example, when a straight features detection is run
even's avatar
even committed
(\RefFig{fig:edgeDir} a)),
even's avatar
even committed
a thick blurred segment which extends up to four tiles is provided.
When a straight edge detection is run, a very thin blurred segment is
built to follow only one join edge.
The multi-detection can also be applied to both thin object or edge detection.
In the latter case, the detection algorithm is run twice using opposite
even's avatar
even committed
directions, so that in the exemple of figure (\RefFig{fig:edgeDir} b)),
even's avatar
even committed
both edges (in different colours) are highlighted.
These two thin blurred segments are much shorter, probably because the
tiles are not perfectly aligned.
This example illustrates the versatility of the new detector.
even's avatar
even committed

even's avatar
even committed
\subsection{Automatic blurred segment detection}
even's avatar
even committed

even's avatar
even committed
An unsupervised mode is also proposed to automatically detect all the
straight edges in the image. A stroke that crosses the whole image, is
swept in both direction, vertical then horizontal, from the center to
the borders. At each position, the multi-detection algorithm is run
to collect all the segments found under the stroke.

\input{Fig_method/algoAuto}

The behaviour of the unsupervised detection is depicted through the two
even's avatar
even committed
examples of \RefFig{fig:auto}.
even's avatar
even committed
The example on the left shows the detection of thin straight objects on a
circle with variable width.
On the left half of the circumference, the distance between both edges
exceeds the initial assigned width and a thick blurred segment is build
for each of them. Of course, on a curve, a continuous thickenning is
observed untill the blurred segment minimal width reaches the initial
assigned width.
On the right half, both edges are encompassed in a common blurred segment,
and at the extreme right part of the circle, the few distant residual points
are grouped to form a thick segment.

The example on the right shows the limits of the edge detector on a picture
with quite dense repartition of gradient.
All the salient edges are well detected but they are surrounded be a lot
of false detections, that rely on the presence of many local maxima of
the gradient magnitude with similar orientations.
even's avatar
even committed

even's avatar
even committed
\begin{figure}[h]
\center
  \begin{tabular}{c@{\hspace{0.2cm}}c}
    \includegraphics[width=0.37\textwidth]{Fig_method/vcercleAuto.png} &
    \includegraphics[width=0.58\textwidth]{Fig_method/plafondAuto.png}
  \end{tabular}
  \caption{Automatic detection of blurred segments.}
  \label{fig:auto}
\end{figure}
even's avatar
even committed

even's avatar
even committed
% \subsection{Implementation details}
%
% A directional scanner is encoded as an iterator that provides successively
% all the scan lines.