3D laserskannerin avulla voi kuvata kohteen kolmiulotteisesti. Tarvittavia välineitä kuvaamiseen ovat viivalaser, kamera ja pyörivätaso. Skannauksen tuloksena on xyz- tasolla olevat pisteet (point cloud), joita voi myöhemmin muuttaa vaikkapa polygoneiksi (polygon mesh). [1] [2]
3D laserskanneri projekti
Tein Javalla ohjelman, joka ohjaa sarjaliikenteen avulla askelmoottoriohjainta ja lukee webkameraa. Askelmoottori pyörittää kuvattavaa kohdetta ilman välityksiä, joten tarkkuus ei ole kovin hyvä. Testauksessa käytetty askelmoottori tekee täyden kierroksen 200 askeleella, mutta käytössä on puoliaskellus, joten askelia tulee yhdelle kierrokselle 400. Viivalaser on edullinen punainen 650 nm ja 5 mW tehoinen ja kamerana on VGA (640x480) tarkkuuksinen webkamera, mutta ohjelma lukee sitä tarkkuudella 160x120.
Ohjelmakoodit löytyvät robottiyhdistyksen versionhallinnasta [3].
Ohjelma käyttää JMF -rajapintaa webkameran lukemiseen, sivulta [6] löytyy ohjeita rajapinnan asentamiseen, sekä ohjelmakoodi, mikä lukee kameraa. Laitoin kuitenkin versionhallintaan nämä kameran tarvitsemat koodit, koska muistaakseni olen niitä hieman muokannut (en muista miten, tämä tapahtui vuonna 2005).
Toimintaperiaate
Viivalaserin avulla voi selvittää kohteen muodon siten, että laser viiva muodostaa profiilin kohteen muodosta ja profiilin avulla voi laskea etäisyyden kohteen keskipisteestä. Alla olevassa kuvassa on esitetty mittauksen periaate.

Kuvassa on esitetty laserviivan nollakohta (ilman kohdetta) ja valkoisella laserviivan muodostama profiili kohteen muodosta. Etäisyys saadaan laskettua laserviivan nollakohdan ja laserviivan muodostaman profiilin välisestä etäisyydestä. Etäisyydet lasketaan kuvan x-suunnista ja ne lasketaan jokaiselta y-suunnalta (y = rivi, x = sarake). Laserviivan nollakohta on käyttäjän määrittelemä, se voi olla esimerkiksi kuvan leveyden keskikohta. Laserviivan nollakohta pitää olla myös kuvattavan kohteen keskikohta ja kohdetta pyörittävän tason keskikohta.
Ohjelman toiminta on periaatteessa yksinkertainen, ensin otetaan kuva, josta etsitään laserviiva ja siitä lasketaan etäisyys laserviivan nollakohtaan ja etäisyydet otetaan muistiin. Seuraavaksi siirretään kohdetta hieman askelmoottorin avulla ja otetaan uusi kuva ja tehdään edellä mainitut operaatiot. Lopuksi ohjelma muuttaa napakoordinaatistossa olevat pisteet kolmiulotteiseen karteesiseen koordinaatistoon. [4] [5]
Napakoordinaatistossa olevilla pisteillä tarkoitetaan kuvan x suuntaisia etäisyyksiä ja askelmoottorin avulla käännetyn kohteen kulmia. Etäisyydet ovat säde nollatasosta. Muunnos karteesiseen koordinaatistoon tapahtuu tasoittain, eli jokaisesta kuvan x suuntaisista pisteistä (säde+kulma=napakoordinaatisto) lasketaan x ja y suunnat karteesisteen koordinaatistoon ja korkeus eli z suunta muodotuu näistä tasoista. (Käytän xyz akseleille eri nimityksiä kuin mitä ne ovat wikipedian sivulla).
Alla on muutama kuva laserskannerin testauksesta




Alla on Matlab ohjelmalla tehty kuva xyz-pisteistä, sekä kuva Javalla tehdystä xyz -pisteiden katseluohjelmasta


- Markus J
31/12/2009
Linkkejä
[1] 3D scanner
[2] polygon mesh
[3] laserScanner
[4] napakoordinaatisto
[5] koordinaatisto
[6] How to use a Logitech WebCam in Java
3-D Laser Scanner
DIY 3D Laser Scanner
3D Photography on your desk