1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image...

47
2 Problema iniziale: Problema iniziale: Esecuzione di algoritmi di Esecuzione di algoritmi di visione artificiale visione artificiale su sistema mobile su sistema mobile Visilab – Computer Vision and Image Processing Lab University of Messina - Italy Nanodesktop tecnology Librerie Intel OpenCV disponibili solo per sistemi operativi Librerie Intel OpenCV disponibili solo per sistemi operativi piattaforma x86 (Windows, Linux, FreeBSD) piattaforma x86 (Windows, Linux, FreeBSD) Necessità di elevate prestazioni del processore nei calcoli Necessità di elevate prestazioni del processore nei calcoli in virgola mobile in virgola mobile Necessità di elevate prestazioni dell’hardware (memory Necessità di elevate prestazioni dell’hardware (memory bandwidth, video acceleration) bandwidth, video acceleration)

Transcript of 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image...

Page 1: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

22

Problema iniziale: Problema iniziale:

Esecuzione di algoritmi di visione artificialeEsecuzione di algoritmi di visione artificiale

su sistema mobilesu sistema mobile

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Librerie Intel OpenCV disponibili solo per sistemi operativi per Librerie Intel OpenCV disponibili solo per sistemi operativi per piattaforma x86 (Windows, Linux, FreeBSD)piattaforma x86 (Windows, Linux, FreeBSD)

Necessità di elevate prestazioni del processore nei calcoliNecessità di elevate prestazioni del processore nei calcoliin virgola mobilein virgola mobile

Necessità di elevate prestazioni dell’hardware (memoryNecessità di elevate prestazioni dell’hardware (memorybandwidth, video acceleration) bandwidth, video acceleration)

Page 2: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

33

OpenCVOpenCV Sono le librerie open source più comuni per l’esecuzione diSono le librerie open source più comuni per l’esecuzione di

algoritmi di visione artificiale.algoritmi di visione artificiale. Rilasciate da Intel come OSS sotto licenza BSD (BerkeleyRilasciate da Intel come OSS sotto licenza BSD (Berkeley

Software License)Software License)

http://sourceforge.net/projects/opencvlibrary/http://sourceforge.net/projects/opencvlibrary/

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 3: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

44

Eseguire le librerie OpenCV su un Eseguire le librerie OpenCV su un

palmare ?palmare ?

Processori ARM (Advanced RISC Machine) come Intel XScaleProcessori ARM (Advanced RISC Machine) come Intel XScale

ottimizzati per calcoli a precisione fissa ottimizzati per calcoli a precisione fissa Supporto VFP, NEON (SIMD) disponibile solo nei modelli piùSupporto VFP, NEON (SIMD) disponibile solo nei modelli più

avanzati e costosi (core ARM11, processori CORTEX)avanzati e costosi (core ARM11, processori CORTEX) Spesso un solo processore disponibileSpesso un solo processore disponibile Mancanza di uno standard comune a tutti i palmariMancanza di uno standard comune a tutti i palmari

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 4: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

55

Approccio sperimentale: Approccio sperimentale:

Usare la potenza di calcolo di una Usare la potenza di calcolo di una consoleconsole

per videogiochi portatile per eseguire per videogiochi portatile per eseguire algoritmi di visione artificialealgoritmi di visione artificiale

Il nostro è il primo tentativo su piattaforma mobileIl nostro è il primo tentativo su piattaforma mobile

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 5: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

66

VantaggiVantaggi

Le società produttrici dotano tali device di processori molto Le società produttrici dotano tali device di processori molto sofisticati e specializzati nei calcoli in virgola mobile, di acceleratori sofisticati e specializzati nei calcoli in virgola mobile, di acceleratori grafici 2D/3D e di memorie molto veloci, allo scopo di assicurare grafici 2D/3D e di memorie molto veloci, allo scopo di assicurare l’esecuzione dei più moderni videogiochi l’esecuzione dei più moderni videogiochi

