Недавно я внедрил фильтр LoG, единственное, что вам нужно, это формула и сигма в качестве параметра.Если вам нужна маска фиксированного размера, вы можете сохранить значения маски фильтра в матрице и использовать ее или пересчитывать каждый раз и создавать необходимую матрицу.Размер фильтра зависит от значения сигмы, если используется больше, чем этот размер - это не имеет смысла, потому что оставшаяся часть, которая имеет некоторый максимальный размер, рассчитывается по нулям с использованием этой формулы.Так, например, вы получили размер фильтра = 9X9. Затем, чтобы рассчитать сам фильтр как матрицу, вам нужно выполнить формулу через следующие значения:
int halfsize = size / 2;
for (int x = -halfsize; x < halfsize; ++x)
for (int y = -halfsize; y < halfsize; ++y)
mask[x][y] = LoGFunction(x, y);
Что-то в этом роде.Это также означает, что размер фильтра должен быть нечетным.Надеюсь это поможет.В вашем случае, размер = 9 сигма = 1,4 х, а у изменяется от -4 до 4. Используя формулу в точке (0, 0) (это центр фильтра), вы получите что-то около -12
Но если вы установите сигму на 0,2986, вы получите необходимый ответ около -40.Я также не понимаю, почему написано, что значение сигмы равно 1,4 мая, если я что-то упустил ... Поправьте меня, если я допустил ошибку, пожалуйста