# Interest-Operator

Mit Interest-Operatoren werden im Bereich der Bildverarbeitung Algorithmen bezeichnet, die markante Stellen in Bildern extrahieren und gleichzeitig eine oder mehrere Kenngrößen liefern. Markante Stellen sind dabei diejenigen Punkte, die in einer begrenzten Umgebung möglichst einzigartig sind. Das Innere linienhafter Kanten gehört also nicht zu den markanten Punkten, siehe Kantendetektion. Weitere Anforderungen an Interest-Operatoren sind die Invarianz gegenüber Bildänderungen wie geometrischen und radiometrischen Verzerrungen (z. B. Rotationen, Skalierungen), die Unempfindlichkeit gegenüber Rauschen und Interpretierbarkeit (geeignet zur weiteren Bildanalyse).
Das Ergebnis der Suche nach markanten Punkten wird zum Beispiel bei der Berechnung der Epipolargeometrie zwischen zwei Kameras oder beim bildbasierten Tracking verwendet.
Bekannte Interest-Operatoren sind der Moravec-Operator, der Plessy Punkt-Detektor (meist Harris Corner Detector), der FAST-Operator (features from accelerated segment test) und der Förstner-Operator.

## Moravec-Operator

Der Moravec-Operator wurde von Hans Moravec im Jahr 1977 vorgestellt. Er berechnet die mittleren quadratischen Gradientensummen in den vier Hauptrichtungen des Fensters der Größe $k\times l$.
    $V_{1}={\frac {1}{p(q-1)}}\sum _{i=-k}^{k}\sum _{j=-l}^{l-1}{\biglg(i,j)-g(i,j+1){\bigr )}^{2}$
    $V_{2}={\frac {1}{(p-1)q}}\sum _{i=-k}^{k-1}\sum _{j=-l}^{l}{\biglg(i,j)-g(i+1,j){\bigr )}^{2}$
    $V_{3}={\frac {1}{(p-1)(q-1)}}\sum _{i=-k}^{k-1}\sum _{j=-l}^{l-1}{\biglg(i,j)-g(i+1,j+1){\bigr )}^{2}$
    $V_{4}={\frac {1}{(p-1)(q-1)}}\sum _{i=-k}^{k-1}\sum _{j=-l}^{l-1}{\biglg(i,j+1)-g(i+1,j){\bigr )}^{2}$
    $V=\min(V_{1},V_{2},V_{3},V_{4})$
mit $p=2k+1$ und $q=2l+1$.
Liegt der Wert über einer bestimmten Schwelle, liegt ein markanter Punkt vor. Der Moravec-Operator ist sehr leicht zu implementieren und benötigt wenig Rechenzeit. Er ist aber nicht rotationsinvariant und seine Genauigkeit beträgt lediglich 1 Pixel.

## Harris Corner Detector

Der Harris Corner Detector (selten auch Plessy Punkt-Detektor genannt) wurde 1988 von Harris und Stephens vorgestellt. Sie beschrieben eine Verbesserung des Moravec-Operators, indem sie die diskreten Verschiebungen und Richtungen mit Hilfe der Autokorrelationsfunktion lösten und damit auch die Genauigkeit der Lokalisierung steigerten.
Die Autokorrelationsmatrix $A$ berechnet sich dabei durch Summierung der Ableitung der Bildfunktion $f$ in dem Gebiet $\Omega$ um einen Punkt:
    $A={\begin{bmatrix}\sum \limits _{(i,j)\in \Omega }f_{x}(i,j)^{2}&\sum \limits _{(i,j)\in \Omega }f_{x}(i,j)\cdot f_{y}(i,j)\\\sum \limits _{(i,j)\in \Omega }f_{x}(i,j)\cdot f_{y}(i,j)&\sum \limits _{(i,j)\in \Omega }f_{y}(i,j)^{2}\\\end{bmatrix}}.$
$f_{x}$ und $f_{y}$ sind dabei die partiellen Ableitungen der Bildfunktion $f$.
$A$ beschreibt die Nachbarschaftsstruktur um die Stelle $(x,y)$. Ihr Rang unterscheidet sich je nach Eigenschaft der Umgebung:
    Rang 2: Es liegt ein markanter Punkt vor.
    Rang 1: Es liegt eine gerade Kante vor.
    Rang 0: Es liegt eine homogene, unstrukturierte Fläche vor.
