Operador Prewitt

O operador Prewitt é usado para detecção de bordas em uma imagem. Ele detecta dois tipos de arestas

  • Arestas horizontais
  • Bordas Verticais

As bordas são calculadas usando a diferença entre as intensidades de pixel correspondentes de uma imagem. Todas as máscaras usadas para detecção de bordas também são conhecidas como máscaras derivadas. Porque, como afirmamos muitas vezes antes nesta série de tutoriais, essa imagem também é um sinal, então as mudanças em um sinal só podem ser calculadas usando diferenciação. É por isso que esses operadores também são chamados de operadores derivativos ou máscaras derivadas.

Todas as máscaras derivadas devem ter as seguintes propriedades:

  • O sinal oposto deve estar presente na máscara.
  • A soma da máscara deve ser igual a zero.
  • Mais peso significa mais detecção de bordas.

O operador Prewitt nos fornece duas máscaras, uma para detectar bordas na direção horizontal e outra para detectar bordas na direção vertical.

Direção vertical

-1 0 1
-1 0 1
-1 0 1

A máscara acima irá encontrar as arestas na direção vertical e é porque a coluna de zeros na direção vertical. Quando você vai convolver esta máscara em uma imagem, ela lhe dará as bordas verticais em uma imagem.

Como funciona

Quando aplicamos esta máscara na imagem, ela destaca bordas verticais. Ele simplesmente funciona como uma derivada de primeira ordem e calcula a diferença de intensidades de pixel em uma região de borda. Como a coluna central é zero, ela não inclui os valores originais de uma imagem, mas sim calcula a diferença entre os valores dos pixels direito e esquerdo em torno dessa borda. Isso aumenta a intensidade da borda e torna-se melhorada comparativamente à imagem original.

Direção Horizontal

-1 -1 -1
0 0 0
1 1 1

A máscara acima encontrará arestas na direção horizontal e é porque essa coluna de zeros está na direção horizontal. Quando você vai convolver esta máscara em uma imagem, ela criará bordas horizontais proeminentes na imagem.

Como funciona

Esta máscara irá destacar as bordas horizontais em uma imagem. Ele também funciona com o princípio da máscara acima e calcula a diferença entre as intensidades de pixel de uma borda específica. Como a linha central da máscara consiste em zeros, ela não inclui os valores originais da borda da imagem, mas sim calcula a diferença das intensidades de pixel acima e abaixo da borda particular. Aumentando assim a mudança repentina de intensidades e tornando a borda mais visível. Ambas as máscaras acima seguem o princípio da máscara derivada. Ambas as máscaras têm sinal oposto e a soma de ambas as máscaras é igual a zero. A terceira condição não será aplicável neste operador, pois ambas as máscaras acima são padronizadas e não podemos alterar o valor delas.

Agora é hora de ver essas máscaras em ação:

Imagem de amostra

A seguir está um exemplo de imagem na qual aplicaremos as duas máscaras, uma de cada vez.

Depois de aplicar a máscara vertical

Após aplicar a máscara vertical na imagem de amostra acima, a imagem a seguir será obtida. Esta imagem contém bordas verticais. Você pode julgá-lo mais corretamente comparando com a imagem das bordas horizontais.

Depois de aplicar a máscara horizontal

Depois de aplicar a máscara horizontal na imagem de amostra acima, a imagem a seguir será obtida.

Comparação

Como você pode ver, na primeira imagem em que aplicamos a máscara vertical, todas as arestas verticais são mais visíveis do que a imagem original. Da mesma forma, na segunda imagem aplicamos a máscara horizontal e, como resultado, todas as arestas horizontais são visíveis. Assim, você pode ver que podemos detectar as bordas horizontais e verticais de uma imagem.