Как создать ядро ​​треугольника в Python? - PullRequest
2 голосов
/ 09 июля 2019

Я экспериментирую с разными ядрами для обработки изображений.Но я не смог найти ни одной библиотеки, поддерживающей треугольный фильтр, поэтому решил создать свою собственную.Я взял ссылку на код Python для создания ядра Гаусса и написал это:

def triangle_kernel(kerlen):
    lim = kerlen//2 + (kerlen % 2)/2
    x = np.linspace(-lim, lim, kerlen)
    kernel1d = 1 - np.abs(x)
    kernel2d = np.outer(kernel1d, kernel1d)
    print(kernel2d.shape)
    return kernel2d

Это правильно?Я попытался свернуть изображения с этим ядром, но результат был сильно искажен.какую ошибку я делаю?как мне создать ядро?

1 Ответ

2 голосов
/ 09 июля 2019

Вы можете реализовать это так:

import numpy as np

def triangle_kernel(kerlen):
    r = np.arange(kerlen)
    kernel1d = (kerlen + 1 - np.abs(r - r[::-1])) / 2
    kernel2d = np.outer(kernel1d, kernel1d)
    kernel2d /= kernel2d.sum()
    return kernel2d

print(triangle_kernel(4))
# [[0.02777778 0.05555556 0.05555556 0.02777778]
#  [0.05555556 0.11111111 0.11111111 0.05555556]
#  [0.05555556 0.11111111 0.11111111 0.05555556]
#  [0.02777778 0.05555556 0.05555556 0.02777778]]
print(triangle_kernel(5))
# [[0.01234568 0.02469136 0.03703704 0.02469136 0.01234568]
#  [0.02469136 0.04938272 0.07407407 0.04938272 0.02469136]
#  [0.03703704 0.07407407 0.11111111 0.07407407 0.03703704]
#  [0.02469136 0.04938272 0.07407407 0.04938272 0.02469136]
#  [0.01234568 0.02469136 0.03703704 0.02469136 0.01234568]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...