Как выглядит алгоритм размытия по Гауссу? Есть ли примеры реализации? - PullRequest
0 голосов
/ 25 августа 2009

У меня есть контекст растрового изображения, и я хочу, чтобы это выглядело размытым. Так что лучшее, что я могу придумать, это алгоритм Гаусса, но я не имею большого представления о том, как выглядят такие алгоритмы размытия Гаусса? Знаете ли вы хорошие учебники или примеры по этому поводу? Язык не имеет большого значения, если все делается вручную, без особого использования языка. То есть в какао счастливчики не должны думать об этом, они просто используют Imagefilter, который уже есть. Но у меня нет ничего подобного в «Какао-тач» (цель-c, iPhone OS).

Ответы [ 3 ]

4 голосов
/ 25 августа 2009

Это на самом деле довольно просто. У вас есть шаблон фильтра (также известный как ядро ​​фильтра) - (маленький) прямоугольный массив с коэффициентами - и вы просто вычисляете свертку изображения и шаблона.

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

Шаблон - это просто кривая Гаусса в двух измерениях или любой другой шаблон фильтра, который вам нравится. Вы должны позаботиться о краях изображения, потому что шаблон фильтра будет частично за пределами изображения. Вы можете просто предположить, что это пиксели, или использовать зеркальную версию изображения, или то, что кажется разумным.

В заключение отметим, что существуют более быстрые способы вычисления свертки с использованием преобразований Фурье, но эта простая версия должна быть достаточной для первого теста.

1 голос
/ 25 августа 2009

Лучшее место для обработки изображений - ЭТО . Вы можете получить коды Matlab там.
И эта демонстрация Wolfram должна устранить любые сомнения по поводу того, как делать это вручную.

А если вы не хотите изучать слишком много вещей, изучите PIL (Библиотека изображений Python) .

" Здесь " - именно то, что вам нужно.

Код скопирован сверху по ссылке:

import ImageFilter

def filterBlur(im):

    im1 = im.filter(ImageFilter.BLUR)

    im1.save("BLUR" + ext)

filterBlur(im1)
1 голос
/ 25 августа 2009

В статье Википедии имеется образец матрицы в дополнение к некоторой стандартной информации по теме.

...