Basandosi sul codice HTML5 usato per FirefoxOS ed usando Phonegap ho effettuato il porting di Soil Color Chart per Android (l'applicazione e' disponibile sul PlayStore a questo indirizzo mentre il codice sorgente puo' essere scaricato qui)
I passi sono piuttosto semplico
prima di crea il progetto Phonegap
Per verificare l'accuratezza del sensore di distanza del Kinect ho provato ad acquisire due immagini di una stessa scena statica e a vedere le differenze
Mappa di profondita' di Kinect
Le due immagini sono state acquisite con lo script visto in questo post
Per calcolare la differenza ho usato il seguente script
------------------------------------------------ import pickle import numpy as np import Image posizione = 0 accumula = 0 f = open("3.txt") data1 = pickle.load(f) f.close f = open("4.txt") data = pickle.load(f) f.close accumula = data - data1
img = Image.new('L', (480,640), "black") pixels = img.load() for i in range(img.size[0]): for j in range(img.size[1]): pixels[i,j] = accumula[posizione] posizione = posizione + 1 img2 = img.rotate(270) img2.save("3-4.png") print np.histogram(accumula,[-3000,-100,-10,10,100,3000])
------------------------------------------------
Questa e' l'immagine di differenza
E' subito evidente che le maggiori differenze sono ubicate nei punti in cui c'e' la maggior distanza tra due pixel vicini
Mappa delle differenze test 1
La distribuzione di frequenza indica che per il 92.6% la differenza di distanza misurata e' compresa tra -1/+1 cm. Un altro 5.7% delle differenze e' compresa tra -10/+10 cm
Per maggiore dettaglio il 75% delle misure ha differenza 0
Un altro esempio
Mappa delle differenze Test 2
in questo caso il 77% dei punti mostra differenza di 0 mm con il 93% dei punti con differenza inferiore a 1 cm.
Un terzo esempio
Mappa delle differenze Test 3
anche qui il 76% dei punti mostra differenza di 0 mm con il 92.4% dei punti con differenza inferiore a 1 cm.
In buona sostanza il sensore di Kinect lavora molto bene su scene piatte mentre dove ci sono oggetti su piani a distanza differente con bruschi salti di distanza l'errore diventa sensibile
Giusto un promemoria per me stesso su come compilare Hello World su IOS (piu' che altro perche' alcune azioni sono visive ed e' difficile descriverle senza un video
Grazie a quanto indicato in questo post sul forum di Firefox Italia, sono riuscito a far partire l'ambiente di sviluppo di Firefox OS su Linux (Ubuntu nel caso specifico)
Su richiesta di un amico, ho provato ad usare il Kinect per fare un modello 3D del viso
Il lavoro e' diviso in due parti. In fase di acquisizione vengono salvati i dati del sensore di distanza del Kinect ogni 5 secondi (il Kinect genera una mappa di 640x480 punti per ogni immagini ed i dati acquisiti da PyOpenNi sono espressi direttamente in millimetri)
Successivamente si lancia lo script di lettura.py come
python lettura.py > dati.asc
il file .asc viene poi utilizzato dal programma Meshlab (presenti anche repository di Ubuntu) per visualizzare la nuvola dei punti. (Nell'esempio sono stati i punti a distanza maggiore di 1 metro per selezionare solo i punti del volto)
Su richiesta di un amico, c'era la necessita' di estrarre solo le righe pari (o dispari) da un file testo puro usando Bash
il primo tentativo e' stato fatto con un ciclo for
-------------------------------------------- for i in `seq 1 2 10`; do comando="sed -n "$i"p file1.txt >> file2.txt" eval $comando done
---------------------------------------------
in realta' il comando sed ha gia' al suo interno questa possibilita', infatti lo switch p permette di indicare a quale riga iniziare a quante righe saltare. per esempio nell'esempio sottostante vengono salvate una riga si' ed una no partendo da 1
--------------------------------------------- sed -n 1~2p file1.txt >> file2.txt
---------------------------------------------