From d0866f5224f4fbd080fadcf460cd578ae4477767 Mon Sep 17 00:00:00 2001
From: even <philippe.even@loria.fr>
Date: Wed, 17 Apr 2019 12:20:54 +0200
Subject: [PATCH] Motivations revisited

---
 Article/biblio.bib   |  12 ++
 Article/introV2.tex  |  76 ++++++++++
 Article/methodV2.tex | 326 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 414 insertions(+)
 create mode 100755 Article/introV2.tex
 create mode 100755 Article/methodV2.tex

diff --git a/Article/biblio.bib b/Article/biblio.bib
index d753adc..0faddbf 100755
--- a/Article/biblio.bib
+++ b/Article/biblio.bib
@@ -175,3 +175,15 @@ in urban imagery},
   pages = {1255002},
   optdoi = {10.1142/S0218001412550026}
 }
+
+
+@article{GuptaMazumdar13,
+  title = {Sobel edge detection algorithm},
+  author = {Gupta, Samta and Mazumdar, Susmita Ghosh},
+  journal = {Int. Journal of Computer Science and Management Research},
+  volume = {2},
+  number = {2},
+  month = {February},
+  year = {2013},
+  pages = {1578--1583}
+}
diff --git a/Article/introV2.tex b/Article/introV2.tex
new file mode 100755
index 0000000..ef4142b
--- /dev/null
+++ b/Article/introV2.tex
@@ -0,0 +1,76 @@
+\section{Introduction}
+
+\label{sec:intro}
+
+Straight lines are commonly used visual features for many image analysis
+processes.
+For instance in computer vision, they are used to estimate the vanishing
+points associated to main directions of the 3D world, thus allowing camera
+orientation. They are also used to detect structured features to help a
+3D reconstruction process.
+
+Therefore, straight line detection is always an active research topic
+centered on the quest of still faster, more accurate or more robust-to-noise
+methods \cite{AkinlarTopal12,GioiAl10,LuAl15,MatasAl00}.
+Most of the times, they are based on the extraction of an edge map based
+on gradient magnitude. Gradient orientation is often used to discriminate
+candidates and thus provide better efficiency.
+However, they seldom provide an exploitable measure of the output line
+quality, based on intrinsic properties such as sharpness, connectivity
+or scattering.
+This information could be useful to get some confidence level and help to
+classify these features for further exploitation.
+In computer vision applications, it could also be a base for uncertainty
+propagation within 3D interpretation tools, in order to dispose of
+complementary measures to reprojection errors for local accuracy evaluation.
+
+%Some information may sometimes be drawn from their specific context,
+%for example through an analysis of the peak in a Hough transform accumulator.
+
+In digital geometry, new mathematical definitions of classical
+geometric objects, such as lines or circles, have been developed
+to better fit to the discrete nature of most of todays data to process.
+In particular, the notion of blurred segment \cite{Buzer07,DebledAl05} was
+introduced to cope with the image noise or other sources of imperfections
+from the real world by the mean of a width parameter.
+Efficient algorithms have already been designed to recognize
+these digital objects in binary images \cite{DebledAl06}.
+Blurred segments seem well suited to reflect the required line quality
+information.
+%Its preimage,
+%i.e. the space of geometric entities which numerization matches this
+%blurred segment, may be used to compute some confidence level in the delivered
+%3D interpretations, as a promising extension of former works
+%on discrete epipolar geometry \cite{NatsumiAl08}.
+
+The present work aims at designing a flexible tool to detect blurred segments
+with optimal width and orientation in gray-level images for as well
+supervised as unsupervised contexts.
+User-friendly solutions are sought, with ideally no parameter to set,
+or at least quite few values with intuitive meaning.
+A first attempt was already made in a previous work \cite{KerautretEven09}
+but the segment width was initially fixed by the user and not estimated,
+leading to erroneous orientations of the detected lines.
+In the present work, the limitations of this first detector were solved
+by the introduction of two new concepts:
+(i) {\bf adaptive directional scan} designed to get some
+compliance to the unpredictable orientation problem;
+(ii) {\bf control of the assigned width} to the blurred segment
+recognition algorithm, intended to derive more reliable information on the
+line orientation and quality.
+As a side effect, these two major evolutions also led to a noticeable
+improvement of the time performance of the detector.
+They are also put forward within a global line extraction algorithm
+which can be evaluated through an online demonstration at :
+\href{http://ipol-geometry.loria.fr/~kerautre/ipol_demo/FBSD_IPOLDemo}{
+\small{\url{http://ipol-geometry.loria.fr/~kerautre/ipol_demo/FBSD_IPOLDemo}}}
+
+In the next section, the main theoretical notions used in this work are
+introduced.
+The new detector workflow, the adaptive directional scan, the control
+of the assigned width and their integration into both supervised and
+unsupervised contexts are then presented in \RefSec{sec:method}.
+Experiments led to assess the achieved performance of this new detector
+are decribed in \RefSec{sec:expe}.
+Finally, \RefSec{sec:conclusion} gives a short conclusion
+followed by some open perspectives for future works.
diff --git a/Article/methodV2.tex b/Article/methodV2.tex
new file mode 100755
index 0000000..573dcfa
--- /dev/null
+++ b/Article/methodV2.tex
@@ -0,0 +1,326 @@
+\section{The detection method}
+
+\label{sec:method}
+
+In this line detection method, only the gradient information is processed
+as it provides a good information on the image dynamics, and hence the
+presence of edges.
+Trials to also use the intensity signal were made through costly correlation
+techniques, but they were mostly successful for detecting shapes with a
+stable appearance such as metallic tubular objects \cite{AubryAl17}.
+Contrarily to most detectors, no edge map is built here, but gradient
+magnitude and orientation are examined in privileged directions to track
+edge traces.
+Therefore we use a Sobel operator with a 5x5 pixels mask \cite{GuptaMazumdar13}
+to get a high quality gradient information.
+
+\subsection{Previous work}
+
+In a former paper \cite{KerautretEven09}, an efficient tool to detect
+blurred segments of fixed width in gray-level images was already introduced.
+It was based on a first rough detection in a local image area
+defined by the user. At that stage, the goal was to disclose the presence
+of a straight edge. Therefore as simple a test as the gradient maximal value
+was performed.
+In case of success, refinement steps were then run through an exploration of
+the image in the direction of the detected edge.
+In order to prevent local disturbances such as the presence of a sharper
+edge nearby, all the local gradient maxima were successively tested
+untill a correct candidate with an acceptable gradient orientation was found.
+
+Despite of good performances achieved, several drawbacks remained.
+First, the blurred segment width was not measured but initially set by the
+user according to the application requirements. The produced information
+on the edge quality was rather poor, and especially when the edge is thin,
+the risk to incorporate outlier points was quite high, thus producing a
+biased estimation of the edge orientation.
+Then, two refinement steps were systematically performed.
+On the one hand, this is useless when the first detection is successfull.
+On the other hand, there is no guarantee that this approach is able to
+process larger images.
+The search direction relies on the support vector of the blurred segment
+detected at the former step.
+Because the numerization rounding fixes a limit on this estimated orientation
+accuracy, more steps are inevitably necessary to process larger images.
+
+\subsection{Workflow of the detection process}
+
+The workflow of the detection process is summerized in the following figure.
+
+\begin{figure}[h]
+\center
+  \input{Fig_method/workflow}
+  \caption{The detection process main workflow.}
+  \label{fig:workflow}
+\end{figure}
+
+The initial detection consists in building and extending a blurred segment
+$\mathcal{B}$ based on points with highest norm gradient found in each scan
+of a static directional scan defined by an input segment $AB$.
+
+Validity tests are then applied to decide of the detection pursuit.
+They aim at rejecting too short or too sparse blurred segments, or
+those with a close orientation to $AB$.
+In case of positive response, the position $C$ and direction $\vec{D}$
+of this initial blurred segment are extracted.
+
+In the fine tracking step, another blurred segment $\mathcal{B}'$ is built
+and extended with points that correspond to local maxima of the
+image gradient, ranked by magnitude order, and with gradient direction
+close to start point gradient direction.
+At this refinement step, a control of the assigned width is applied
+and an adaptive directional scan based on the found position $C$ and
+direction $\vec{D}$ is used in order to extends the segment in the
+appropriate direction. These two improvements are described in the
+following sections.
+
+The output segment $\mathcal{B}'$ is finally tested according to the
+application needs. Too short, too sparse or too fragmented segments
+can be rejected. Length, sparsity or fragmentation thresholds are
+intuitive parameters left at the end user disposal.
+%None of these tests are activated for the experimental stage in order
+%to put forward achievable performance.
+
+\subsection{Adaptive directional scan}
+
+The blurred segment is searched within a directional scan with a position
+and an orientation approximately provided by the user, or blindly defined
+in unsupervised mode.
+Most of the time, the detection stops where the segment escapes sideways
+from the scan strip (\RefFig{fig:escape} a).
+A second search is then run using another directional scan aligned
+on the detected segment (\RefFig{fig:escape} b).
+In the given example, an outlier added to the initial segment leads to a
+wrong orientation value.
+But even in case of a correct detection, this estimated orientation is
+subject to the numerization rounding, and the longer the real segment is,
+the higher the probability gets to fail again on an escape from the scan strip.
+
+\begin{figure}[h]
+\center
+  \begin{tabular}{c@{\hspace{0.2cm}}c@{\hspace{0.2cm}}c}
+    \includegraphics[width=0.24\textwidth]{Fig_notions/escapeLightFirst_half.png} &
+    \includegraphics[width=0.24\textwidth]{Fig_notions/escapeLightSecond_half.png} &
+    \includegraphics[width=0.48\textwidth]{Fig_notions/escapeLightThird_zoom.png}
+    \begin{picture}(1,1)(0,0)
+      {\color{dwhite}{
+        \put(-307,4.5){\circle*{8}}
+        \put(-216,4.5){\circle*{8}}
+        \put(-127,4.5){\circle*{8}}
+      }}
+      \put(-309.5,2){a}
+      \put(-219,1.5){b}
+      \put(-129.5,2){c}
+    \end{picture}
+  \end{tabular}
+  \caption{Aborted detections on side escapes of static directional scans
+           and successful detection using an adaptive directional scan.
+           The last points added to the left of the blurred segment during
+           initial detection (a) lead to a bad estimation of its
+           orientation, and thus to an incomplete fine tracking with a
+           classical directional scan (b). An adaptive directional scan
+           instead of the static one allows to continue the segment
+           expansion as far as necessary (c).
+           Input selection is drawn in red color, scan strip bounds
+           in blue and detected blurred segments in green.}
+  \label{fig:escape}
+\end{figure}
+
+To overcome this issue, in the former work, an additional refinement step is
+run in the direction estimated from this longer segment.
+It is enough to completely detect most of the tested edges, but certainly
+not all, especially if big size images with much longer edges are processed.
+As a solution, this operation could be itered as long as the blurred segment
+escapes from the directional scan using as any fine detection steps as
+necessary.
+But at each iteration, already tested points are processed again,
+thus producing a useless computational cost.
+
+Here the proposed solution is to dynamically align the scan direction on
+the blurred segment all along the expansion stage.
+At each iteration $i$ of the expansion, the scan strip is aligned on the
+direction of the blurred segment $\mathcal{B}_{i-1}$ computed at previous
+iteration $i-1$.
+More generally, an adaptive directional scan $ADS$ is defined by:
+\begin{equation}
+ADS = \left\{
+S_i = \mathcal{D}_i \cap \mathcal{N}_i \cap \mathcal{I}
+\left| \begin{array}{l}
+\vec{V}(\mathcal{N}_i) \cdot \vec{V}(\mathcal{D}_0) = 0 \\
+\wedge~ h(\mathcal{N}_i) = h(\mathcal{N}_{i-1}) + p(\mathcal{D}_0) \\
+\wedge~ \mathcal{D}_{i} = \mathcal{D} (C_{i-1}, \vec{D}_{i-1}, w_{i-1}),
+i > \lambda
+\end{array} \right. \right\}
+\end{equation}
+where $C_{i}$, $\vec{D}_{i}$ and $w_{i}$ are respectively a position,
+a director vector and a width observed at iteration $i$.
+In the scope of the present detector, $C_{i-1}$ is the intersection of
+the input selection and the central line of $\mathcal{B}_{i-1}$,
+$\vec{D}_{i-1}$ the support vector of the enclosing digital segment 
+$E(\mathcal{B}_{i-1})$, and $w_{i-1}$ a value slightly greater than the
+minimal width of $\mathcal{B}_{i-1}$.
+So the last clause expresses the update of the scan bounds at iteration $i$.
+Compared to static directional scans where the scan strip remains fixed to
+the initial line $\mathcal{D}_0$, here the scan strip moves while
+scan lines remain fixed.
+This behavior ensures a complete detection of the blurred segment even when
+the orientation of $\mathcal{D}_0$ is badly estimated (\RefFig{fig:escape} c).
+In practice, it is started after $\lambda = 20$ iterations when the observed
+direction becomes more stable.
+
+\subsection{Control of the assigned width}
+
+The assigned width $\varepsilon$ to the blurred segment recognition algorithm
+is initially set to a large value $\varepsilon_0$ in order to allow the
+detection of large blurred segments.
+Then, when no more augmentation of the minimal width is observed after
+$\tau$ iterations ($\mu_{i+\tau} = \mu_i$), it is set to a much
+stricter value able to circumscribe the possible interpretations of the
+segment, that take into account the digitization margins:
+\begin{equation}
+\varepsilon = \mu_{i+\tau} + \frac{\textstyle 1}{\textstyle 2}
+\end{equation}
+This strategy aims at preventing the incorporation of spurious outliers in
+further parts of the segment.
+Setting the observation distance to a constant value $\tau = 20$ seems
+appropriate in most experimented situations.
+
+\subsection{Supervised blurred segments detection}
+
+In supervised context, the user draws an input stroke across the specific
+edge that 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 quite 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 behavior for interactive 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.
+%
+%When selecting candidates for the fine detection stage, an option, called
+%{\it edge selection mode}, is left to also filter the points according to
+%their gradient direction.
+%In {\it main edge selection mode}, only the points with a gradient vector
+%in the same direction as the start point gradient vector are added to the
+%blurred segment.
+%In {\it opposite edge selection mode}, only the points with an opposite
+%gradient vector direction are kept.
+%In {\it line selection mode} this direction-based filter is not applied,
+%and all the candidate points are aggregated into a same blurred segment,
+%whatever the direction of their gradient vector.
+%As illustrated on \RefFig{fig:edgeDir}, this mode allows the detection of
+%the two opposite edges of a thin straight object.
+%
+%\begin{figure}[h]
+%\center
+%  \begin{tabular}{c@{\hspace{0.2cm}}c}
+%    \includegraphics[width=0.4\textwidth]{Fig_method/selectLine_zoom.png} &
+%    \includegraphics[width=0.4\textwidth]{Fig_method/selectEdges_zoom.png}
+%  \end{tabular}
+%  \begin{picture}(1,1)(0,0)
+%    {\color{dwhite}{
+%      \put(-220,-14.5){\circle*{8}}
+%      \put(-74,-14.5){\circle*{8}}
+%    }}
+%    \put(-222.5,-17){a}
+%    \put(-76.5,-17){b}
+%  \end{picture}
+%  \caption{Blurred segments obtained in \textit{line} or \textit{edge
+%           selection mode} as a result of the gradient direction filtering
+%           when adding points.
+%           In \textit{line selection mode} (a), a thick blurred segment is
+%           built and extended all along the brick join.
+%           In \textit{edge selection mode} (b), a thin blurred segment is
+%           built along one of the two join edges.
+%           Both join edges are detected with the \textit{multi-selection}
+%           option.
+%           On that very textured image, they are much shorter than the whole
+%           join detected in line selection mode.
+%           Blurred segment points are drawn in black color, and the enclosing
+%           straight segments in blue.}
+%  \label{fig:edgeDir}
+%\end{figure}
+
+%\subsection{Multiple blurred segments detection}
+
+An option, called {\it multi-detection} (Algorithm 1), allows the
+detection of all the segments crossed by the input stroke $AB$.
+In order to avoid multiple detections of the same edge, an occupancy mask,
+initially empty, collects the dilated points of all the blurred segments,
+so that these points can not be added to another segment.
+\input{Fig_method/algoMulti}
+
+First the positions $M_j$ of the prominent 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:
+\begin{enumerate}
+\item the initial detection takes $M_j$ and the orthogonal direction
+$\vec{AB}_\perp$ to the stroke as input to build a static scan of fixed width
+$2~\varepsilon_{ini}$, and $M_j$ is used as start point of the blurred
+segment;
+\item the occupancy mask is filled in with the points of the dilated blurred
+segments $\mathcal{B}_j'$ at the end of each successful detection
+(a 21 pixels neighborhood is used);
+\item points marked as occupied are rejected when selecting candidates for the
+blurred segment extension in the fine tracking step.
+\end{enumerate}
+
+%In edge selection mode (\RefFig{fig:edgeDir} b), the multi-detection
+%algorithm is executed twice, first in main edge selection mode, then
+%in opposite edge selection mode.
+
+\subsection{Automatic blurred segment detection}
+
+An unsupervised mode is also proposed to automatically detect all the
+straight edges in the image. The principle of this automatic detection
+is described in Algorithm 2. A stroke that crosses the whole image, is
+swept in both directions, 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.
+In the present work, the stroke sweeping step $\delta$ is set to 10 pixels.
+Then small blurred segments are rejected in order to avoid the formation
+of small mis-aligned segments when the sweeping stroke crosses an image edge
+near one of its ends. In such situation, any nearby disturbing gradient is
+likely to deviate the blurred segment direction, and the expansion is
+quickly stopped. A length threshold value of 30 pixels is experimentally set.
+
+The automatic detection of blurred segments in a whole image is available
+for testing from an online demonstration
+and from a \textit{GitHub} source code repository: \\
+\href{https://github.com/evenp/FBSD}{
+\small{\url{https://github.com/evenp/FBSD}}}
+
+\input{Fig_method/algoAuto}
+
+%The behavior of the unsupervised detection is depicted through the two
+%examples of \RefFig{fig:auto}.
+%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 by a lot
+%of false detections, that rely on the presence of many local maxima of
+%the gradient magnitude with similar orientations.
+%
+%\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}
-- 
GitLab