Свертка изображений с использованием NumPy в Python: методы и примеры

Вот несколько методов свертки изображений с использованием NumPy в Python:

  1. Использование модуля scipy.ndimage. Библиотека SciPy предоставляет модуль под названием ndimage, который предлагает различные функции обработки изображений, включая свертку. Вы можете использовать функцию convolveиз этого модуля для выполнения свертки изображений.
import numpy as np
from scipy import ndimage
image = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
kernel = np.array([[0, 1, 0],
                   [1, -4, 1],
                   [0, 1, 0]])
result = ndimage.convolve(image, kernel)
print(result)
  1. Ручная свертка. Вы можете выполнить свертку изображения вручную, перебирая пиксели изображения и применяя ядро ​​к каждому соседству. Этот метод дает вам больше контроля над процессом свертки.
import numpy as np
def convolve(image, kernel):
    m, n = image.shape
    k = kernel.shape[0]
    padding = k // 2
    image_padded = np.pad(image, padding, mode='constant')
    result = np.zeros_like(image)
    for i in range(m):
        for j in range(n):
            result[i, j] = np.sum(image_padded[i:i+k, j:j+k] * kernel)
    return result
image = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
kernel = np.array([[0, 1, 0],
                   [1, -4, 1],
                   [0, 1, 0]])
result = convolve(image, kernel)
print(result)
  1. Использование функции numpy.convolve. Библиотека NumPy предоставляет функцию convolve, которую можно использовать для одномерной свертки. Вы можете преобразовать 2D-изображение в 1D-массив, выполнить свертку, а затем вернуть ему исходную форму.
import numpy as np
image = np.array([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])
kernel = np.array([[0, 1, 0],
                   [1, -4, 1],
                   [0, 1, 0]])
result = np.convolve(image.flatten(), kernel.flatten(), mode='same').reshape(image.shape)
print(result)

Обратите внимание, что свертка изображений — это обширная тема, и приведенные выше методы дают базовое понимание того, как выполнять свертку с использованием NumPy в Python. Существуют более продвинутые методы и библиотеки для обработки и свертки изображений.