Detecção de borda | Extraia as bordas de uma imagem

Conteúdo

objetivo

  • Entenda o que é detecção de bordas e como pode ser útil na classificação de imagens.
  • Aprenda como os núcleos são usados ​​para identificar bordas em uma determinada imagem.

Observação: Se você está mais interessado em aprender conceitos em formato audiovisual, temos esse artigo completo explicado no vídeo abaixo. Sim, não é assim, você pode continuar lendo.

Introdução

Vamos começar com um exemplo. Suponha que atribuímos a você uma tarefa para classificar um conjunto de imagens em Carros, Animais e humanos. Aqui estão muitas fotos. Você pode diferenciar entre os objetos? Bem simples, verdade?

screenshot-from-2021-03-12-15-19-47-2046512

sim, podemos facilmente identificar os carros, animais e humanos nas imagens acima. Agora vamos considerar outro conjunto de imagens, conforme mostrado abaixo.

screenshot-from-2021-03-12-15-20-02-9286837

Você ainda pode classificar as imagens facilmente? Acho que sim, podemos ver claramente que existem dois carros, dois animais e uma pessoa.

Mas, Qual é a diferença entre esses dois conjuntos de imagens? Nós vamos, no segundo caso, eliminamos a cor, o fundo e outros pequenos detalhes das imagens. Temos apenas as bordas e você ainda pode identificar os objetos na imagem.

Então, para qualquer imagem dada, se pudermos extrair apenas as bordas e remover o ruído da imagem, ainda poderíamos classificar a imagem.

O que é detecção de borda?

Como sabemos, o computador vê as imagens na forma de matrizes. Como mostrado aqui.screenshot-from-2021-03-12-15-21-04-7714157

Neste caso, podemos identificar claramente as bordas olhando para os números ou valores de pixel. Então, se você olhar atentamente para a matriz de números, há uma diferença significativa entre os valores de pixel ao redor da borda. A área preta na imagem à esquerda é representada por valores baixos como mostrado na segunda imagem. de forma similar, a área branca é representada pelos maiores números.

A detecção de bordas é uma técnica de processamento de imagem para encontrar os limites de um objeto em uma determinada imagem.

Então, para resumir, bordas são a parte da imagem que representa o limite ou forma do objeto na imagem. O que mais, valores de pixel ao redor da borda mostram diferença significativa ou mudança repentina nos valores de pixel.

Com base neste fato, podemos identificar quais pixels representam a borda ou qual pixel está na borda.

Como extrair as bordas de uma imagem?

Assim que tivermos a ideia das bordas, agora vamos entender como podemos extrair as bordas de uma imagem. Digamos, pegamos uma pequena parte da imagem. Podemos comparar os valores dos pixels com os pixels circundantes para descobrir se um determinado pixel está na borda.

screenshot-from-2021-03-12-15-23-11-5956938

Por exemplo, se eu pegar o pixel alvo 16 e eu comparo os valores à esquerda e à direita. Aqui os valores são 10 e 119 respectivamente. Claramente, há uma mudança significativa nos valores de pixel. Então, podemos dizer que o pixel está na borda.

Considerando que, se você olhar para os pixels na imagem a seguir. Os valores de pixel à esquerda e à direita do pixel selecionado não têm uma diferença significativa. Por tanto, podemos dizer que este pixel não está na borda.

screenshot-from-2021-03-12-15-22-59-3561310

Agora a questão é se temos que sentar e comparar manualmente esses valores para encontrar as bordas. Nós vamos, obviamente não. Para o dever de casa, podemos usar um array conhecido como El kernel e realizar multiplicação por elementos.

screenshot-from-2021-03-12-15-24-09-9779236

Digamos que, na parte selecionada da imagem, Eu multiplico todos os números à esquerda com -1, todos os números à direita com 1. Além disso, todos os números na linha do meio com 0. Em termos simples, Estou tentando encontrar a diferença entre os pixels esquerdo e direito. Quando esta diferença é maior do que um limite, podemos concluir que é uma vantagem.

No caso acima, o número é 31, que não é um grande número. Portanto, este pixel não está na borda.

Vamos pegar outro caso, aqui o pixel destacado é meu alvo.

screenshot-from-2021-03-12-15-25-07-3050198

Neste exemplo, o resultado é 354, que é significativamente alto. Portanto, podemos dizer que o pixel dado está na borda.

Filtro / núcleo

Esta matriz, O que usamos para calcular a diferença?, conhecido como filtro ou kernel. Este filtro desliza pela imagem para gerar uma nova matriz chamada mapa de recursos. Os valores do mapa de recursos indicam se o pixel específico está na borda ou não.

screenshot-from-2021-03-12-15-25-58-6669835

O kernel que usamos no exemplo anterior é chamado de kernel Prewitt na direção X. Uma vez que compara os valores no eixo horizontal. de forma similar, tem um kernel Prewitt na direção Y. O que mais, temos o kernel Sobel nas direções X e Y.

screenshot-from-2021-03-12-15-33-24-3459866

No caso dos grãos Sobel, valores de pixel ao lado do pixel de destino têm maior importância.

Notas finais

Em resumo, pixels na borda têm uma diferença significativa nos valores. Podemos comparar os valores dos pixels vizinhos para encontrar a borda. O que mais, um array ou kernel é usado para comparar os valores. Quanto maior for a diferença entre os pixels esquerdo e direito, o alvo está mais perto da borda. de forma similar, Reduza a diferença: o pixel não está na borda.

Se você está procurando iniciar sua jornada de ciência de dados e deseja todos os tópicos sob o mesmo teto, sua busca para aqui. Dê uma olhada no AI e ML BlackBelt certificados da DataPeaker Mais Programa

Informe-nos se tiver alguma dúvida nos comentários abaixo sobre a detecção de bordas..

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker