Como o detector de recursos Hessian funciona?


8

Conheço o detector de canto Harris e entendo a idéia básica de sua matriz de segundo momento ,

M=[Ix2IxIyIxIyIy2]
, arestas e outros pontos instáveis ​​podem ser removidos via M.

Mas sobre o detector Hessian, ele usa a matriz Hessian para detectar pontos-chave e remover arestas,

H=[IxxIxyIxyIyy]
, e eu não entendo como poderia Hremover arestas e detectar pontos estáveis? Qual é a idéia básica intuitiva por trás disso?

Respostas:


11

Vou tentar evitar a matemática, porque os tutoriais de matemática e "como fazê-lo" podem ser facilmente encontrados.

Então, começo apontando uma coisa MUITO importante: não se calcula Harris para um único pixel, mas para uma vizinhança (um pedaço de imagem) em torno desse pixel! DeixeiEu(Eu)xx,Eu(Eu)xy... ser seus derivados por um ponto Eu0 0, então,

H=[EuVEu(Eu)xxW(Eu-Eu0 0)EuVEu(Eu)xyW(Eu-Eu0 0)EuVEu(Eu)xyW(Eu-Eu0 0)EuVEu(Eu)yyW(Eu-Eu0 0)]

o W(t)é um núcleo gaussiano. O eq anterior diz para você integrar os valores derivativos nas proximidadesVem torno do pixel atual. Cada valor dos vizinhos é multiplicado por um valor que diminui à medida que a distância aumenta. A lei da diminuição segue uma gaussiana, porqueW(t) é Gaussian centrado em Eu0 0. E é isso com a matemática.

Agora, voltando às observações empíricas. Se você usar apenas as derivadas e esse pixel fizer parte de uma estrutura linear (aresta), obterá uma forte resposta para as derivadas. Por outro lado, se o pixel estiver em um canto (uma interseção de duas arestas), as respostas derivadas serão canceladas.

Dizendo isso, o Hessian é capaz de capturar a estrutura local naquela vizinhança sem o efeito de "cancelamento". MAS muito importante, você precisa se integrar para obter um Hessian adequado.

Tendo um Hessian, obtido usando o método Harris ou por outros meios, pode-se extrair informações sobre a vizinhança. Existem métodos para obter valores numéricos sobre a probabilidade de ter uma aresta no pixel atual, em um canto, etc. Verifique a teoria de detecção de canto.

Agora, sobre "pontos estáveis" ou pontos salientes. Imagine que você está em uma cidade estrangeira sem GPS e apenas com um bom mapa. Se você for "teleportado" no meio de uma rua, poderá localizá-la no mapa, mas não poderá dizer onde está exatamente nessa rua ou em que direção deve se mover para a esquerda ou para a direita (escrita no mapa ) Imagine agora que você está em um cruzamento. Então, você pode apontar sua posição no mapa com precisão! (Obviamente, suponha que duas ruas não se cruzem mais de uma vez).

Imagine agora que você deve combinar duas imagens. Um atua como um mapa e o outro como a cidade. Você deve encontrar pixels que possam ser descritos exclusivamente, para fazer a correspondência. Verifique as imagens nesta postagem, por exemplo, de correspondência. Esses pontos são chamados de pontos salientes. Além disso, os pontos dos cantos tendem a não alterar suas propriedades de "curvatura" quando a imagem é dimensionada, traduzida, girada, inclinada etc. (transformações afins) É por isso que são chamados de "estáveis".

Alguns pontos da imagem permitem identificá-los exclusivamente. Esses pixels estão localizados nos cantos ou na interseção de linhas. Imagine que sua vizinhançaVestá em uma linha. Exceto pela orientação da linha, você não pode encontrar mais nada a partir dessa vizinhança. Mas seV está em uma esquina, você pode descobrir as direções das linhas que se cruzam, talvez o ângulo etc.

Nem todos os pontos de canto são salientes, mas apenas os pontos de canto têm grandes chances de serem salientes.

Espero que ajude!

ps Como descobrir se um ponto está no canto ou não, dê uma olhada no artigo de Harris.

pps Mais sobre correspondência, procure por SIFT ou SURF.

ppps Existe uma "generalização" do método Harris, chamado Structure Tensor. Confira o trabalho seminal de Knutsson !


Correção pequena: a integração nas proximidades de cada pixel é importante para as abordagens de Harris e de tensor de estrutura. Para o Hessian, não faz muito sentido: é equivalente a usar um tamanho de filtro maior para os filtros derivativos de 2ª ordem.
Niki Estner

@nikie você está correto, se você tiver um sinal analítico. Para imagens digitais (onde você tem valores discretos em uma grade), o raciocínio não se aplica. Você precisa integrar o Hessian, caso contrário, obtém uma matriz degenerada. Existe uma forma de tensor de estrutura que não precisa de integração e pode trabalhar com derivadas calculadas apenas para o pixel atual. Veja o link Knutsson no meu post.
visoft 23/10/13

11
@visoft: Não sei ao certo o que você quer dizer. A rigor, o hessiano é definido apenas para funções diferenciáveis, não para imagens. Você geralmente o aproxima por convolução com um núcleo de filtro derivativo (por exemplo, derivado gaussiano). Se você fizer isso, obtém uma matriz Hessiana para cada pixel que não é degenerado. E a integração nesses resultados de filtro tem o mesmo efeito que o uso de um kernel maior. Leva apenas mais ciclos de CPU.
Niki Estner

Ok, vou checar a literatura e voltar para você.
visoft 23/10/13

@nikie Editei o post, removendo as referências do Hessian.
visoft 24/10/2013
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.