Laplace Gaussa
fa
∇2)( f∗ g) = f∗ ∇2)sol
sol∗
fa∗ ∇2)sol= f∗ ( ∂2)∂x2)sol+ ∂2)∂y2)sol) = f∗ ∂2)∂x2)sol+ f∗ ∂2)∂y2)sol
Można go zatem obliczyć jako dodanie dwóch zwojów obrazu wejściowego z drugimi pochodnymi jądra Gaussa (w 3D są to 3 zwoje itd.). Jest to interesujące, ponieważ jądro Gaussa można rozdzielić, podobnie jak jego pochodne. To jest,
fa( x , y) ∗ g( x , y) = f( x , y) ∗ ( g( x ) ∗ g( y) ) = ( f( x , y) ∗ g( x ) ) ∗ g( y)
co oznacza, że zamiast splotu 2D możemy obliczyć to samo za pomocą dwóch splotów 1D. Oszczędza to wiele obliczeń. Dla najmniejszego możliwego do wyobrażenia jądra Gaussa miałbyś 5 próbek wzdłuż każdego wymiaru. Splot 2D wymaga 25 zwielokrotnień i dodatków, dwa splot 1D wymagają 10. Im większe jądro lub im więcej wymiarów na obrazie, tym większe są te oszczędności obliczeniowe.
Zatem LoG można obliczyć przy użyciu czterech zwojów 1D. Jednak samego jądra LoG nie da się oddzielić.
∇2) jest implementowany z wykorzystaniem różnic skończonych, co prowadzi do jądra 3x3 z -4 w środku i 1 w jego czterech sąsiadujących brzegach.
Operator falki Ricker lub kapelusz meksykański są identyczne jak LoG, aż do skalowania i normalizacji .
Różnica Gaussów
fa
f∗g(1)−f∗g(2)=f∗(g(1)−g(2))
Tak więc, podobnie jak w przypadku LoG, DoG może być postrzegane jako pojedynczy nierozdzielny splot 2D lub suma (różnica w tym przypadku) dwóch oddzielnych splotów. Patrząc w ten sposób, wygląda na to, że korzystanie z DoG w porównaniu z LoG nie ma przewagi obliczeniowej. Jednak DoG jest przestrajalnym filtrem pasmowo-przepustowym, LoG nie jest strojony w ten sam sposób i powinien być postrzegany jako operator pochodnej. DoG pojawia się również naturalnie w ustawieniu przestrzeni skali, gdzie obraz jest filtrowany w wielu skalach (Gaussianie z różnymi sigmatami), różnica między kolejnymi skalami jest DoG.
Istnieje przybliżenie jądra DoG, które można oddzielić, co zmniejsza koszt obliczeń o połowę, chociaż to przybliżenie nie jest izotropowe, co prowadzi do zależności rotacyjnej filtra.
Kiedyś pokazałem (dla mnie) równoważność LoG i DoG, dla DoG, w którym różnica w sigma między dwoma ziarnami gaussowskimi jest nieskończenie mała (aż do skalowania). Nie mam zapisów na ten temat, ale nie było trudno to pokazać.
Inne formy obliczania tych filtrów
Odpowiedź Laurenta wspomina o filtrowaniu rekurencyjnym, a OP wspomina o obliczeniach w domenie Fouriera. Te koncepcje dotyczą zarówno LoG, jak i DoG.
Gaussa i jej pochodne mogą być obliczane przy użyciu przyczynowego i anty-przyczynowy filtra IIR. Tak więc wszystkie wyżej wymienione sploty 1D mogą być stosowane w stałym czasie przez sigma. Pamiętaj, że jest to skuteczne tylko w przypadku większych sigm.
Podobnie każdy splot można obliczyć w domenie Fouriera, więc zarówno jądra 2D DoG, jak i LoG 2D można przekształcić w domenę Fouriera (lub raczej tam obliczyć) i zastosować przez mnożenie.
Podsumowując
Nie ma istotnych różnic w złożoności obliczeniowej tych dwóch podejść. Muszę jeszcze znaleźć dobry powód, aby zbliżyć LoG za pomocą DoG.