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 21

Preguntas 2

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:

Creando bordes horizontales ![](https://static.platzi.com/media/user_upload/image-9f068e78-b0ea-4a61-aa2d-af30edc5e952.jpg) Haciendo la imagen mas borrosa ![](https://static.platzi.com/media/user_upload/image-bd2e394d-7c99-4890-8a12-caa8a24ae9a1.jpg)
Este fue aplicando el outline kernel ![](https://static.platzi.com/media/user_upload/image-1c1c5e5e-f5ef-4cbc-91f5-b0bd2ec23db2.jpg)

wau, no se si el profesor es muy bueno o que pero hasta el momento he entendido todo muy bien.

Una cosa, podrias hacer una actualizacion al curso de despliegues de machine learning , es que me gustaria ver como tu lo explicas, muchas gracias.

kernel horizontal : ![](https://static.platzi.com/media/user_upload/image-49e10d97-cc51-49a9-b6ef-7d76816fd082.jpg) kernel con valores = 0: ![](https://static.platzi.com/media/user_upload/image-789e89a2-3644-452d-841d-f82f89373eb0.jpg)

Este fue el kernel usado para lineas horizontales:
[-1,-1,-1],
[0,0,0],
[1,1,1]

Este fue el kernel que usé para resaltar las caracteristicas horizontales

Este fue el resutlado del ejercicio planteado

Probé el kernel con la matriz identidad y resultó en un desenfoqué

Kernel para mostrar lineas horizontales

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