Возникли проблемы с настройкой силы размытия по Гауссу и пониманием генерации одномерного ядра Гаусса.Python

Программы на Python
Ответить
Anonymous
 Возникли проблемы с настройкой силы размытия по Гауссу и пониманием генерации одномерного ядра Гаусса.

Сообщение Anonymous »

Я реализую фильтр Гаусса, но у меня возникают трудности с некоторыми этапами процесса. Вот мой код:

Код: Выделить всё

def convolve(img, kernel):
#Get properties
row, column = img.shape

diff = int(len(kernel)/2)

output = np.zeros((row,column)) #initialize

#convolve horizontally
for i in range(row):
for j in range(column):
weight = 0
start = j - diff #I set an auxiliar variable to make possible the additions and multiplications for each pixels (fit pixel's index)
for k in range(len(kernel)):
if not(start+k < 0 or start+k >= column):
weight += img[i,start+k]*kernel[k]
output[i,j] = weight

#convolve vertically
for j in range(column):
for i in range(row):
weight = 0
start = i - diff
for k in range(len(kernel)):
if not(start+k < 0 or start+k >= row):
weight += output[start+k,j]*kernel[k]
output[i,j] = weight

output = output.astype(np.uint8)

return output
Когда я применяю его к изображению, я замечаю, что результат выглядит лишь слегка размытым. Я не уверен, что мой алгоритм работает правильно. В настоящее время я использую ядро типа [0.25, 0.5, 0.25].
Исходное изображение:
Изображение

Размытое изображение:
Изображение

Мои вопросы:
  • Как я могу увеличить или уменьшить эффект размытия?
  • Нужно ли для этого изменить значения ядра?
  • Как я могу сгенерировать или приблизить их значения ядра с использованием 1D-функции Гаусса (также 2D-ядро)?
  • Кроме того, как дисперсия (σ²) влияет на ядро и степень размытия?
  • Что еще более важно, существуют ли более эффективные методы реализации фильтра Гаусса вручную в Python (без использования встроенных библиотек)?
Я пытался найти информацию о преобразовании 2D-гауссова формата в 1D (для разделимой свертки), но все еще не понимаю, как правильно вычислить или аппроксимировать значения.
Любое объяснение или пример будем с благодарностью!

Подробнее здесь: https://stackoverflow.com/questions/798 ... aussian-ke
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»