Noi producem tableta grafica de la webcam-uri cu propriile lor mâini
Și apoi camera web pe tabletă, s-ar putea spune. Și aici și acolo - pentru o placă pe care vom fi virtuale!
O dată, după ce a citit despre jucăria Sony Eye de la [1], m-am gândit moduri neobișnuite despre a introduce date în computer. În acest moment a venit ideea de a încerca să se auto-asambla ceva de genul asta - camera web bun a fost la îndemână.
Deci, să ne gândim - care poate fi monitorizat cu un aparat de fotografiat? În primul rând - poziția oricărui obiect care este diferit de fundal. Cu toate acestea, el trebuie să se deplaseze numai un anumit plan - pentru a urmări coordonate în spațiu va necesita două camere. În al doilea rând - putem urmări schimbarea de culoare si forma obiectului. Din păcate, recunoașterea formei va necesita un studiu serios de algoritmi de recunoaștere de model, și din cauza aceasta ar trebui să fie abandonată. Chiar și o simplă urmărire a poziției în spațiu este suficient pentru a asambla o placă virtuală, în cazul în care avea grijă de apăsarea senzorului.
Astfel, principiul de funcționare. Situat în camera vizualiza hârtia albă. Stuck pe vârful marker de culoare pen. Dacă butonul pentru a muta foaia de hârtie, apoi prin detectarea unui marker pe imagine color se poate obține coordonatele în planul mânerului. În cazul în care aceste coordonate sunt convertite în mișcare a cursorului pe ecran, vom obține o placă virtuală simplu.
Mâner cu marcator de culoare
Pentru recunoașterea stabilă este necesară pentru a ține evidența culorii a fost semnificativ diferită de imaginea de fundal. În plus, culoarea ar trebui să fie bogat. Cel mai bun lucru a fost o mână - autocolante sunt utilizate pentru lipirea prețurilor mărfurilor. culoare verde deschis contrastează perfect cu imaginea de fundal.
Ia un pix obișnuit.
Ia un autocolant, și se taie o fâșie subțire.
Banda este înfășurat pe mânerul tijă.
„Staylus“ nostru gata. Imaginea arată că culoarea saturată este literalmente „arde“, și, prin urmare, se va recunoaște în mod constant de către programul nostru. pen-ul nostru nu a apăsat senzorul, astfel încât utilizatorul va trebui să folosească orice tastă de pe tastatură, de exemplu - stânga Ctrl.
De fapt, „hardware-ul“ parte este deja de peste. Noi în siguranță camera, astfel încât hârtia să poată fi servit ca o mare parte a imaginii, și a făcut un „stylus“. Software-ul camerei, putem vedea că, atunci când ne bazăm pe hârtie, imaginea de pe camera poate vedea în mod clar marcatorul de culoare. Trebuie să scrie software-ul care va urmări poziția markerului pe o bucată de hârtie, și traduce în mișcare a mișcării cursorului pe ecranul computerului. Trebuie să spun că cititorul este familiarizat cu programarea se poate sări peste următoarele două secțiune și merge direct la încercare, deoarece Software-ul de raft este atașat la articol.
Cu camerele de luat vederi obținem o imagine în RGB (roșu, verde, albastru). Cu aceste informații, trebuie să recunoaștem poziția (coordonatele) ale markerului în imagine. Am avut nici o dorință de a face cu algoritmi sofisticați de recunoaștere model, și așa că am luat cel mai simplu algoritm: într-o buclă pentru a trece prin toate pixelii imaginii, pentru a alege cele a căror culoare este similar cu culoarea markerului, și pentru a găsi coordonatele medii ale punctelor (X, Y) .
Comparați culorile mai bine în spațiu YUV (Y - luminanța, UV - culoare), ignorând luminanță (Y). Acest lucru este să se asigure că condițiile de iluminare nu afectează stabilitatea recunoașterii.
Coordonatele tuturor punctelor similare cu culoarea markerului, este necesar să se stabilească și împărțit la numărul lor. Astfel, vom obține o poziție medie, care va fi poziția marcatorului nostru în imagine.
unde n - numărul de puncte similare.
Deci, prima versiune a „conducător auto“ nostru este deja în măsură să determine coordonatele markerului în imagine. Cu toate acestea, coordonatele din imagine - aceasta nu este coordonatele pe hârtie, ca foaie preia întreaga imagine zonă. În al doilea rând, foaia este dispusă oblic față de planul imaginii.
Pentru a converti marcatorul în imagine la coordonatele pe hârtie, trebuie să cunoaștem coordonatele colțurile hârtiei din imagine. Pentru a face acest lucru, pur și simplu cere utilizatorului să „calibreze“ comprimat nostru virtual - click în colțurile hârtiei.
După „calibrare“ obținem patru perechi de coordonate (x1, y1, x2, y2, x3, y3, x4, Y4) în imaginea care corespund colțurile hârtiei. Acum este necesar să se aducă raportului, ceea ce ne va permite să traducă coordonatele din imagine (x, y), la coordonatele pe hârtie (X, Y). La început, nu am putut da seama cum să facă acest lucru, dar apoi am reușit să găsească o soluție.
Hârtia este planul în spațiu. Să presupunem că coordonatele colțurile imaginii în trei dimensiuni sunt:
Din moment ce nu sunt interesați de dimensiuni reale în spațiu, și numai coordonatele relative pe o bucată de hârtie, putem lua orice poziție în spatele planului tridimensional. Am ales specificat pentru a primi ieșire coordonatele X și Y în intervalul [0..1].
Tridimensionale grafice ale cursului, știm că pentru a crea doua imagini tridimensionale ale modelului tridimensional de coordonate tridimensionale ale punctelor sunt multiplicate cu o matrice locală a obiectului și senzorul camerei:
Cele obținute coordonate tridimensionale în spațiul camerei sunt proiectate pe planul ecranului. De obicei folosit pentru această matrice de proiecție, dar în cazul unei proiecții de perspectivă, același proces poate fi descris printr-o formulă simplă:
unde f - distanța focală.
Substituind (1) în (2) și vopsea multiplicarea matrice-vector:
unde - suma elementelor matricei Gif
Din nou, din moment ce ne interesează doar în raportul dintre lungimea focală poate fi omisă, și să presupunem că aceasta este inclusă în elementele matricei. sunt în numărătorul.
Multiplice și să scrie (3):
Express X, Y (coordonate pe o foaie de hârtie):
Având formula (4), putem obține coordonatele pe hârtie (X, Y), coordonatele imaginii la (x, y). Coordonatele de pe foaia de hârtie va fi în intervalul [0..1]. și le va multiplica pur și simplu pe rezoluția ecranului, pentru a obține poziția dorită a cursorului.
Cum de a găsi elementele de formula (4)? Știm coordonatele de hârtie unghiuri tridimensionale (- adoptate anterior) și coordonatele lor în imagine (- obținută în timpul calibrării). Este necesar ca acestea să fie înlocuite în formula (4) și de a rezolva sistemul de ecuații rezultat.
Obținem un sistem de ecuații liniare care pot fi scrise sub formă de matrice ca:
Am adăugat matricea A cu zerouri sub ea pentru a obține pătrat.
Avem 8 9 ecuații și necunoscute. 9 Pentru a găsi necunoscutul nu este suficient de 8 ecuații. Dar noi știm că punctul (X, Y, Z) sunt în plan, și, prin urmare, liniar dependente. Aceasta este de fapt ecuațiile mai mult de necunoscut, iar apoi, sistemul are o soluție. Să spunem că un astfel de sistem de ecuații rezolvate prin descompunerea de valoare singulară a matricei, care este considerată aici nu vor, pentru că cu siguranță deja atât de obosit :).
complica hardware
Deci, putem trage deja folosind placa noastră! Cu toate acestea, recunoașterea stabilității depinde în mare măsură de condițiile de iluminare și utilizați tasta Ctrl pentru a faceți clic pe nu este foarte convenabil. Să punem „stylus avansat“ pentru tableta noastră.
Pentru a spori stabilitatea, am decis să pun pe verde vârful pen LED-uri. Acum, stabilitatea recunoașterii practic independent de iluminat. Deoarece senzorul este apăsat, am luat micro-trecerea de la vechiul mouse-ul.
Ia un vechi pix stilou cu diametrul de 1 cm.
Ia vechiul COM-mouse-ul.
Mouse-ului, avem nevoie de sârmă la conectorul și micro-comutator.
Microintrerupator este introdus în mâner, astfel încât atunci când este apăsat, tija de stiloul inclus.
Ia LED-ul verde. Sunt puțin retezate cu marginile pentru a face mai puțin.
Adeziv LED-ul de pe vârful pen. Am înfășurat folie cu LED-uri de pe părțile laterale. Acum, în întuneric, în jurul valorii de LED-ul nu creează o aură, iar recunoașterea stabilității este îmbunătățită.
Payaem toate schema de mai sus. Sensul este după cum urmează: LED-ul este alimentat de liniile de semnal portul COM și constantă. microîntrerupator închide circuitul de recepție și transmisie, și, astfel, deprimat programul primește un „ecou“, a datelor transmise. Puteți verifica acest lucru rulând HyperTerminal și tastând câteva caractere pe consola. Atunci când este apăsat comutatorul - caracterele nu sunt afișate. Atunci când sunt apăsate - caracterele introduse sunt transmise de către terminal, preluate și afișate pe consolă.
După asamblare, ar trebui să aveți ceva de genul asta.
Despre configurarea software-ului
Am încercat să fac software-ul cu interfața cea mai intuitivă în formă de Master.
Imediat după lansare, software-ul încearcă să se conecteze la camera web și nu necesită calibrare. Ma concentrez separat pe unele pagină a expertului.
Pe Setări monitor color este necesar pentru a selecta parametrii „scatter“, „sensibilitate“ și am privit culoarea astfel încât imaginea din stânga a vârfului pen este urmat în mod clar cruce roșie.
Trebuie să începem cu parametrul „sensibilitate“. Setați-l astfel încât fereastra din dreapta va iesi in evidenta in mod clar marcator nostru de culoare. Faceți clic pe mouse-ul pe imaginea markerului în fereastra din dreapta sau spre stânga. Programul să-și amintească culoarea pe care doriți, și începe colectarea de termeni similari. Numărul de puncte similare, se afișează sub eticheta „Numar de eșantioane:“. În fereastra din stânga puncte similare sunt marcate în roz. Este necesar să se aleagă „împrăștie“, astfel încât numărul de puncte similare aproximativ egal cu cincizeci. Poate fi necesar să ajustați dimensiunea marcatorul de culoare la vârful mânerului și îndepărtați obiectele străine din câmpul vizual al camerei.
Sper că restul expertului nu va cauza probleme. După finalizarea de Master, „conducător auto“ nostru stă în tava de sistem. Activarea / dezactivarea tableta poate fi, de asemenea tasta „Scroll Lock“ tastatura.
Cred că dacă ai vreodată dorința de a cumpăra unele o tabletă ieftin „să se joace cu“, pentru aceste scopuri, va fi suficient virtuale. La urma urmei, tot ce ai nevoie - este de a monta aparatul de fotografiat, stick marcatorul pe vârful creionului, instalați software-ul - și placa este gata.
Conținut legat