Spesso avrete sentito parlare di Rendering 3D, 3D Mapping, Object Tracking, Face Recognition, ma cosa vogliono dire questi termini?

Il futuro ci riserva ancora grandi sorprese, la visualizzazione e lo scanning in 3D degli oggetti sono concetti affascinanti e molto importanti per lo sviluppo delle prossime applicazioni che ci semplificheranno la vita. Avete presente le Smart Tv? Al giorno d’oggi sono attrezzate con qualsiasi tecnologia, anche se credo che quella che vi avrà stupito maggiormente sarà stata certamente quella del controllo del televisore tramite l’utilizzo della mano. Quando volete cambiare canale basta sollevare la mano, mostrarla al vostro televisore per poter interagire con funzioni come alzare/abbassare il volume o cambiare i canali.

238717A900000578-2850473-An_Israeli_based_firm_has_crated_a_smart_home_system_that_uses_g-44_1417016444179

Un’altro esempio: Il vostro Smartphone. Se avete un dispositivo Samsung avrete certamente provato almeno una volta la funzione “Standby intelligente” (Smart Stay); ebbene, questa funzione nasconde in realtà di un sistema speciale per la scansione degli occhi dell’utente che osserva il display. Quando si osserva lo smartphone il display non va mai in standby.

Probabilmente alcuni di voi giudicheranno molte di queste funzioni inutili, ma queste sono le applicazioni di una libreria importantissima per ogni sviluppatore, OpenCv.

Le possibilità di utilizzo di questa libreria sono pressoché illimitate e aperte all’abilità dello sviluppatore che dovrà programmare determinate funzioni. Questa tecnologia è utilizzata ormai ovunque, dal Kinect della vostra Xbox ai Robot più sofisticati (come quelli della Nasa). Molto spesso abbiamo sentito parlare di progetti per la scansione dell’iride (per proteggere i dati degli utenti), di Mappatura in 3D di stanze, ostacoli e molto altro, questa è la strada per il futuro, che ci porterà ad avere case controllate con semplici gesti, riconoscimento automatico degli sconosciuti, ma anche lo sviluppo di robot sempre migliori che ci aiuteranno nello svolgimento delle faccende quotidiane.

Ma come funziona OpenCV?

Il funzionamento di queste librerie è piuttosto complesso, anche se lo semplificheremo il più possibile per farvi capire quale processo viene impiegato per il riconoscimento di immagini e oggetti.

OpenCv è un’insieme di istruzioni programmate il C e C++. È un sistema Open Source e questo significa che è aperto a tutti (anche voi potreste utilizzarlo per i vostri progetti) ed è attualmente in versione 3.0 che supporta Android, IOS, Linux, Windows ed OSX.

Questo sistema consente di scansionare ogni singolo punto che compone un’immagine e riportarlo virtualmente sul computer, poi tramite un programma realizzato “su misura” è possibile identificare il tipo di oggetto scansionato.

convexity-detect

Alcuni degli ultimi progetti che utilizzano OpenCV sono questi:

Google Project Tango

Project Tango è un progetto molto interessante che consentirà ad ogni utente di fare una mappatura in 3D di stanze/oggetti in tempo reale grazie alla visione stereoscopica favorita dalle fotocamere poste sul retro del dispositivo. A questo punto si potrà parlare di realtà aumentata molto avanzata, perché Project Tango potrebbe inviare ogni scansione ad uno dei tanti prodotti per la realtà aumentata (Oculus Rift, Samsung Gear VR, Google Cardboard ecc) per consentire all’utente di vedere sui suoi occhiali le scansioni effettuate.

Se pensiamo alle applicazioni, questa soluzione potrebbe essere utilissima per operazioni chirurgiche a distanza o magari eseguite da un Robot (per essere ancora più precise).

ROS (Robot Operating System)

Ros è un framework sviluppato originariamente da Willow Garage, che racchiude in se tutte (o quasi) le librerie utilizzate dai moderni Robot per la scansione in 3D (OpenCv), la scansione sonora (Hark) ed il controllo dell’intero Robot con anche simulazioni (Roscore, Rviz, Gazebo ecc).

Anche Ros è un sistema aperto a tutti, anche se chiaramente l’utilizzo di queste librerie richiede di essere esperti in questo campo e soprattutto nella programmazione in C++.

Per saperne di più su Ros…

Kinect, Xtion…

Altri sistemi che sfruttano OpenCv sono le fotocamere per le console di gioco, come il Kinect che sfrutta le due fotocamere per la visone stereoscopica per tracciare i movimenti del nostro corpo (es. Skeleton Tracking). Oppure l’Xtion, che svolge la stessa funzione del Kinect orientata all’utilizzo sui computer.

Sistemi produttivi industriali

OpenCV viene utilizzato anche per la produzione di componenti elettrici, chip, processori e  molto altro. Si presta particolarmente per la produzione di componenti dove l’intervento dell’uomo non è necessario; dove è importante utilizzare Robot per la produzione di massa di attrezzature molto precise o complesse.

Vi lasciamo un video che mostra come vengono prodotti i processori dei moderni computer, un processo realizzato principalmente da Robot.

Interessante vero? È bello pensare al futuro con questi programmi, così scontati ma anche così importanti. La tecnologia come la vediamo noi è forse troppo chiusa e limitata al semplice Smartphone, Tablet o Computer; è molto interessante osservare come funziona ogni dispositivo che ci circonda.

Voi cosa ne pensate?