Pyramid Sliding Window

Applicazioni particolari di computer vision possono richiedere un’ispezione accurata di immagini con dimensioni e form factor differenti.

Il riconoscimento e la classificazione di oggetti non è sufficientemente efficace su immagini con risoluzione differenti. Per ovviare al problema è possibile standardizzare le dimensioni della finestra di ispezione facendola scorrere sull’immagine. L’algoritmo Sliding Windows è facilmente implementabile in python:

Questa operazione può essere eseguita più volte sulla stessa immagine modificandone altezza e larghezza, mantenendo comunque inalterato l’aspect ratio. Per fare questo è necessario un’algoritmo che provveda a ridurre le dimensioni dell’immagine, con un fattore di scala prefissato, fino al raggiungimento di una quota minima. Una funzione piramidale di questo tipo puoi scriverla così:

Per testare le due immagini su un’immagine demo (test.jpg in questo caso) basta aggiungere questo codice ed eseguire il sorgente:

L’immagine da utilizzare per il test va scelta con attenzione. I valori che ho utilizzato per la scala di ridimensionamento e il fattore di scorrimento sono bassi; per evitare che il test richieda tempi troppo lunghi utilizza un’immagine di piccole dimensioni.

Per eseguire il test hai bisogno di due librerie open che puoi installare con pip: OpenCV e imutils.

Il codice completo lo trovi su GitHub!