L’hardware viene venduto a costi accessibili a causa dell’ampia L’hardware viene venduto a costi accessibili a causa dell’ampia diffusione e della concorrenza tra i vendor (Sony vende addiritturadiffusione e della concorrenza tra i vendor (Sony vende addirittura

sottocosto la propria console per reggere la concorrenza del sottocosto la propria console per reggere la concorrenza del Nintendo DS)Nintendo DS)

Le console per videogiochi sono ampiamente diffuse, accessibili, e Le console per videogiochi sono ampiamente diffuse, accessibili, e facilmente acquistabili dagli utenti finalifacilmente acquistabili dagli utenti finali

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 6: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

77

Sony Playstation Portable (PSP)Sony Playstation Portable (PSP)

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

La più potente console portatile mai realizzata

Page 7: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

88

Caratteristiche hardware della PSPCaratteristiche hardware della PSP Architettura Dual Processor 128-bit:Architettura Dual Processor 128-bit: Processore centrale MIPS R4000 (RISC) a 333 MhzProcessore centrale MIPS R4000 (RISC) a 333 Mhz istruzioni FP, Allegrex (SIMD)istruzioni FP, Allegrex (SIMD) Processore secondario MediaEngine CXD5026 a 333Processore secondario MediaEngine CXD5026 a 333 Mhz (funzionalità DSP, decodifica audio/video, Mhz (funzionalità DSP, decodifica audio/video, programmabile per l’esecuzione di programmi custom)programmabile per l’esecuzione di programmi custom) Unità VFPU (potenza di calcolo 2,6 Gflops/sec., 128Unità VFPU (potenza di calcolo 2,6 Gflops/sec., 128 registri in virgola mobile a 32 bit, capacità di calcoloregistri in virgola mobile a 32 bit, capacità di calcolo matriciale, trigonometrico e logaritmico, funzionalità matriciale, trigonometrico e logaritmico, funzionalità

SIMD)SIMD) Memoria DRAM 32 o 64 MbMemoria DRAM 32 o 64 Mb Accelerazione grafica 2D/3DAccelerazione grafica 2D/3D Supporto WIFI IEEE-802.11, USB, IRDASupporto WIFI IEEE-802.11, USB, IRDA

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 8: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

99

ProblemiProblemi

Nessun supporto da parte di Sony per sviluppatori nonNessun supporto da parte di Sony per sviluppatori non affiliatiaffiliati Nessun SDK ufficiale fornito da SonyNessun SDK ufficiale fornito da Sony Architettura totalmente diversa da quella di un PCArchitettura totalmente diversa da quella di un PC Sistema operativo dedicato (PSP-OS), incompatibileSistema operativo dedicato (PSP-OS), incompatibile con standard Unix e Posixcon standard Unix e Posix Nessun ambiente a finestre fornito dal sistema operativoNessun ambiente a finestre fornito dal sistema operativo

Unico strumento a disposizione degli sviluppatori eraUnico strumento a disposizione degli sviluppatori eraIl PSPSDK (www.ps2dev.org)Il PSPSDK (www.ps2dev.org)

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 9: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1010

Problemi programmazione PSPSDKProblemi programmazione PSPSDK

Libreria libc non standardLibreria libc non standard Non conformità linguaggio C con gli standard ANSINon conformità linguaggio C con gli standard ANSI Mancanza di un ambiente grafico a finestreMancanza di un ambiente grafico a finestre Nessuna integrazione con un IDENessuna integrazione con un IDE Nessun emulatore su PCNessun emulatore su PC Nessun supporto per VFPUNessun supporto per VFPU NID change trouble: interazione tra codice e diverse NID change trouble: interazione tra codice e diverse

versioni del firmwareversioni del firmware

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 10: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1111

Un Hello world sul PSPSDK (parte 1)Un Hello world sul PSPSDK (parte 1)#include <pspdebug.h>#include <pspdebug.h>

#include <pspkernel.h>#include <pspkernel.h>