Die Eigenwerte $\lambda _{1},\lambda _{2}$ von $A$ ergeben eine Beschreibung der Nachbarschaftsstruktur, die rotationsinvariant ist. Die Eigenwerte sind dabei proportional zu den Grauwertänderungen im Bild entlang der Hauptrichtungen (entspricht der Richtung der Eigenvektoren). Aufgrund dieser Eigenschaften sind die Eigenwerte bestens geeignet um die Nachbarschaftsstruktur zu beurteilen. Eine Analyse des Parameterraumes ergibt prinzipiell drei Fälle, die man unterscheiden kann:
* a) Wenn beide Eigenwerte klein sind, dann sind auch die Grauwertänderungen entlang der Hauptrichtungen klein, d. h. die Grauwerte sind in der Umgebung konstant. Das bedeutet, dass die lokale Autokorrelationsfunktion flach ist.
* b) Wenn ein Eigenwert groß ist und der andere klein, dann ergibt sich eine lokale Autokorrelationsfunktion, die eine klare Kante erkennen lässt. Der große Eigenwert zeigt senkrecht zur Kante eine große Grauwertänderung an, wohingegen der kleine Eigenwert entlang der Kante keine bzw. nur geringfügige Änderung der Grauwerte anzeigt.
* c) Falls beide Eigenwerte groß sind, die Grauwertänderungen in beiden Richtungen also ebenfalls groß sind, sieht die lokale Autokorrelationsfunktion aus wie eine scharfe Bergspitze. Es handelt sich demnach um einen Eckpunkt.
Um eine Klassifikation durchführen zu können zur Unterscheidung der Fälle a) bis c) benötigt man also eine auf die Eigenwerte beruhende Funktion, welche die Punktstärke anzeigt. Um die Eigenwertzerlegung der Matrix $A$ zu umgehen, kann man folgende Beziehungen verwenden:
    $\det(A)=\lambda _{1}\cdot \lambda _{2}$
    $\operatorname {spur} (A)=\lambda _{1}+\lambda _{2}$
Damit kann nun die Punktstärke $V$ direkt aus $A$ mittels der Formel
    $V=\det(A)-k\operatorname {spur} (A)^{2}$
berechnet werden. Um eine Trennung der Kanten von markanten Punkten zu erhalten, wird $k=0{,}04$ gewählt. Auf diese Weise erhält man für Punkte positive und für Kanten negative Werte. Eine lokale Nicht-Maxima-Unterdrückung liefert schließlich die Position des Interest-Punktes.

## Förstner-Operator

Der Förstner-Operator betrachtet die Aufgabenstellung als Abgleich zweier gleich großen Bildausschnitte, die gegeneinander verschoben und verrauscht sind. Dies wird mittels einer kleinsten Quadrate Ausgleichung im Gauß-Markow-Modell formuliert. Die formale Lösung ergibt sich durch Aufstellen eines Normalgleichungssystems und Invertieren des Gleichungssystems. Der Trick hierbei ist nun, dass man gar nicht an der Lösung des Normalgleichungssystems interessiert ist, sondern lediglich die Präzision abschätzen möchte, mit der man die beiden Bildausschnitte zuordnen kann. Dazu berechnet man die Kovarianzmatrix $C={\widehat {\sigma }}_{\Delta g}^{2}\cdot N^{-1}$. Des Weiteren stellt sich bei Betrachtung der entsprechenden Normalgleichungen heraus, dass die Normalgleichungsmatrix $N$ identisch ist mit der Autokorrelationsmatrix $A$.
Die Kovarianzmatrix $C$ gibt also an, wie genau die Position des Interestpunkts bestimmt werden kann. Dies lässt sich mittels einer Fehlerellipse visualisieren. Die Halbachsen der Fehlerellipse korrespondieren mit den Eigenvektoren und Eigenwerten ${\tilde {\lambda }}_{1},{\tilde {\lambda }}_{2}$ der Kovarianzmatrix. Große Gradienten in $A$ (entspricht einer großen Änderung der Grauwerte im Bild) führen demnach zu kleinen Varianzen bzw. Kovarianzen in $C$ und damit zu genauer Bestimmbarkeit. Ein guter Interestpunkt liegt dann vor, wenn die Fehlerellipse möglichst klein und möglichst rund ist. Im Gegensatz dazu besitzt die Fehlerellipse entlang einer ausgeprägten Grauwertkante eine sehr kleine und eine sehr große Halbachse (${\tilde {\lambda }}_{1}$ klein, ${\tilde {\lambda }}_{2}$ groß), der Punkt wäre also senkrecht zur Kante gut, entlang der Kante jedoch schlecht bestimmt.
Die Eigenwerte der Koeffizientenmatrix $Q=N^{-1}$ sind außerdem identisch mit den reziproken Eigenwerten von $N$. Dies lässt sich vorteilhaft nutzen, um die Inversion von $N$ bzw. $A$ zu umgehen. Die Länge der Halbachsen der Fehlerellipse verhalten sich dann jedoch umgekehrt proportional zu den Eigenwerten $\lambda _{1},\lambda _{2}$ von $N$.
Zur Beurteilung des Interestpunktes hat Förstner zwei Maßzahlen definiert: das Gewicht $w$ und die Rundheit $q$.
Das Gewicht berechnet sich wie folgt:
    $w={\frac {1}{\operatorname {spur} (A^{-1})}}={\frac {\det(A)}{\operatorname {spur} (A)}}={\frac {\lambda _{1}\lambda _{2}}{\lambda _{1}+\lambda _{2}}}$.
