Content deleted Content added
m I've fixed a typo |
No edit summary |
||
(28 intermediate revisions by 18 users not shown) | |||
Line 1:
'''Features from accelerated segment test (FAST)''' is a [[corner detection]] method, which could be used to extract [[Feature (computer vision)|feature]] points and later used to track and map objects in many [[computer vision]] tasks. The FAST corner detector was originally developed by Edward Rosten and Tom Drummond
{{cite book
|last1=Rosten |first1=Edward
|last2=Drummond |first2=Tom
|title=Computer Vision – ECCV 2006
|s2cid=1388140
|date=2006
|chapter=Machine Learning for High-speed Corner Detection
|series=Lecture Notes in Computer Science
|volume=3951
|pages=430–443
|doi=10.1007/11744023_34
|isbn=978-3-540-33832-1
}}
</ref> The most promising advantage of the FAST corner detector is its computational efficiency. Referring to its name, it is indeed faster than many other well-known feature extraction methods, such as [[difference of Gaussians]] (DoG) used by the [[Scale-invariant feature transform|SIFT]], [[Corner detection#The SUSAN corner detector|SUSAN]] and [[Harris affine region detector|Harris]] detectors. Moreover, when machine learning techniques are applied, superior performance in terms of computation time and resources can be realised. The FAST corner detector is very suitable for real-time video processing application because of this high-speed performance.
== Segment test detector ==
[[File:FAST Corner Detector.jpg|thumb|The pixels used by the FAST corner detector]]
FAST corner detector uses a circle of 16 pixels (a [[Midpoint circle algorithm|Bresenham circle]] of radius 3) to classify whether a candidate point p is actually a corner. Each pixel in the circle is labeled from integer number 1 to 16 clockwise. If a set of N contiguous pixels in the circle are all brighter than the intensity of candidate pixel p (denoted by I<sub>p</sub>) plus a threshold value t or all darker than the intensity of candidate pixel p minus threshold value t, then p is classified as corner. The conditions can be written as:▼
*Condition
*Condition 2: A set of N contiguous pixels S, <math>\forall x \in S</math>, <math>I_x < I_p - t</math> (a bright corner on a dark background)
So when either of the two conditions is met, candidate p can be classified as a corner.
▲FAST corner detector uses a circle of 16 pixels (a Bresenham circle of radius 3) to classify whether a candidate point p is actually a corner. Each pixel in the circle is labeled from integer number 1 to 16 clockwise. If a set of N contiguous pixels in the circle are all brighter than the intensity of candidate pixel p (denoted by I<sub>p</sub>) plus a threshold value t or all darker than the intensity of candidate pixel p minus threshold value t, then p is classified as corner. The conditions can be written as:
▲*Condition 2: A set of N contiguous pixels S, ∀ x ∈ S, I<sub>x</sub> < I<sub>p</sub> - t
▲So when either of the two conditions is met, candidate p can be classified as a corner. There is a tradeoff of choosing N, the number of contiguous pixels and the threshold value t. On one hand the number of detected corner points should not be too many, on the other hand, the high performance should not be achieved by sacrificing computational efficiency. Without the improvement of [[machine learning]], N is usually chosen as 12. A high-speed test method could be applied to exclude non-corner points.
== High-speed test ==
Line 18 ⟶ 33:
== Improvement with machine learning ==
In order to address the first two weakness points of high-speed test, a [[machine learning]] approach is introduced to help improve the detecting algorithm. This
For candidate p, each ___location on the circle x ∈ {1, 2, 3, ..., 16} can be denoted by p→x. The state of each pixel, S<sub>p→x</sub> must be in one of the following three states:
Line 30 ⟶ 45:
* P<sub>b</sub> = {p ∈ P : S<sub>p→x</sub> = b }
Secondly, a [[decision tree]] algorithm, the [[ID3 algorithm]] is applied to the 16 locations in order to achieve the maximum [[information gain]]. Let K<sub>p</sub> be a boolean variable which indicates whether p is a corner, then the [[Entropy (information theory)|entropy]] of K<sub>p</sub> is used to measure the information of p being a corner. For a set of pixels Q, the total
*H(Q) = ( c + n ) log<sub>2</sub>( c + n ) - clog<sub>2</sub>c - nlog<sub>2</sub>n
** where c = |{ i ∈ Q: K<sub>i</sub> is true}| (number of corners)
** where n = |{ i ∈ Q: K<sub>i</sub> is false}| (number of non-corners)
Line 38 ⟶ 53:
*H<sub>g</sub>= H(P) - H(P<sub>b</sub>) - H(P<sub>s</sub>) - H(P<sub>d</sub>)
A recursive process is applied to each subsets in order to select each x that could maximize the
This generated [[decision tree]] can then be converted into programming code, such as [[C (programming language)|C]] and [[C++]], which is just a bunch of nested if-else statements. For optimization purpose, [[profile-guided optimization]] is used to compile the code. The
Notice that the corners detected using this
== Non-maximum suppression ==
"Since the segment test does not compute a corner response function, [[non-maximum suppression]]
*A [[binary search algorithm]] could be applied to find the biggest t for which p is still a corner. So each time a different t is set for the decision tree algorithm. When it manages to find the biggest t, that t could be regarded as the corner strength.
*Another approach is an iteration scheme, where each time t is increased to the smallest value of which pass the test.
== FAST-ER: Enhanced repeatability ==
FAST-ER detector is
== Comparison with other detectors ==
In Rosten's research,<ref>Edward Rosten, [http://
The parameter settings for the detectors (other than FAST) are as follows:
Line 123 ⟶ 138:
|}
* Speed tests were performed on a 3.0 GHz [[Pentium D|Pentium 4-D]] computer. The dataset are divided into a training set and a test set. The training set consists of 101 [[monochrome]] images with a resolution of 992×668 pixels. The test set consists of 4968 frames of [[monochrome]] 352×288 video. And the result is:
{| class="wikitable"
|-
Line 149 ⟶ 164:
== Bibliography ==
* {{cite
| year=2005 | doi=10.1109/ICCV.2005.104 | volume=2| pages=1508–1511| isbn=978-0-7695-2334-7 | citeseerx=10.1.1.60.4715 | s2cid=1505168 }}▼
* {{cite journal | last=Rosten | first=Edward |author2=Reid Porter |author3=Tom Drummond | title=
▲| year=2005 | doi=10.1109/ICCV.2005.104 | volume=2| pages=1508–1511}}
| arxiv=0810.2434| year=2010 | doi=10.1109/TPAMI.2008.275 | pmid=19926902 | volume=32| issue=1 | pages=105–119| s2cid=206764370 }}▼
* {{cite
▲| year=2010 | doi=10.1109/TPAMI.2008.275 | volume=32| pages=105–119}}
▲* {{cite journal | last=Rosten | first=Edward |author2=Tom Drummond | title=Machine learning for high-speed corner detection | journal=European Conference on Computer Vision
| url=http://edwardrosten.com/work/rosten_2006_machine.pdf
| year=2006 | doi=10.1007/11744023_34 | volume=1| pages=430–443| series=Lecture Notes in Computer Science | isbn=978-3-540-33832-1 | citeseerx=10.1.1.64.8513 | s2cid=1388140 }}
== External links ==
Line 165 ⟶ 176:
<!--- Categories --->
[[Category:Feature detection (computer vision)]]
|