PSP_MODULE_INFO("Hello World", 0, 1, 1);PSP_MODULE_INFO("Hello World", 0, 1, 1);

/* Exit callback *//* Exit callback */

int exit_callback(int arg1, int arg2, void *common) int exit_callback(int arg1, int arg2, void *common)

{{sceKernelExitGame();sceKernelExitGame();

return 0;return 0;

}}

/* Callback thread *//* Callback thread */

int CallbackThread(SceSize args, void *argp) int CallbackThread(SceSize args, void *argp)

{{int cbid;int cbid;

cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);

sceKernelRegisterExitCallback(cbid);sceKernelRegisterExitCallback(cbid);

sceKernelSleepThreadCB();sceKernelSleepThreadCB();

return 0;return 0;

}}

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 11: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1212

Un Hello world sul PSPSDK (parte 2)Un Hello world sul PSPSDK (parte 2)/* Sets up the callback thread and returns its thread id *//* Sets up the callback thread and returns its thread id */

int Setupcallback(void)int Setupcallback(void)

{{int thid = 0;int thid = 0;

thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);

if(thid >= 0)if(thid >= 0)

{{

sceKernelStartThread(thid, 0, 0);sceKernelStartThread(thid, 0, 0);

}}

return thid;return thid;

}}

int main() int main()

{{Setupcallback();Setupcallback();

pspDebugScreenInit();pspDebugScreenInit();

pspDebugScreenPrintf("Hello, world!\n");pspDebugScreenPrintf("Hello, world!\n");

sceKernelSleepThread();sceKernelSleepThread();

return 0;return 0;

}}

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 12: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1313

Sono necessarie 40 righe di codice per un semplice Sono necessarie 40 righe di codice per un semplice

““Hello world”Hello world”

Il nostro programma C non risponde agli standard ANSIIl nostro programma C non risponde agli standard ANSI

(manca la printf !!!!)(manca la printf !!!!)

Il problema dello sviluppo di ambienti compatibili con ilIl problema dello sviluppo di ambienti compatibili con il

normale codice C ed in grado di facilitare la creazione dinormale codice C ed in grado di facilitare la creazione di

homebrew per PSP, era considerata questione centrale homebrew per PSP, era considerata questione centrale

su tutti i forum per programmazione PSP su tutti i forum per programmazione PSP del mondodel mondo

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 13: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1414

Sviluppiamo un nostro SDK per la programmazione diSviluppiamo un nostro SDK per la programmazione di

sistemi embeddedsistemi embedded

NanodesktopNanodesktop

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 14: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1515

Caratteristiche di Nanodesktop (1)Caratteristiche di Nanodesktop (1)

Piena integrazione con l’IDE Dev-C++Piena integrazione con l’IDE Dev-C++ Supporto per lo pseudoemulatore MIPS PSPESupporto per lo pseudoemulatore MIPS PSPE Compatibilità ANSI C e C++Compatibilità ANSI C e C++ Supporto libm IEEE754. Accelerazione matematica inSupporto libm IEEE754. Accelerazione matematica in

hardware via VFPU (EMI, EMIEMU, ndHAL_XFPU)hardware via VFPU (EMI, EMIEMU, ndHAL_XFPU) Architettura HAL-basedArchitettura HAL-based Supporto tastiere virtualiSupporto tastiere virtuali Accesso al disco con cache write backAccesso al disco con cache write back Sistema grafico accelerato in hardware Phoenix Sistema grafico accelerato in hardware Phoenix

(NanoTile acceleration)(NanoTile acceleration)

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 15: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1616

Caratteristiche di Nanodesktop (2)Caratteristiche di Nanodesktop (2)

Il sistema grafico supportaIl sistema grafico supporta Routines grafiche di disegnoRoutines grafiche di disegno Char overscreenChar overscreen Font TrueTypeFont TrueType Wallpaper e trasparenzeWallpaper e trasparenze Pulsanti, Textbox, TextArea, ListBox, CheckBox, Pulsanti, Textbox, TextArea, ListBox, CheckBox,

