Image Registration
La registrazione delle immagini allinea immagini della stessa scena in un unico sistema di coordinate, usando corrispondenze tra caratteristiche o somiglianza tra pixel e un modello di trasformazione.
La registrazione delle immagini è il processo di visione artificiale che allinea due o più immagini della stessa scena, in modo che ogni punto fisico corrisponda alle stesse coordinate pixel in tutte le immagini. Le immagini possono provenire da momenti, punti di vista o sensori diversi: un passaggio satellitare a gennaio e uno a giugno, una risonanza magnetica e una tomografia computerizzata dello stesso paziente oppure fotogrammi consecutivi ripresi da una telecamera instabile. Una volta registrate, le immagini possono essere confrontate pixel per pixel, fuse in un'unica vista o unite in un mosaico.
La registrazione designa un'immagine come fissa o di riferimento e trasforma l'altra, l'immagine mobile, per ricondurla al suo sistema di coordinate. Occorre scegliere tre elementi: come misurare l'allineamento tra le immagini, quale tipo di trasformazione geometrica consentire e come cercare quella ottimale. Una volta stimata la trasformazione, l'immagine mobile viene ricampionata e l'interpolazione calcola i valori dei pixel nelle nuove posizioni.
Metodi basati su caratteristiche e su intensità#
La registrazione basata sulle caratteristiche rileva punti distintivi, come angoli e macchie, in entrambe le immagini, li descrive con descrittori come ORB o SIFT e abbina i descrittori tra le immagini. I punti chiave abbinati forniscono coppie di posizioni corrispondenti; un estimatore robusto come RANSAC adatta una trasformazione scartando le corrispondenze errate. I metodi basati sulle caratteristiche sono rapidi e gestiscono spostamenti ampi, perciò sono la scelta più comune per unire panorami e mappare i percorsi dei droni. I metodi appresi di corrispondenza delle immagini li estendono a scene in cui i descrittori progettati a mano incontrano difficoltà. Questo esempio distorce una foto di prova applicando una rotazione, una variazione di scala e uno spostamento noti, poi recupera la trasformazione con OpenCV:
import cv2
import numpy as np
from skimage import data
# Fixed image, and a moving copy rotated 10 degrees, scaled 1.1x, and shifted (25, -15) pixels
fixed = data.camera()
warp = cv2.getRotationMatrix2D((256, 256), 10, 1.1)
warp[:, 2] += (25, -15)
moving = cv2.warpAffine(fixed, warp, (512, 512))
# Detect and match ORB features in both images
orb = cv2.ORB_create(1000)
kp_moving, des_moving = orb.detectAndCompute(moving, None)
kp_fixed, des_fixed = orb.detectAndCompute(fixed, None)
matches = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True).match(des_moving, des_fixed)
src = np.float32([kp_moving[m.queryIdx].pt for m in matches])
dst = np.float32([kp_fixed[m.trainIdx].pt for m in matches])
# Fit a similarity transform (rotation, scale, translation) with RANSAC, rejecting wrong matches
M, inliers = cv2.estimateAffinePartial2D(src, dst, method=cv2.RANSAC)
angle, scale = np.degrees(np.arctan2(M[1, 0], M[0, 0])), np.hypot(M[0, 0], M[1, 0])
print(f"Kept {inliers.sum()} of {len(matches)} matches: rotation {angle:.2f} degrees, scale {scale:.3f}")
# Resample the moving image into the fixed image's coordinates
registered = cv2.warpAffine(moving, M, (512, 512))
cv2.imwrite("registered.png", registered)Stampa Kept 497 of 567 matches: rotation 10.01 degrees, scale 0.910. La trasformazione stimata è l'inversa della distorsione applicata: una rotazione di 10 gradi in senso opposto e una scala di 1/1.1; registered.png si allinea alla foto originale nei punti in cui le due immagini si sovrappongono.
La registrazione basata sull'intensità non usa caratteristiche esplicite, ma confronta direttamente i valori dei pixel e modifica la trasformazione per massimizzare una misura di somiglianza. L'idea risale a Bruce Lucas e Takeo Kanade, il cui articolo del 1981 «Una tecnica iterativa di registrazione delle immagini con un'applicazione alla visione stereo» introdusse il metodo oggi usato anche per il flusso ottico. La correlazione è adatta alle immagini provenienti dallo stesso sensore; l'informazione mutua, introdotta per la registrazione medica a metà degli anni Novanta, gestisce modalità diverse, come una risonanza magnetica e una tomografia computerizzata, in cui lo stesso tessuto appare con luminosità diverse. Un ottimizzatore, spesso la discesa del gradiente su una piramide di immagini da grossolana a fine, cerca i parametri migliori; toolkit come il framework di registrazione SimpleITK espongono la metrica, l'ottimizzatore, la trasformazione e l'interpolatore come componenti separati.
I metodi di deep learning, come VoxelMorph, pubblicato da Guha Balakrishnan e dai colleghi nel 2019, addestrano una rete neurale convoluzionale a prevedere un campo di deformazione con un singolo passaggio in avanti, sostituendo l'ottimizzazione per ogni coppia, che richiede minuti o più, con una previsione che su una GPU richiede meno di un secondo.
Scegliere un modello di trasformazione#
La trasformazione deve corrispondere alle differenze effettive tra le immagini:
- Traslazione e rigida: spostamenti e, nel caso rigido, anche rotazione, mantenendo inalterate le distanze. Comune nelle scansioni dello stesso oggetto rigido.
- Similitudine e affine: la trasformazione di similitudine aggiunge una scala uniforme e quella affine aggiunge scale non uniformi e taglio, applicando un'unica trasformazione all'intera immagine. Adatte alle immagini satellitari acquisite con scale leggermente diverse.
- Proiettiva (omografia): modella i cambiamenti prospettici nelle scene planari o con telecamere in rotazione, come nella scansione di documenti e nei panorami.
- Deformabile: consente a ogni regione di muoversi indipendentemente, come richiesto dai tessuti molli che cambiano forma tra una scansione e l'altra.
I modelli più flessibili possono adattarsi a quasi qualsiasi cosa, comprese le variazioni reali che l’analisi dovrebbe rilevare; perciò, la registrazione in genere parte dal modello plausibile più semplice e aggiunge flessibilità solo dove rimangono errori di allineamento. Le scene con profondità e una telecamera in movimento mostrano una parallasse che nessuna singola trasformazione 2D può eliminare; per allinearle si ricorre invece alla geometria epipolare e alla ricostruzione 3D.
Dove si usa la registrazione#
Nel telerilevamento e nell'analisi delle immagini satellitari, la registrazione è il primo passaggio del rilevamento dei cambiamenti: le immagini della stessa area acquisite a distanza di mesi devono essere allineate prima che un modello possa segnalare nuove costruzioni o aree disboscate, altrimenti anche un lieve spostamento sembrerà un cambiamento lungo ogni bordo stradale. Nell'analisi delle immagini mediche, allineare scansioni di visite diverse permette ai medici di misurare la crescita di un tumore; allineare PET e tomografia computerizzata combina l'attività metabolica con l'anatomia; registrare un atlante etichettato su una nuova scansione trasferisce le etichette anatomiche, una tecnica classica per la segmentazione delle immagini delle strutture cerebrali.
Le applicazioni video registrano i fotogrammi consecutivi per stimare il movimento della telecamera. La stabilizzazione rimuove tale movimento; i tracker lo usano per evitare di confondere il movimento della telecamera con quello degli oggetti. Il tracker TrackTrack predefinito nel tracciamento degli oggetti di Ultralytics YOLO registra ogni fotogramma rispetto al precedente seguendo le caratteristiche degli angoli con flusso ottico sparso a metà risoluzione e adattando una trasformazione di similitudine con RANSAC. In questo modo mantiene le tracce associate agli oggetti corretti ripresi da una telecamera montata su un drone o su un veicolo.










