DC-UFRPE/Bacharelado em Ciência da Computação/Visão Computacional/Detecção de bordas e cantos

Detecção de bordas e cantos editar

A detecção de bordas é algo natural para o ser humano. Trata-se de compreender os limites de alguma figura geométrica. Porém, na computação, essa atividade não é nada trivial, porém extremamente necessária com diversas aplicações. Na visão computacional, para delimitar um objeto, é necessário encontrar suas bordas e para isso é necessário algoritmo que consigam fazer isso. Na maioria dos casos, os algoritmos tentam encontrar as mudança abrupta de luminosidades.

Operador de Sobel editar

O operador de Sobel usa uma matriz 3x3 para o eixo x ou y e calcular a diferença dos pixels da direita e esquerda ou de cima e baixo. Quando a diferença encontrar é alta, o operador realça aquele pixel detectado. O resultado final é uma imagem preto em branco com os pixels do contorno destacado.

Código com OpenCV editar

Exemplo do código:

import cv2 as cv

import matplotlib.pyplot as plt

import numpy as np


img = cv.imread('passarinho.jpg',0)

sobel = cv.Sobel(img, -1, 1, 1)


fig, ax = plt.subplots(ncols=2,figsize=(15,5))

ax[0].imshow(img, cmap = 'gray')

ax[0].set_title('Original')

ax[0].axis('off')

ax[1].imshow(sobel, cmap = 'gray')

ax[1].set_title('Sobel Aplicado')

ax[1].axis('off')

plt.show()