Ultralytics YOLO27: Entre na lista de espera.
Licenciar o YOLO
Voltar ao glossário da Ultralytics

Homography

A homografia é uma transformação projetiva que mapeia planos entre vistas, permitindo corrigir a perspectiva, registrar imagens e montar panoramas.

Uma homografia é uma transformação projetiva invertível que mapeia pontos de um plano para pontos de outro, preservando as linhas retas. Em visão computacional, ela descreve como uma superfície plana aparece de diferentes pontos de vista: uma página retangular fotografada de um ângulo pode ser transformada em um retângulo de frente. As homografias permitem fazer registro de imagens, corrigir a perspectiva e montar panoramas. "Transformação projetiva" é um sinônimo; o termo linguístico "homógrafo" se refere a palavras com grafia idêntica.

Como funciona a matriz de homografia#

Uma homografia é representada por uma matriz 3 x 3, geralmente chamada de H. Ela opera sobre coordenadas homogêneas, que representam um ponto bidimensional usando três valores. Após a multiplicação matricial, dividir os dois primeiros valores de saída pelo terceiro produz coordenadas de imagem comuns.

Embora H contenha nove elementos, ela tem oito parâmetros independentes, ou graus de liberdade: multiplicar todos os elementos pelo mesmo número diferente de zero não altera o mapeamento. Essa geometria dos mapeamentos de imagens planares explica por que quatro correspondências adequadas entre pontos determinam uma homografia.

Uma transformação afim é uma homografia restrita que preserva linhas paralelas. Uma homografia geral também representa efeitos de perspectiva, incluindo bordas paralelas que convergem para um ponto de fuga. Em geral, distâncias e ângulos mudam. Michel Chasles desenvolveu o conceito em seu memorial de 1837 sobre dualidade e homografia.

Como estimar uma homografia#

A estimativa começa com pontos correspondentes: locais que representam as mesmas características físicas em duas imagens. Eles podem ser cantos selecionados manualmente ou pontos-chave correspondidos, obtidos por meio da extração de características. Métodos como a Transformada de características invariante à escala fornecem descritores — resumos numéricos da aparência local — para corresponder características entre vistas.

O mínimo é de quatro pares de pontos, sem que quaisquer três pontos sejam colineares em cada conjunto. O algoritmo Transformação Linear Direta (DLT) converte as relações entre as coordenadas em um sistema linear. Correspondências adicionais melhoram a estimativa quando as medições contêm ruído.

Correspondências incorretas exigem um ajuste robusto. Consenso de Amostras Aleatórias (RANSAC) ajusta repetidamente transformações candidatas a pequenos subconjuntos e identifica os valores atípicos internos: correspondências consistentes com uma candidata. O erro de reprojeção mede a distância entre um ponto de origem transformado e seu destino observado. A API de estimativa de homografia do OpenCV disponibiliza esse processo por meio de cv2.findHomography, retornando H e uma máscara de valores atípicos internos.

Aplicar uma homografia em Python#

O OpenCV oferece operações separadas para estimar uma matriz e deformar uma imagem. Instale as dependências com pip install opencv-python numpy. Este exemplo mapeia o contorno retangular da imagem de amostra para um trapézio:

from urllib.request import urlopen

import cv2
import numpy as np

image_url = "https://ultralytics.com/images/bus.jpg"
with urlopen(image_url) as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_COLOR)
height, width = image.shape[:2]

# Mantenha a mesma ordem dos cantos no sentido horário em ambos os arrays.
source = np.float32([[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]])
target = np.float32([[120, 80], [width - 121, 80], [width - 1, height - 1], [0, height - 1]])
matrix, _ = cv2.findHomography(source, target)
warped = cv2.warpPerspective(image, matrix, (width, height))
cv2.imwrite("homography_result.jpg", warped)

A imagem salva mostra o encurtamento em perspectiva: sua borda superior é mais estreita, enquanto as bordas retas da cena continuam retas.

Onde a homografia é usada#

  • Processamento de documentos: A retificação da perspectiva mapeia os quatro cantos de um documento plano para um retângulo. Essa etapa de pré-processamento regulariza o layout do texto antes do reconhecimento óptico de caracteres, seguindo a mesma geometria de deformação planar demonstrada nos exemplos de correção de perspectiva do OpenCV.
  • Montagem de panoramas: Fotografias sobrepostas são alinhadas antes da mesclagem. O sistema Autostitch de Matthew Brown e David Lowe usa características locais correspondidas para automatizar a construção de panoramas, incluindo a identificação de imagens sobrepostas em coleções sem ordenação.

