# Marr-Hildreth-Operator

Der Marr-Hildreth-Operator oder Laplacian of Gaussian (LoG) ist eine spezielle Form eines diskreten Laplace-Filters und kommt zum Beispiel in der Bildverarbeitung bei der Detektion von Kanten zum Einsatz. Der Filterkernel wird durch die Anwendung des Laplace-Operators auf eine Gauß-Funktion erstellt. Da seine Form der eines mexikanischen Sombreros ähnelt, ist er auch als Mexican Hat oder Sombrerofilter bekannt. Der LoG ist ein isotropes Maß der zweiten Ableitung an ein Bild. Deswegen detektiert er Orte großer Veränderung. In einem Bild sind das gerade Kanten von Objekten, an denen sich die Intensität schnell ändert. Es handelt sich also um einen Filter, der zur Kantendetektion genutzt werden kann.
Die Bezeichnung Marr-Hildreth-Operator geht zurück auf David Marr und Ellen Catherine Hildreth.

## Erzeugung des Kernels

Ausgangspunkt für die Erzeugung des Filterkernels ist die Gauß-Funktion in 2D:
    $f(x,y)={\frac {1}{2\pi \sigma ^{2}}}e^{-{\frac {x^{2}+y^{2}}{2\sigma ^{2}}}}$.
Wendet man den Laplace-Operator auf die Gauß-Funktion an, erhält man die kontinuierliche Repräsentation des LoG:
    $g(x,y)=\Delta \;f(x,y)={\frac {\partial ^{2}f(x,y)}{\partial x^{2}}}+{\frac {\partial ^{2}f(x,y)}{\partial y^{2}}}$.
    $g(x,y)=-{\frac {1}{\pi \sigma ^{4}}}e^{-{\frac {x^{2}+y^{2}}{2\sigma ^{2}}}}\left(1-{\frac {x^{2}+y^{2}}{2\sigma ^{2}}}\right)$.
Um diese Funktion in der Bildverarbeitung zu nutzen, wird der kontinuierliche LoG diskret approximiert. Die Approximation sollte für Kernel ungerader Kantenlänge $k=3,5,7,\dots$ durchgeführt werden, wobei der Ursprung des Kernels jeweils in der Mitte liegt – also bei $(x,y)=(2,2),(3,3),(4,4),\dots$. Ein $(x,y)=(7,7)$ Pixel großer Beispielkernel, also eine diskrete Approximation des kontinuierlichen LoG mit einer Standardabweichung von $\sigma =1{,}6$, könnte so aussehen:
    $g(x,y)={\begin{pmatrix}1&3&4&4&4&3&1\\3&4&3&0&3&4&3\\4&3&-9&-17&-9&3&4\\4&0&-17&-30&-17&0&4\\4&3&-9&-17&-9&3&4\\3&4&3&0&3&4&3\\1&3&4&4&4&3&1\\\end{pmatrix}}$
Der Kernel wurde zunächst auf 1 normiert und dann mit 255 (höchster Farbwert eines 8-Bit-Grauwertbildes) multipliziert. Die Form des LoG ist in den Matrixeinträgen deutlich erkennbar. Jetzt kann er mittels Faltung auf ein Bild angewendet werden, um die Kanten zu verdeutlichen:
    $I^{*}=g\ast I$
Hierbei bezeichnet $\ast$ die Faltungsoperation, $I$ das Eingangsbild und $I^{*}$ das Bild mit den verdeutlichten Kanten. Der LoG findet im Grunde genommen keine Kanten, sondern Gebiete mit rapiden Änderungen (siehe hierzu die erste Graphik im Artikel über den Laplace-Filter). Aufgrund der zweiten Ableitung erhält man auf einer Seite der eigentlichen Kante einen negativen und auf der anderen Seite einen positiven Wert. Die Kante liegt am Nulldurchgang zwischen diesen Werten.

## Alternative Anwendungen

An Stelle einer einzigen Faltungsoperation mit einem LoG-Faltungskern kann man auch zuerst den Laplacefilter auf das Eingangsbild anwenden und das Resultat anschließend mit der Gauß-Funktion falten (also weichzeichnen), oder umgekehrt. In diesem Falle muss dafür Sorge getragen werden, dass das Zwischenergebnis korrekt abgespeichert wird (32 bit floating point), damit es nicht zu unerwünschten Overflow oder Rundungsproblemen kommt.
Man kann eine Approximation des LoG-Filters durch eine Differenz von 2 Gaußkernen mit verschiedenen Varianzen erhalten. Diese Methode wird Difference of Gaussian genannt.
Als Nachteil des LoG gilt, dass die Faltungsmasken für hohe Werte von $\sigma$ sehr groß werden (40 Pixel bei $\sigma =4$) und entsprechend langsamer rechnen. Weiterhin ist die Chance der Detektion falscher Kanten aus lokalen Schwankungen höher als bei neueren Verfahren (z. B. Canny) und der Filter kann Probleme mit runden Kanten haben.

## Bildwerk

* Gaußfunktion in 2D
* LoG, d. h. der Laplace-Operator angewandt auf eine Gaußfunktion in 2D.
* Beispielbild zur Anwendung des LoG
* Betrag aller negativen Werte normiert auf 255 nach Anwendung des LoG
* Positive Werte normiert auf 255 nach Anwendung des LoG
* Summe aus dem Betrag aller negativen und positiven Werte. Die eigentlichen Kanten im Bild erscheinen als schwarze Linien zwischen den hell erscheinenden negativen und positiven Werten.
* Summenbild als Negativ zur besseren Erkennbarkeit des Ergebnisses