Licenciar o YOLO
Voltar ao glossário da Ultralytics

Scale-Invariant Feature Transform (SIFT)

A Transformada de características invariante à escala (SIFT) é um algoritmo clássico que encontra pontos-chave e cria descritores de 128 valores estáveis sob alterações de escala e rotação.

A Transformada de características invariante à escala (SIFT) é um algoritmo clássico de visão computacional que encontra pontos-chave locais distintos numa imagem e descreve cada um com um vetor de 128 números que permanece praticamente igual quando a imagem é redimensionada ou rodada. A correspondência entre estes descritores permite ao software associar duas fotografias da mesma cena tiradas de diferentes distâncias e ângulos, o que possibilita juntar fotografias sobrepostas num panorama. A SIFT é uma forma de extração de características concebida manualmente, ao contrário dos mapas de características aprendidos de uma rede neuronal convolucional.

Origem e ideia central#

David Lowe, da Universidade da Colúmbia Britânica, apresentou a SIFT no artigo do ICCV de 1999 Reconhecimento de objetos a partir de características locais invariantes à escala e apresentou o tratamento completo em "Características distintivas de imagem a partir de pontos-chave invariantes à escala", publicado no International Journal of Computer Vision em 2004. As características SIFT são invariantes à escala e à rotação, e correspondem de forma robusta numa ampla gama de distorções afins, alterações do ponto de vista 3D, ruído e alterações de iluminação. O método foi patenteado, e a patente expirou em 2020. A OpenCV transferiu a SIFT do seu repositório contrib para a biblioteca principal na versão 4.4.0.

Um objeto não tem um tamanho fixo numa fotografia, por isso, um detetor tem de procurar estruturas em todos os tamanhos. A SIFT cria um espaço de escalas aplicando repetidamente desfoque gaussiano com intensidades crescentes e reduzindo a resolução em grupos chamados oitavas.

Como funciona a SIFT#

O algoritmo é executado em quatro etapas:

  1. Deteção de extremos no espaço de escalas: As diferenças entre níveis de desfoque vizinhos (diferença de gaussianas) aproximam um detetor de regiões salientes. Um píxel é candidato se for o máximo ou o mínimo entre os seus 26 vizinhos no espaço e na escala.
  2. Localização dos pontos-chave: Os candidatos são refinados até à precisão subpíxel. Os pontos de baixo contraste e os pontos situados ao longo de arestas são descartados por serem instáveis.
  3. Atribuição da orientação: Um histograma das direções dos gradientes locais em torno de cada ponto-chave determina uma orientação dominante, e tudo o que se segue é medido em relação a ela. Isto garante invariância à rotação.
  4. Construção do descritor: A vizinhança é dividida numa grelha de 4 x 4, e cada célula contém um histograma de gradientes com 8 intervalos. Isso resulta em 4 x 4 x 8 = 128 valores, normalizados para reduzir a sensibilidade à iluminação.

A correspondência compara os descritores através da distância euclidiana. O teste da razão de Lowe mantém uma correspondência apenas quando o vizinho mais próximo está claramente mais perto do que o segundo mais próximo. Uma pesquisa de k vizinhos mais próximos com k = 2 fornece ambas as distâncias.

import cv2
from ultralytics.utils import ASSETS

# Load a sample image in grayscale and a half-size copy
img = cv2.imread(str(ASSETS / "bus.jpg"), cv2.IMREAD_GRAYSCALE)
small = cv2.resize(img, None, fx=0.5, fy=0.5)

# Detect keypoints and compute 128-dimensional descriptors
sift = cv2.SIFT_create()
kp1, des1 = sift.detectAndCompute(img, None)
kp2, des2 = sift.detectAndCompute(small, None)

# Match half-size descriptors to full-size ones, then apply Lowe's ratio test
pairs = cv2.BFMatcher().knnMatch(des2, des1, k=2)
good = [m for m, n in pairs if m.distance < 0.8 * n.distance]
print(f"{len(good)} of {len(kp2)} half-size keypoints matched at full size")

A contagem apresentada indica quantos pontos-chave encontrados à meia resolução são novamente reconhecidos na imagem em tamanho real, demonstrando a invariância à escala.

Aplicações#

A SIFT tornou-se a característica local padrão para tarefas de visão geométrica:

  • Costura de panoramas: O método de costura automática de panoramas de Brown e Lowe (IJCV 2007) associa características SIFT entre fotografias sobrepostas e estima uma homografia para as alinhar, numa etapa de alinhamento chamada registo de imagem.
  • Reconstrução 3D: Photo Tourism (Snavely, Seitz e Szeliski, 2006) associa características SIFT em fotografias turísticas e usa a geometria epipolar para recuperar as poses das câmaras e uma estrutura 3D esparsa.
  • Localização de robôs: Se, Lowe e Little (2001) usaram pontos de referência SIFT para a localização e o mapeamento de robôs móveis, um precursor do SLAM visual moderno.
  • Reconhecimento de instâncias: O artigo de Lowe de 2004 reconhece um comboio de brincar e uma rã numa cena desordenada e parcialmente ocluída com apenas 3 características correspondentes.

No rastreamento de objetos do Ultralytics YOLO, o BoT-SORT compensa o movimento da câmara entre fotogramas, e definir gmc_method: sift na configuração do rastreador usa correspondências SIFT para essa estimativa, em vez do fluxo ótico esparso padrão.

A SIFT associa os mesmos pontos físicos entre vistas, sendo adequada para correspondências e geometria. A deteção de objetos prevê, em vez disso, a categoria e a localização dos objetos. A correspondência de modelos desliza um recorte fixo e falha quando a escala ou a rotação muda.

A SIFT é lenta em comparação com a ORB, um descritor binário apresentado por Rublee e colegas em 2011 como alternativa à SIFT e à SURF. Também tem dificuldades com superfícies sem textura e alterações muito grandes do ponto de vista, e os modelos aprendidos substituíram-na, em grande medida, no reconhecimento ao nível da categoria.

Nos testes de Lowe de 2004, rejeitar correspondências com uma razão de distância superior a 0.8 eliminou 90% das correspondências falsas e descartou menos de 5% das corretas, em imagens com alterações aleatórias de escala e rotação, 30 graus de rotação em profundidade e 2% de ruído, comparadas com 40,000 pontos-chave.

Explore as soluções

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