Operador Sobel

O operador sobel é muito semelhante ao operador Prewitt. Também é uma máscara derivada e é usada para detecção de bordas. Como o operador Prewitt, o operador sobel também é usado para detectar dois tipos de bordas em uma imagem:

  • Direção vertical
  • Direção horizontal

Diferença com o operador Prewitt

A principal diferença é que no operador sobel os coeficientes das máscaras não são fixos e podem ser ajustados de acordo com nossa exigência, a menos que não violem nenhuma propriedade das máscaras derivadas.

A seguir está a máscara vertical do Operador Sobel:

-1 0 1
-2 0 2
-1 0 1

Esta máscara funciona exatamente da mesma forma que a máscara vertical do operador Prewitt. Há apenas uma diferença: ele possui valores “2” e “-2” no centro da primeira e da terceira colunas. Quando aplicada a uma imagem, essa máscara destacará as bordas verticais.

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. Além disso, os valores centrais da primeira e da terceira coluna são 2 e -2, respectivamente.

Isso dá mais peso aos valores de pixel ao redor da região da borda. Isso aumenta a intensidade da borda e torna-se melhorada comparativamente à imagem original.

A seguir está a máscara horizontal do Operador Sobel

-1 -2 -1
0 0 0
1 2 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 criaria bordas horizontais proeminentes na imagem. A única diferença entre ele é que ele tem 2 e -2 como um elemento central da primeira e terceira linhas.

Como funciona

Essa máscara destacará as bordas horizontais de 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.

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 acima, 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.

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.

Portanto, desta forma você pode ver que podemos detectar as bordas horizontais e verticais de uma imagem. Além disso, se você comparar o resultado do operador sobel com o operador Prewitt, descobrirá que o operador sobel encontra mais arestas ou torna as arestas mais visíveis em comparação com o operador Prewitt.

Isso ocorre porque no operador sobel atribuímos mais peso às intensidades de pixel ao redor das bordas.

Aplicando mais peso à máscara

Agora também podemos ver que, se aplicarmos mais peso à máscara, mais arestas ela terá para nós. Além disso, conforme mencionado no início do tutorial, não há coeficientes fixos no operador sobel, então aqui está outro operador ponderado

-1 0 1
-5 0 5
-1 0 1

Se você puder comparar o resultado desta máscara com o da máscara vertical de Prewitt, é claro que esta máscara apresentará mais arestas em comparação com a de Prewitt apenas porque colocamos mais peso na máscara.