🎮 Simulador EP08_02: RANSAC — Contagem de Inliers
Modelo: Escala ×2
O modelo candidato mapeia (x,y) → (2x,2y). Ajuste o limiar ε e veja quais correspondências tornam-se inliers ou outliers.
–
O RANSAC, apresentado na seção “Modelagem Matemática: Homografia e RANSAC”, repete um ciclo de três passos — sortear uma amostra mínima, estimar um modelo candidato, e contar quantas correspondências são consistentes com ele (os inliers) — mantendo ao final o modelo mais votado. A etapa de estimação do modelo a partir de 4 pontos (passo 2) envolve álgebra linear que foge ao escopo deste EP; aqui, você recebe diretamente um conjunto de homografias já candidatas — como se cada uma tivesse sido estimada a partir de uma amostra aleatória diferente — e é encarregado de reproduzir exatamente o passo decisivo do algoritmo: aplicar cada modelo a todas as correspondências e contar seus inliers, escolhendo o vencedor.
Modelo k: I inliers. Ao final, imprimir Melhor modelo: k_best com I_best inliers.| Elemento | Papel no RANSAC |
|---|---|
| Amostra mínima (4 pares) | Suficiente para determinar os 8 graus de liberdade de uma homografia |
| Modelo candidato \(H_k\) | Estimado a partir de uma amostra mínima; pode ser bom ou ruim, dependendo se a amostra continha outliers |
| Erro de reprojeção | Mede o quão bem o modelo “prevê” cada correspondência observada |
| Inlier vs. outlier | Correspondências consistentes com o modelo vencedor (inliers) vs. as demais, tipicamente correspondências incorretas do matching |
| Refinamento final | Na prática, após escolher o melhor modelo, o RANSAC o recalcula usando apenas seus inliers — passo não exigido neste EP |
Entrada:
Saída:
Modelo k: I inliers.Melhor modelo: k_best com I_best inliers.| Entrada | Saída | Observação |
|---|---|---|
| 5 0 0 0 0 1 1 2 2 2 0 4 0 0 2 0 4 5 5 1 1 2 0.5 2 0 0 0 2 0 0 0 1 1 0 0 0 1 0 0 0 1 |
Modelo 0: 4 inliers Modelo 1: 1 inliers Melhor modelo: 0 com 4 inliers |
O Modelo 0 (escala ×2) explica corretamente 4 das 5 correspondências; a 5ª, \((5,5)\to(1,1)\), é um outlier que nenhum dos dois modelos explica bem. |
%%writefile EP08_02.py
# Código PythonWriting EP08_02.py
TestSuite("EP08_02.py").run()✔️ EP08_02.cases já existe em casos/
📋 6 caso(s) carregado(s) de casos/EP08_02.cases
🔍 Testando Python: EP08_02.py
⚠️ EP08_02.py: Arquivo sem conteúdo (menos de 3 linhas). Testes ignorados.