Skip to content
Snippets Groups Projects
algoInitial.tex 1.84 KiB
\begin{algorithm}[!htbp]
\caption{fastTrack}
\DontPrintSemicolon

\SetKwData{takes}{$\leftarrow$}
\SetKwData{is}{$P_1P_2$}
\SetKwData{ath}{$\varepsilon$}
\SetKwData{on}{isExtending}
\SetKwData{nb}{$n_E$}
\SetKwData{side}{side}
\SetKwData{index}{$i$}
\SetKwData{ninter}{$n_I$}
\SetKwData{niside}{$n_I[side]$}
\SetKwData{imax}{$N_I$}
\SetKwData{nmax}{$N_E$}
\SetKwData{gmin}{$G_{min}$}

\SetKwArray{gmap}{$\mathcal{G}$}
\SetKwArray{bs}{$\mathcal{B}$}
\SetKwArray{ds}{$\mathcal{D}$}
\SetKwArray{scan}{$S$}

\SetKwFunction{getds}{getDirectionalScanner}
\SetKwFunction{fscan}{firstScan}
\SetKwFunction{nscan}{nextScan}
\SetKwFunction{largest}{atLargest}
\SetKwFunction{grad}{gradient}
\SetKwFunction{bsinit}{initializeBS}
\SetKwFunction{addpt}{addPoint}

\Input{gradient magnitude map \gmap,
       input segment \is, assigned thickness \ath}
\Output{a detected blurred segment \bs}

\bs \takes $\emptyset$\;
\ds \takes \getds (\is)
\Comment*{Gets a DS from input segment.}
\scan \takes \fscan (\ds)\;
\index \takes \largest (\scan, \gmap, \gmin)
\Comment*{Gets index of pixel with max gradient.}
\If{\grad(\gmap$[$\scan$[$\index$]]$) $\geq$ \gmin}{
  \bs \takes \bsinit (\scan$[$\index$]$, \ath)

  \nb \takes 0\;
  \ninter \takes (0, 0)
  \Comment*{One counter for each side.}
  \While{\ninter $\neq$ (\imax, \imax) and \nb $\neq$ \nmax
  \Comment*{No more than \nmax extent.}}{
    \ForEach{\side}{
      \If{\niside $\leq$ \imax}{
        \scan \takes \nscan (\ds, \side)\;
        \index \takes \largest (\scan, \gmap)\;
        \eIf{\addpt (\bs, \scan$[$\index$]$) \Comment*{Tests BS extension.}}{
          \niside \takes 0 \Comment*{Resets fail count.}
        }{
          \niside \takes \niside + 1
          \Comment*{Increments fail count.}
        }
      }
    }
    \nb \takes \nb + 1
    \Comment*{Increments extension count.}
  }
}
\label{algo:initial}
\end{algorithm}