No Ultralytics YOLO, a ampliação RandomPerspective aplica deformações projetivas durante o treinamento, transformando imagens e suas caixas delimitadoras, contornos de segmentação e pontos-chave associados em conjunto. A configuração perspective controla o componente de perspectiva dessa ampliação de dados.

Uma única homografia relaciona exatamente as vistas ideais de uma câmera pinhole de um plano, ou as vistas capturadas ao girar uma câmera em torno do seu centro de projeção. Com a translação da câmera e objetos a diferentes profundidades, a paralaxe produz deslocamentos dependentes da profundidade. O alinhamento de um plano de fundo deixa os objetos em primeiro plano deslocados, criando bordas duplicadas ou efeitos fantasma nas imagens panorâmicas montadas.

A calibração da câmera corrige a distorção da lente, cuja geometria de imagem curva precisa ser corrigida antes do alinhamento planar. Em cenas tridimensionais gerais, a geometria epipolar restringe um ponto correspondente a uma linha; uma homografia prevê diretamente sua localização. Na visão estéreo, a posição restante ao longo da linha epipolar fornece informações de disparidade usadas para a estimativa de profundidade.

Explore solutions

Visão computacional no desporto

Visão computacional no desporto

Descubra como o Ultralytics YOLO impulsiona a visão computacional no esporte com rastreamento de jogadores e bolas, análise de desempenho, insights para treinadores e reabilitação de atletas.
Saiba mais
Visão computacional para imagens aéreas

Visão computacional para imagens aéreas

Transforma imagens de drones e aéreas em informações em tempo real para a agricultura, a aquacultura, a conservação e a análise geoespacial com Ultralytics YOLO.
Saiba mais
Visão computacional no setor aeroespacial

Visão computacional no setor aeroespacial

Aplica visão computacional na indústria aeroespacial com Ultralytics YOLO para inspecionar aeronaves, detetar objetos estranhos na pista (FOD), apoiar operações aeroportuárias em terra e detetar defeitos em materiais compósitos.
Saiba mais
Visão computacional na segurança

Visão computacional na segurança

Protege todas as instalações com os modelos Ultralytics YOLO. A IA visual permite monitorizar perímetros, detetar ameaças, reconhecer matrículas e melhorar a segurança no local de trabalho.
Saiba mais
Visão computacional na robótica

Visão computacional na robótica

Potencia máquinas mais inteligentes com os modelos Ultralytics YOLO. A IA visual na robótica permite navegação autónoma, perceção, rastreamento de objetos e controlo em tempo real.
Saiba mais
Visão computacional na logística

Visão computacional na logística

Otimize a logística com os modelos Ultralytics YOLO. A IA de visão permite inspecionar pacotes, fazer triagem, rastrear veículos e monitorar a segurança em tempo real nos armazéns.
Saiba mais
Visão computacional no varejo

Visão computacional no varejo

Reinvente o varejo com os modelos Ultralytics YOLO. A IA de visão permite rastrear o estoque, monitorar prateleiras, gerenciar filas e obter insights mais inteligentes sobre clientes.
Saiba mais
Visão computacional na área da saúde

Visão computacional na área da saúde

Desenvolva soluções de saúde com os modelos Ultralytics YOLO. A IA de visão na área da saúde permite obter imagens médicas mais rapidamente, diagnósticos mais inteligentes e monitoramento de pacientes.
Saiba mais
Visão computacional na manufatura

Visão computacional na manufatura

Otimize a manufatura com modelos Ultralytics YOLO. A IA visual impulsiona o controle de qualidade, a detecção de defeitos, a conformidade com o uso de EPI e a automação da linha de montagem.
Saiba mais
Visão computacional no setor automotivo

Visão computacional no setor automotivo

Aplique visão computacional no setor automotivo com modelos Ultralytics YOLO. A IA visual aumenta a segurança viária, aprimora a assistência ao condutor e viabiliza a automação de veículos para estradas mais inteligentes.
Saiba mais
Visão computacional na agricultura

Visão computacional na agricultura

Leve a IA de visão à agricultura inteligente com os modelos Ultralytics YOLO. Aprimore o monitoramento de plantações, o rastreamento de animais e a agricultura de precisão para obter safras maiores e mais inteligentes.
Saiba mais

Vamos construir juntos o futuro da IA!

Comece sua jornada rumo ao futuro do aprendizado de máquina