Es ist umgekehrt proportional zur Größe der Fehlerellipse, d. h., eine kleine Fehlerellipse ergibt ein großes Gewicht. Und die Rundheit ist:
    $q=1-\left({\frac {\lambda _{1}-\lambda _{2}}{\lambda _{1}+\lambda _{2}}}\right)^{2}={\frac {4\det(A)}{\operatorname {spur} (A)^{2}}}={\frac {4\lambda _{1}\lambda _{2}}{(\lambda _{1}+\lambda _{2})^{2}}}.$
Der Wertebereich für $q$ liegt zwischen 0 und 1 ($q=1,0$ ist exakt kreisrund). Durch die gegebenen Formeln lassen sich $w$ und $q$ einerseits ohne Inversion von $A$ oder andererseits ohne Eigenwertzerlegung von $A$ berechnen.
Anhand dieser beiden Kenngrößen kann die Eignung eines Interestpunkts beurteilt werden:
* Markante Punkte besitzen kleine, kreisförmige Ellipsen (entspricht großem Gewicht und Rundheit nahe 1).
* Gerade Kanten lassen sich durch langgestreckte Fehlerellipsen detektieren (entspricht einer kleinen Rundheit).
* Große Ellipsen (entspricht einem kleinen Gewicht) kennzeichnen eine unstrukturierte, gleichförmige Fläche.
Für die praktische Umsetzung wird ein Faltungskern mit einer Fenstergröße von 5 × 5 oder 7 × 7 Pixeln empfohlen. Als Faustregel für einen Interestpunkt kann man die Rundheit $q>0{,}8$ angeben. Der Förstner-Operator ist nicht sehr empfindlich gegenüber Änderungen von $q$. Für $w$ ist die Angabe schwieriger, da sie vom Bildkontrast abhängig ist. Eine Methode besteht darin, $x$ Prozent der Punkte mit den größten Werten auszuwählen, also z. B. von allen Punkten (welche die Bedingung an $q$ erfüllen) die 10 % mit größtem $w$. Alternativ kann man sich aus dem Mittelwert aller $w$ über das gesamte Bild einen Schwellwert berechnen. Der Wert von $w$ ist zugleich die „Stärke“ des Interestpunkts.
Darüber hinaus ist es notwendig eine lokale Nicht-Maximum-Unterdrückung durchzuführen.
Ebenfalls von Förstner beschrieben wurde die subpixelgenaue Berechnung des Interestpunktes: Obwohl die Bildinformation nur im Pixelraster vorliegt, kann eine interpolierende Version des Operators für ein Kontinuum von Positionen ausgewertet werden und dadurch ein (Eck- oder Zentrums-)Punkt subpixelgenau lokalisiert werden.

## Software

* Corner detection in Scikit-image (Python)
* Feature detection in OpenCV (C++, Python)