EP09 - Raiz do gH e gV

EP09 - Raiz do gH e gV

por Elton Okawa -
Número de respostas: 3

Olá, tudo bem?

Estou com duas dúvidas na detecção de bordas. Pelo que eu entendi o gH e o gV são arrays de mesmo shape que a imagem.

1. Como para calcular o gH e o gV são utilizadas a vizinhança de um pixel (os pixels da borda não são válidos), a "moldura" da imagem sempre vai ser False?

2. Quando eu tento realizar a operação indicada no enunciado:

   sqrt(gH * gH + gV * gV) > limiar,

Recebo o seguinte erro: TypeError: only length-1 arrays can be converted to Python scalars

Realizei o seguinte teste no console:

>>>a = np.array([[1,2,3],[4,5,6],[7,8,9]])

>>>sqrt(a)

TypeError: only length-1 arrays can be converted to Python scalars

Em resposta à Elton Okawa

Re: EP09 - Raiz do gH e gV

por Carlos Hitoshi Morimoto -

Olá, tudo bem?

tudo, e você?

Estou com duas dúvidas na detecção de bordas. Pelo que eu entendi o gH e o gV são arrays de mesmo shape que a imagem.

isso, gH e gV são tem o mesmo tamanho da imagem.

1. Como para calcular o gH e o gV são utilizadas a vizinhança de um pixel (os pixels da borda não são válidos), a "moldura" da imagem sempre vai ser False?

Para calcular gH e gV a gente usa um filtro de Sobel (Sh e Sv respectivamente). O problema aqui não é a "vizinhança", mas como o tamanho do filtro sugerido é 3x3, para que o filtro seja colocado inteiramente dentro da imagem, a primeira posição valida do CENTRO do filtro (indice [1,1]) sobre a imagem é a posição [1,1]. Assim, toddos os pixels na primeira linha são "inválidos" (assim como os pixels na última linha e a 1a e ultima coluna) e portanto recebem 0 (zero, não False) no calculo de gH e gV, pois gH e gV são resultados da aplicação dos filtros de Sobel.

Observe que, se o filtro fosse 5x5, as duas primeiras linhas (e duas ultimas colunas) seriam inválidas. Se 7x7...

>>>sqrt(a)

TypeError: only length-1 arrays can be converted to Python scalars

Mais uma excelente pergunta. Quando eu faço no meu Python shell

>>> sqrt( 2 )

 dá o erro: 

NameError: name 'sqrt' is not defined

O seu shell dá um erro diferente do meu. Você sabe dizer por que? E em caso afirmativo, que "sqrt" você está usando?

 
 

 

 

Em resposta à Carlos Hitoshi Morimoto

Re: EP09 - Raiz do gH e gV

por Elton Okawa -

NameError: name 'sqrt' is not defined

O seu shell dá um erro diferente do meu. Você sabe dizer por que? E em caso afirmativo, que "sqrt" você está usando?

Faltou importar a biblioteca, eu estou usando o math.sqrt.