Giandomenico's page
home

Una libreria DLL per l'algoritmo SIFT

Questo archivio ZIP contiene una libreria DLL per l'algoritmo SIFT, che usa la OpenCV per implementarlo. Ho adattato il codice originale di Rob Hess: http://web.engr.oregonstate.edu/~hess/ che fornisce una serie di librerie C statiche e 3 programmi di esempio. Ho pensato che avere una libreria DLL con il SIFT sia un'ottima cosa, ed in particolare un buon completamento della OpenCV. La DLL puo infatti essere usata da C come anche da altri linguaggi, quali Delphi, Visual Basic, i linguaggi di .Net, ecc. Nell'archivio la directory BIN contiene DLL e programmi precompilati. La directory LIB contiene la libreria statica .lib, la directory INCLUDE contiene l'header C siftDLL.h . La directory SOURCES contiene i sorgenti in forma di progetti per Visual C++ 6.0 . Da ricordare la limitazione di licenza per la SIFT (come indicato da Rob Hess): "The SIFT algorithm is Patented in the U.S. by the University of British Columbia. Thus, the SIFT feature detection code in this package may not be used in any commercial products without permission from UBC. All other code in this package is Licensed under the GPLv2. See the files LICENSE.ubc.txt and LICENSE.txt for more info."



Esempi di uso della libreria OpenCV

Il primo programma e' la versione in Delphi 6 del programma CamShiftdemo di esempio per la libreria Open Computer Vision (OpenCV), originariamente scritto in C. Le strutture e funzioni dichiarate nello header della libreria sono tradotte in Delphi solamente nella parte interessata da questo programma. Ho provato il programma con una webcam economica (Genius), ed anche con una telecamera a colori senza fili, con il ricevitore connesso ad una scheda tv dotata di funzione di cattura (Hauppage WinTv PCI). Il programma funziona bene con entrambe le telecamere.
Sono possibili questi comandi:

  • Selezione con il mouse: premere il tasto sinistro e selezionare un'area dell'immagine colorata in modo nitido. Il programma identifica l'area con una ellisse rossa, e poi cerca di mantenere l'ellisse centrata sull'area colorata quando la telecamera viene mossa
  • Tasto C: cancella la selezione
  • Tasto H: visualizza una finestra con l'istogramma dei colori
  • Tasto B: alterna l'immagine normale con una immagine filtrata in bianco e nero


 
Image of Camshiftdemo   Image of Camshiftdemo 2


Il secondo esempio e' la versione in Delphi 6 di Lkdemo. Questo programma e' una demo per l'algoritmo di tracciamento dei punti significativi (spigoli). Viene mostrato come marcare i punti iniziali nell'immagine e come tracciare questi punti durante i movimenti.
Comandi del programma:

  • Mouse click su un punto significativo: segna uno spigolo nell'immagine, se esiste nel punto indicato
  • tasto R: marca tutti gli spigoli rilevanti nell'immagine
  • tasto C: cancella tutti gli spigoli


 
Image of Lkdemo

 

Mail contact