Лаплас гауссовский
Лапласа Гаусса (LoG) изображения можно записать какf
∇2(f∗g)=f∗∇2g
с гауссово ядро и свертка. Таким образом, Лаплас изображения, сглаженного ядром Гаусса, идентичен изображению, свернутому с Лапласом ядра Гаусса. Эта свертка может быть дополнительно расширена, в 2D случае, как*g∗
f∗∇2g=f∗(∂2∂x2g+∂2∂y2g)=f∗∂2∂x2g+f∗∂2∂y2g
Таким образом, его можно вычислить как сложение двух сверток входного изображения со вторыми производными ядра Гаусса (в 3D это 3 свертки и т. Д.). Это интересно, поскольку ядро Гаусса отделимо, как и его производные. Это,
f(x,y)∗g(x,y)=f(x,y)∗(g(x)∗g(y))=(f(x,y)∗g(x))∗g(y)
Это означает, что вместо двумерной свертки мы можем вычислить одно и то же с использованием двух одномерных сверток. Это экономит много вычислений. Для самого маленького мыслимого ядра Гаусса у вас будет 5 выборок по каждому измерению. 2D свертка требует 25 умножений и сложений, две 1D свертки требуют 10. Чем больше ядро или чем больше размер изображения, тем значительнее эти вычислительные сбережения.
Таким образом, LoG может быть вычислен с использованием четырех 1D сверток. Однако само ядро LoG неразделимо.
Существует приближение, когда изображение сначала сворачивается с ядром Гаусса, а затем реализуется с использованием конечных разностей, что приводит к ядру 3x3 с -4 в середине и 1 в его четырех соседних ребрах.∇2
Вейвлет Ricker или оператор мексиканской шляпы идентичны LoG, вплоть до масштабирования и нормализации .
Разница гауссов
Разность гауссианов (DoG) изображения может быть записана какf
f∗g(1)−f∗g(2)=f∗(g(1)−g(2))
Таким образом, как и в случае с LoG, DoG можно рассматривать как одну неразделимую двумерную свертку или сумму (в данном случае разность) двух отделимых сверток. С этой точки зрения, похоже, что в использовании DoG по сравнению с LoG нет вычислительных преимуществ. Однако DoG является перестраиваемым полосовым фильтром, LoG не настраивается таким же образом, и его следует рассматривать как оператор производной. DoG также естественным образом появляется в масштабном пространстве, где изображение фильтруется во многих масштабах (гауссианы с разными сигмами), разница между последующими масштабами - это DoG.
Существует ядро DoG, которое является отделимым, что вдвое снижает вычислительные затраты, хотя это приближение не является изотропным, что приводит к зависимости фильтра от вращения.
Однажды я показал (для себя) эквивалентность LoG и DoG для DoG, где разница в сигме между двумя гауссовыми ядрами бесконечно мала (вплоть до масштабирования). У меня нет записей об этом, но это было нетрудно показать.
Другие формы вычисления этих фильтров
В ответе Лорана упоминается рекурсивная фильтрация, а в ОП - вычисления в области Фурье. Эти концепции применимы как к LoG, так и к DoG.
Гауссовы и его производные могут быть вычислены с использованием рекурсивного фильтра причинной и анти-причинного. Таким образом, все упомянутые выше одномерные свертки могут быть применены в постоянное время к сигме. Обратите внимание, что это эффективно только для больших сигм.
Аналогичным образом, любая свертка может быть вычислена в области Фурье, поэтому и двумерные ядра DoG и LoG могут быть преобразованы в область Фурье (или, скорее, вычислены там) и применены умножением.
В заключении
Нет существенных различий в вычислительной сложности этих двух подходов. Мне еще предстоит найти вескую причину для аппроксимации LoG с помощью DoG.