TrackBar, ProgressBar, Windows menuTrackBar, ProgressBar, Windows menu Icone e classi di file Icone e classi di file Caricamento e salvataggio di 12 formati grafici distintiCaricamento e salvataggio di 12 formati grafici distinti

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 16: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1717

Caratteristiche di Nanodesktop (3)Caratteristiche di Nanodesktop (3)

Sistema audio: supporta 8 canali hardware PCM conSistema audio: supporta 8 canali hardware PCM con

frequenze tra 8000 e 48000 Hz (interpolazione eseguitafrequenze tra 8000 e 48000 Hz (interpolazione eseguita

via software ove la piattaforma non supporti la via software ove la piattaforma non supporti la

funzionalità)funzionalità) Decodifica assistita in hardware di file WAVE e MP3Decodifica assistita in hardware di file WAVE e MP3 USB: Supporto per Sony GoCam e per qualsiasi USB: Supporto per Sony GoCam e per qualsiasi

webcam via Eyeserver tecnology (ndUsbDriver.Prx)webcam via Eyeserver tecnology (ndUsbDriver.Prx) Interfaccia per il controllo di dispositivi hardwareInterfaccia per il controllo di dispositivi hardware

via infrarossi (RawIR, IRDA)via infrarossi (RawIR, IRDA)

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 17: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1818

Caratteristiche di Nanodesktop (4)Caratteristiche di Nanodesktop (4)

Supporto compressione/decompressione dei file ZIPSupporto compressione/decompressione dei file ZIP Funzionalità di connessione di rete Wi-Fi (IEEE802.11)Funzionalità di connessione di rete Wi-Fi (IEEE802.11) Supporto funzionalità standard di reteSupporto funzionalità standard di rete Supporto libreria Curl e ndGCurl per trasferimento fileSupporto libreria Curl e ndGCurl per trasferimento file Monitor di rete integratoMonitor di rete integrato Capacità VOIP (ndOSIP, ndeXOSIP, ndRTP)Capacità VOIP (ndOSIP, ndeXOSIP, ndRTP)

Quest’ultima caratteristica viene usata nel nuovo softwareQuest’ultima caratteristica viene usata nel nuovo software

di telefonia cellulare VOIP per PSP ndFurikupdi telefonia cellulare VOIP per PSP ndFurikup

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 18: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

1919

Qualche dato su NanodesktopQualche dato su Nanodesktop

Un SDK sviluppato totalmente in Italia, nell’Università di Un SDK sviluppato totalmente in Italia, nell’Università di MessinaMessina

2 anni di sviluppo2 anni di sviluppo 100 Mb di codice sorgente100 Mb di codice sorgente La Nanodesktop distribution contiene 450 Mb di La Nanodesktop distribution contiene 450 Mb di

sorgenti, documentazione, demo, binarisorgenti, documentazione, demo, binari 1.900.000 righe di codice1.900.000 righe di codice Le applicazioni nd hanno ricevuto svariati articoli sui siti Le applicazioni nd hanno ricevuto svariati articoli sui siti

psp-ita, QJ (USA), maxconsole (ENG), scene-beta (SPA), psp-ita, QJ (USA), maxconsole (ENG), scene-beta (SPA), psp-freaks (GER), planete-psp (FRA)psp-freaks (GER), planete-psp (FRA)

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 19: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2020

La tecnologia alla base di Nanodesktop consente di portareLa tecnologia alla base di Nanodesktop consente di portare

su dispositivi handheld librerie di tipo scientificosu dispositivi handheld librerie di tipo scientifico

universitario che erano state progettate per girare suuniversitario che erano state progettate per girare su

piattaforma x86. piattaforma x86.

L’interfaccia ndHAL_XFPU è in grado di usare le unitàL’interfaccia ndHAL_XFPU è in grado di usare le unità

dedicate della PSP (VFPU) parallelizzando l’algoritmo in dedicate della PSP (VFPU) parallelizzando l’algoritmo in

