Это на самом деле довольно просто. У вас есть шаблон фильтра (также известный как ядро фильтра) - (маленький) прямоугольный массив с коэффициентами - и вы просто вычисляете свертку изображения и шаблона.
for y = 1 to ImageHeight
for x = 1 to ImageWidth
newValue = 0
for j = 1 to PatternHeight
for i = 1 to PatternWidth
newValue += OldImage[x-PatternWidth/2+i,y-PatternHeight/2+j] * Pattern[i,j]
NewImage[x,y] = newValue
Шаблон - это просто кривая Гаусса в двух измерениях или любой другой шаблон фильтра, который вам нравится. Вы должны позаботиться о краях изображения, потому что шаблон фильтра будет частично за пределами изображения. Вы можете просто предположить, что это пиксели, или использовать зеркальную версию изображения, или то, что кажется разумным.
В заключение отметим, что существуют более быстрые способы вычисления свертки с использованием преобразований Фурье, но эта простая версия должна быть достаточной для первого теста.