Создание ядра свертки Python - PullRequest
2 голосов
/ 14 октября 2019

Я пытаюсь создать ядро ​​свертки, а середина будет 1,5. К сожалению, я продолжаю думать о том, как это сделать. Я пытаюсь создать что-то похожее на это

Array = [
        [0 , 1 , 0]
        [1 , 1.5 , 1]
        [0 , 1 , 0]
]

1 Ответ

1 голос
/ 14 октября 2019

Поскольку OpenCV использует Numpy для отображения изображений, вы можете просто создать сверточное ядро, используя Numpy.

import numpy as np

convolution_kernel = np.array([[0, 1, 0], 
                               [1, 1.5, 1], 
                               [0, 1, 0]])

Вот ядро. Обратите внимание, что тип <class 'numpy.ndarray'>

[[0.  1.  0. ]
 [1.  1.5 1. ]
 [0.  1.  0. ]]

Для свертывания ядра с изображением вы можете использовать cv2.filter2D(). Примерно так:

import cv2

image = cv2.imread('1.png')
result = cv2.filter2D(image, -1, convolution_kernel)

Для получения дополнительной информации о построении ядра посмотрите this . Вот некоторые общие ядра и результат после свертки. Используя это входное изображение:

enter image description here

Заточка ядра

sharpen = np.array([[0, -1, 0], 
                    [-1, 5, -1], 
                    [0, -1, 0]])

enter image description here

ядро ​​лапласиана

laplacian = np.array([[0, 1, 0], 
                      [1, -4, 1], 
                      [0, 1, 0]])

enter image description here

Тиснение ядра

emboss = np.array([[-2, -1, 0], 
                   [-1, 1, 1], 
                   [0, 1, 2]])

enter image description here

Схема ядра

outline = np.array([[-1, -1, -1], 
                    [-1, 8, -1], 
                    [-1, -1, -1]])

enter image description here

Нижний трезвый

bottom_sobel = np.array([[-1, -2, -1], 
                         [0, 0, 0], 
                         [1, 2, 1]])

enter image description here

Левый sobel

left_sobel = np.array([[1, 0, -1], 
                       [2, 0, -2], 
                       [1, 0, -1]])

enter image description here

Правильный знак

right_sobel = np.array([[-1, 0, 1], 
                        [-2, 0, 2], 
                        [-1, 0, 1]])

enter image description here

Верхний трезвый

top_sobel = np.array([[1, 2, 1], 
                      [0, 0, 0], 
                      [-1, -2, -1]])

enter image description here

...