più flussi di esecuzione distinti. più flussi di esecuzione distinti.

Il sistema grafico compatto ed efficiente, che rinuncia allaIl sistema grafico compatto ed efficiente, che rinuncia alla

retrocompatibilità con le API grafiche di Windows e di X,retrocompatibilità con le API grafiche di Windows e di X,

consente di sfruttare ogni ciclo di clock del dispositivo.consente di sfruttare ogni ciclo di clock del dispositivo.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 20: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2121

Le caratteristiche di Nanodesktop hanno consentito diLe caratteristiche di Nanodesktop hanno consentito di

portare diverse tecnologie sviluppate da svariate portare diverse tecnologie sviluppate da svariate

Università e centri di ricerca su piattaforma PSP. Università e centri di ricerca su piattaforma PSP.

In questo modo, non solo abbiamo aperto il progettoIn questo modo, non solo abbiamo aperto il progetto

a centri di ricerca esteri, ma abbiamo anche ottenutoa centri di ricerca esteri, ma abbiamo anche ottenuto

un ambiente di sviluppo per piattaforma mobile unicoun ambiente di sviluppo per piattaforma mobile unico

del suo genere. del suo genere.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 21: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2222

In particolare, sono state portate le librerie:In particolare, sono state portate le librerie:

ndOpenCVndOpenCV

Per gli algoritmi di visione artificialePer gli algoritmi di visione artificiale

ndFLitendFLite

Un motore di sintesi vocale sperimentale sviluppato dalUn motore di sintesi vocale sperimentale sviluppato dal

Dr. Alan Black della Carnegie Mellon UniversityDr. Alan Black della Carnegie Mellon University

ndGOCR/ndOCRADndGOCR/ndOCRAD

Due motori OCR open-source. Il porting di Tesseract èDue motori OCR open-source. Il porting di Tesseract è

in corso. in corso.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 22: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2323

ndISpellndISpell

Un correttore ortografico rilasciato da GNUUn correttore ortografico rilasciato da GNU

ndSIFTndSIFT

Scalar Image Feature Transform: una tecnologia per ilScalar Image Feature Transform: una tecnologia per il

riconoscimento di oggetti e di luoghi ideata da David Lowericonoscimento di oggetti e di luoghi ideata da David Lowe

ed implementata dal Dr.R.Hess presso l’Oregon Stateed implementata dal Dr.R.Hess presso l’Oregon State

University. Per la prima volta gira su PSP. University. Per la prima volta gira su PSP.

ndSQLLitendSQLLite

Per l’accesso ai file databasePer l’accesso ai file database

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 23: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2424

Diamo ora un’occhiata alla Nanodesktop ArchitectureDiamo ora un’occhiata alla Nanodesktop Architecture

(rev. 4). (rev. 4).

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 24: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2525Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 25: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2626

Attualmente, Nanodesktop supporta 4 HAL:Attualmente, Nanodesktop supporta 4 HAL:

HAL PSPEHAL PSPEConsente la programmazione sull’emulatore per PC PSPEConsente la programmazione sull’emulatore per PC PSPE

HAL_PSPHAL_PSPConsente di programmare la vera PSP (senza USB e IR)Consente di programmare la vera PSP (senza USB e IR)

HAL_KSU_PSPHAL_KSU_PSPCompatibile con il firmware 1.50 Sony. Supporta le funzioni Raw-IR, Compatibile con il firmware 1.50 Sony. Supporta le funzioni Raw-IR,

USB, NetworkUSB, Network

HAL_CFW_PSPHAL_CFW_PSPCompatibile con i custom firmware serie 3.XX. Supporta USB, IRDA, Compatibile con i custom firmware serie 3.XX. Supporta USB, IRDA,

Raw-IR, MP3, WAV, Network, GoCamRaw-IR, MP3, WAV, Network, GoCam

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 26: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2727

Ogni HAL ha una sua struttura interna specificaOgni HAL ha una sua struttura interna specifica

