No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

El kernel en acción

9/25
Recursos

Aportes 14

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

El kernel de bordes horizontales puede quedar como

img_new_horizontal = nd.convolve(img_gray,kernel.T)

Con el kernel original que definimos en la clase

Por si se preguntaban qué pasa con un Kernel = 0’s

Algunos ejemplos de los kernel

Probando distintos Kernels:

kernel = np.array([[ 0, 0, 0],
[ 0, 0, 0],
[ 0, 0, 0]])


kernel = np.array([[ 1, 0, 1],
[ 0, 0, 0],
[ 1, 0, 1]])



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

Jugando y creando nuevos kernel

Kernel para bordes verticales:

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

Lo convertí en función para ir probando varios kernels más fácil.

def test_kernels(img: np.ndarray, kernel: np.ndarray):
    img_new = nd.convolve(img_gray, kernel)
    fig, axes = plt.subplots(1,2, figsize=(15,10))
    axes[0].imshow(img, cmap=plt.cm.gray)
    axes[0].set_title('Original')
    axes[0].axis('off')

    axes[1].imshow(img_new, cmap=plt.cm.gray)
    axes[1].set_title('New')
    axes[1].axis('off')

test_kernels(img_gray, kernel)

# test con matriz identidad
test_kernels(img_gray, [[1,0,0],[0,1,0],[0,0,1]])

Ustedes sabían que si usan este kernel pueden trasladar la imagen? 😆

s =  55 # kernel's size
kernel= np.zeros((s, s))
kernel[s-1][s//2] = 1
<#kernel, para bordes verticales

kernel = np.array([[-1, 0, 1],
                   [-1, 0, 1],
                   [-1, 0, 1]])
#utilizo la traspuesta de kernel
img_new = nd.convolve(img_gray, kernel.T)
fig, axes = plt.subplots(1,2, figsize=(15,10))
axes[0].imshow(img_gray ,cmap=plt.cm.gray)
axes[0].set_title('Original')
axes[0].axis('off')

axes[1].imshow(img_new ,cmap=plt.cm.gray)
axes[1].set_title('Convolucion')
axes[1].axis('off')
import cv2
cv2.imwrite('kernel.png',img_new)> 

Probando el kernel para bordes horizontales

Código:

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

img_2 = nd.convolve(img_gray, kernel_2)

fig, axes = plt.subplots(1,2, figsize = (15,10))
axes[0].imshow(img_gray, cmap=plt.cm.gray)
axes[0].set_title('Original')
axes[0].axis('off')

axes[1].imshow(img_2, cmap=plt.cm.gray)
axes[1].set_title('Convolution')
axes[1].axis('off')

Así puse lo que en mi intuición es un filtro para líneas diagonales hacia abajo:

Luego este fue el resultado:

Kernel para mostrar lineas horizontales

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