Sto utilizzando XNA per creare un progetto in cui posso disegnare "graffiti" sulla mia parete utilizzando un proiettore LCD e una fotocamera monocromatica che viene filtrata per vedere solo puntatori laser a mano. Voglio usare qualsiasi numero di puntatori laser - non mi interessa davvero distinguerli a questo punto.Rilevamento rapido del punto laser sub-pixel
La parete è 10' x 10' , e la fotocamera è soltanto 640x480 quindi sto tentando di usare la misurazione sub-pixel utilizzando una curva spline come illustrato qui: tpub.com
La fotocamera funziona a 120 fps (8 -bit), quindi la mia domanda a tutti voi è il modo più veloce per trovare quel centro del punto laser subpixel. Attualmente sto usando una ricerca 2D a forza bruta per trovare il pixel più luminoso sull'immagine (0 - 254) prima di eseguire l'interpolazione spline. Questo metodo non è molto veloce e ogni frame richiede più tempo del computer.
Modifica: per chiarire, alla fine i dati della fotocamera sono rappresentati da una matrice 2D di byte che indica la luminosità dei pixel.
Quello che mi piacerebbe fare è usare uno shader XNA per scricchiolare l'immagine per me. È pratico? Da quello che ho capito, non c'è davvero un modo per mantenere le variabili persistenti in un Pixel Shader come totali, medie, ecc.
Ma per ragioni argomentative, diciamo che ho trovato i pixel più luminosi usando la forza bruta, quindi memorizzato loro e i loro pixel adiacenti per la curva spline in X numero di vertici usando texcoords. È pratico quindi utilizzare HLSL per calcolare una curva spline usando texcoords?
Sono aperto anche a suggerimenti esterni al mio box XNA, sia DX10/DX11, forse una sorta di FPGA, ecc. Non ho molta esperienza con i metodi di scriccatura dei dati in questo modo. Immagino che se possono fare qualcosa del genere su un Wii-Mote usando 2 batterie AA, probabilmente sto andando in questo modo sbagliato.
Qualche idea?
Che cos'è lento eseguire la scansione o eseguire l'interpolazione spline in seguito? – Nosredna
L'interpolazione spline è di gran lunga la componente più lenta di esso, a seconda del delta con cui valuto la spline. In questo caso, vorrei una precisione di 0.1px. – bufferz
Devo aggiungere che se avessi 20 laser, il calcolo spline diventerebbe molto costoso cPU saggio. – bufferz