HAL PSPEHAL PSPE HAL PSP HAL PSP

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

HAL KSUHAL KSU HAL CFW HAL CFW

Page 27: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2828

Tra l’HAL ed il livello applicativo CODE si pongonoTra l’HAL ed il livello applicativo CODE si pongono

le librerie NanoC, NanoCPP e NanoM che fornisconole librerie NanoC, NanoCPP e NanoM che forniscono

la compatibilità con gli standard ANSI ed ISO la compatibilità con gli standard ANSI ed ISO

consentendo la programmazione della piattaforma conconsentendo la programmazione della piattaforma con

il normale codice C. il normale codice C.

Questi tre componenti costituiscono il livello Questi tre componenti costituiscono il livello NanoCoreNanoCore

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 28: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

2929

Al di sopra di HAL e NanoCore si pone il livello CODE,Al di sopra di HAL e NanoCore si pone il livello CODE,

che contiene il codice indipendente dalla piattaformache contiene il codice indipendente dalla piattaforma

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 29: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3030

Nanodesktop integra un sistema grafico acceleratoNanodesktop integra un sistema grafico accelerato

multithreading con event manager di tipo multithreading con event manager di tipo message passingmessage passing

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 30: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3131

Nanodesktop è in grado di prelevare dati da unaNanodesktop è in grado di prelevare dati da una

webcam (GoCam o via Eyeserver)webcam (GoCam o via Eyeserver)

Inoltre, integra funzioni di acquisizione audio cheInoltre, integra funzioni di acquisizione audio che

consentono la registrazioni di suoni consentono la registrazioni di suoni

Sono già usate dall’applicazione Nanodesktop Audio RecorderSono già usate dall’applicazione Nanodesktop Audio Recorder

e verranno usate nella prossima tecnologia ndPocketSphynx,e verranno usate nella prossima tecnologia ndPocketSphynx,

che consentirà l’uso di un sistema di comando a riconoscimentoche consentirà l’uso di un sistema di comando a riconoscimento

vocale su piattaforma embedded in ambiente Nanodesktopvocale su piattaforma embedded in ambiente Nanodesktop

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 31: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3232

Possiede inoltre capacità di rete: ndGCurl permette diPossiede inoltre capacità di rete: ndGCurl permette di

scaricare un file da internet in modo simile a come siscaricare un file da internet in modo simile a come si

fa su Windowsfa su Windows

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 32: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3333

Questo è un Hello World equivalente sotto NanodesktopQuesto è un Hello World equivalente sotto Nanodesktop

#include <nanodesktop.h>#include <nanodesktop.h>

int ndMain ()int ndMain ()

{{

ndInitSystem ();ndInitSystem ();

printf (“Hello world \n”);printf (“Hello world \n”);

}}

Questo codice funzionerà, identico, su qualsiasi piattaformaQuesto codice funzionerà, identico, su qualsiasi piattaforma

supportata da ndsupportata da nd

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 33: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3434

Tramite Nanodesktop, abbiamo dunque la possibilità diTramite Nanodesktop, abbiamo dunque la possibilità diutilizzare un ambiente a finestre per la PSP. utilizzare un ambiente a finestre per la PSP.

Il passo successivo, è consistito nella realizzazione diIl passo successivo, è consistito nella realizzazione diuna reimplementazione del componente HighGUI diuna reimplementazione del componente HighGUI diIntel. Intel.

ndHighGUI è in grado di visualizzare su nd un immagine ndHighGUI è in grado di visualizzare su nd un immagine IPL (OpenCV) dopo l’elaborazione da parte degli algoritmiIPL (OpenCV) dopo l’elaborazione da parte degli algoritmidi visione artificiale. Le funzioni di ndHighGUI sonodi visione artificiale. Le funzioni di ndHighGUI sonoanaloghe alle corrispondenti della versione per x86.analoghe alle corrispondenti della versione per x86.

