Estou usando o algoritmo RANSAC para estimativa de homografia entre pares de imagens tiradas com câmeras que não possuem nenhuma tradução entre elas (rotação pura e alteração de escala / zoom). Funciona bem na metade dos casos. A saída correta é assim:
As linhas vermelhas são correspondências filtradas e os quadriláteros ilustram como a homografia distorce a perspectiva.
Às vezes, no entanto, muitos casos ruins acontecem, como estes:
Eu já tenho um teste simples no loop RANSAC. Faz um quadrilátero simples (um quadrado unitário) e o transforma com transformação de amostra. Então, verifica se a transformação manteve sua convexidade.
Ainda assim, porém, surgem cachos de quadriláteros côncavos.
Você tem alguma idéia de como testar corretamente a homografia, se ela se comporta "bem" e filtrar as soluções incorretas?
Encontrei algum código em que eles testam que nenhum dos três pontos transformados é colinear. Mas isso não parece suficiente, pois não filtra deltóides e outros quadriláteros "inválidos" ...