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