Il codice sorgente è stato invece completamente riscritto.Il codice sorgente è stato invece completamente riscritto.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 34: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3535

Stiamo eseguendo le OpenCV su un dispositivo portatileStiamo eseguendo le OpenCV su un dispositivo portatile

come la PSP !come la PSP !

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 35: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3636

L’idea è stata quella di usare tutte queste tecnologie inL’idea è stata quella di usare tutte queste tecnologie in

un’applicazione di assistenza ai non vedentiun’applicazione di assistenza ai non vedenti

In questo modo, avrebbero potuto accedere a delleIn questo modo, avrebbero potuto accedere a delle

tecnologie avanzate di visione artificiale al costo di tecnologie avanzate di visione artificiale al costo di

acquisto di una semplice PSP. acquisto di una semplice PSP.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 36: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3737

Blind AssistantBlind Assistant

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 37: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3838Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 38: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

3939

Blind Assistant fornisce le seguenti funzionalità:Blind Assistant fornisce le seguenti funzionalità:

Face Detection e Recognition: Face Detection e Recognition:

è in grado di indicare al non vedente la posizione eè in grado di indicare al non vedente la posizione e

l’identità di un individuo inquadrato dalla webcam GoCaml’identità di un individuo inquadrato dalla webcam GoCam

Per fare questo, fa uso dell’algoritmo di Viola-JonesPer fare questo, fa uso dell’algoritmo di Viola-Jones

per la face detection, seguito dall’algoritmo di PentLandper la face detection, seguito dall’algoritmo di PentLand

di face recognition. di face recognition.

Nelle nostre prove il sistema ha riconosciuto il viso Nelle nostre prove il sistema ha riconosciuto il viso

in più dell’85% dei casi in più dell’85% dei casi

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 39: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4040

L’algoritmo di PentLand (PCA) cerca di descrivere unaL’algoritmo di PentLand (PCA) cerca di descrivere una

immagine come una combinazione lineare di n vettoriimmagine come una combinazione lineare di n vettori

immagine noti (EigenFaces). Un particolare processoimmagine noti (EigenFaces). Un particolare processo

matematico consente di ridurre la dimensionalità delmatematico consente di ridurre la dimensionalità del

problema. problema.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Il viso di appartenenza viene individuato attraverso Il viso di appartenenza viene individuato attraverso un meccanismo minimum distance nel face spaceun meccanismo minimum distance nel face space

Page 40: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4141

Place recognitionPlace recognition

Blind Assistant è in grado di riconoscere il luogo inBlind Assistant è in grado di riconoscere il luogo in

cui il cieco si trova. Per fare questo, esso si appoggiacui il cieco si trova. Per fare questo, esso si appoggia

ad un server che gira su x86 chiamato BlindServer,ad un server che gira su x86 chiamato BlindServer,

il quale esegue l’algoritmo SIFT (Scalar Imageil quale esegue l’algoritmo SIFT (Scalar Image

Feature Transform) ed invia i risultati all’unità mobileFeature Transform) ed invia i risultati all’unità mobile

attraverso la rete wirelessattraverso la rete wireless

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 41: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4242

Nelle nostre prove, il sistema è riuscito a riconoscereNelle nostre prove, il sistema è riuscito a riconoscere

il luogo in più del 70% dei casi.il luogo in più del 70% dei casi.

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 42: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4343

OCR OCR

Blind Assistant è in grado di leggere un testo al nonBlind Assistant è in grado di leggere un testo al non

vedente. Questo inquadra il testo con la GoCam...vedente. Questo inquadra il testo con la GoCam...

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 43: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4444

Il sistema supporta due motori di riconoscimento ottico:Il sistema supporta due motori di riconoscimento ottico:Tesseract, Tesseract, il noto software sviluppato dalla Google Foundation;il noto software sviluppato dalla Google Foundation;

ndOcrad, ndOcrad, il software sviluppato da Antonio Diaz e rilasciato sotto GPLil software sviluppato da Antonio Diaz e rilasciato sotto GPL

Blind Assistant fa uso di un algoritmo di correzione deiBlind Assistant fa uso di un algoritmo di correzione dei

termini errati che si appoggia su un dizionario. Anchetermini errati che si appoggia su un dizionario. Anche

questa tecnologia di correzione è stata sviluppata alquesta tecnologia di correzione è stata sviluppata al

Visilab.Visilab.

Il testo viene sintetizzato in tempo reale e letto dalla PSPIl testo viene sintetizzato in tempo reale e letto dalla PSP

al cieco. Quando si usa Tesseract, il sistema ha un rateal cieco. Quando si usa Tesseract, il sistema ha un rate

di riconoscimento superiore al 90%di riconoscimento superiore al 90%

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 44: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4545

Il Visilab ha dedicato a Nanodesktop uno spazio sulIl Visilab ha dedicato a Nanodesktop uno spazio sul

proprio sito Internet:proprio sito Internet:http://visilab.unime.it/~filippo/Nanodesktop/nanodesktop.htmhttp://visilab.unime.it/~filippo/Nanodesktop/nanodesktop.htm

Psp-Ita ospita il forum di assistenza tecnicaPsp-Ita ospita il forum di assistenza tecnicahttp://www.psp-ita.com/forum/http://www.psp-ita.com/forum/

La fondazione Wikipedia ha dedicato una pagina all’SDKLa fondazione Wikipedia ha dedicato una pagina all’SDKhttp://it.wikipedia.org/wiki/Nanodesktophttp://it.wikipedia.org/wiki/Nanodesktop

Attualmente, sia in Italia che negli Stati Uniti diversiAttualmente, sia in Italia che negli Stati Uniti diversi

sviluppatori stanno lavorando su applicazioni nd compatibilisviluppatori stanno lavorando su applicazioni nd compatibili

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 45: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4646

Gli sviluppatori possono fare riferimento allaGli sviluppatori possono fare riferimento alla

Nanodesktop User GuideNanodesktop User Guidehttp://visilab.unime.it/~filippo/Nanodesktop/PSP_PSPE/Docs/Docs.htmhttp://visilab.unime.it/~filippo/Nanodesktop/PSP_PSPE/Docs/Docs.htm

L’ultima versione dell’SDK (0.3.4) è scaricabile qui [*]L’ultima versione dell’SDK (0.3.4) è scaricabile qui [*]http://visilab.unime.it/~filippo/Nanodesktop/PSP_PSPE/Downloads/Downloads.htmhttp://visilab.unime.it/~filippo/Nanodesktop/PSP_PSPE/Downloads/Downloads.htm

[*] o da uno dei mirror che si occupano del progetto in Italia o in USA[*] o da uno dei mirror che si occupano del progetto in Italia o in USA

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 46: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4747

Sviluppi futuriSviluppi futuri

Nanodesktop verrà migliorato a breve con un nuovoNanodesktop verrà migliorato a breve con un nuovo

engine grafico 3d, il supporto a Python, il motoreengine grafico 3d, il supporto a Python, il motore

di comando vocale PocketSphynx, la compatibilitàdi comando vocale PocketSphynx, la compatibilità

con SDL ed Allegro.con SDL ed Allegro.

Per Blind Assistant, è prevista l’aggiunta di funzioniPer Blind Assistant, è prevista l’aggiunta di funzioni

come collision avoidance, lettura dell’ora, delle mail,come collision avoidance, lettura dell’ora, delle mail,

e delle news, oltre ad un miglioramento deglie delle news, oltre ad un miglioramento degli

algoritmi utilizzatialgoritmi utilizzati

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology

Page 47: 1 Università degli Studi di Messina Facoltà di Ingegneria Visilab – Computer Vision and Image Processing Lab PROGETTAZIONE E SVILUPPO DI UN SDK PORTABILE.

4848

GRAZIEGRAZIE

Visilab – Computer Vision and Image Processing LabUniversity of Messina - Italy

Nanodesktop tecnology