Metropolia/Automaatiotekniikka Laboratoriotyö V.02
VÄRILLISTEN KAPPALEIDEN EROTTELU KONENÄKÖJÄRJESTELMÄLLÄ
1. JOHDANTO
Tässä laboratoriotyössä tutustutaan värikameran käyttöön kohteiden
luokittelussa. Työssä tehdään sovellus, jolla erotetaan Duplo-palikoita värin
ja koon perusteella eri luokkiin.
Työssä käytetään Cognex In-sight 1000C -värikamerajärjestelmää ja
Insight2-ohjelmistoa. Ohjelmiston käyttöliittymänä on exceliä muistuttava
puoleksi läpinäkyvä taulukko, jonka soluihin toiminnot syötetään kaavoina
(formula).
Värikameroiden käyttö on yleistymässä konenäköjärjestelmissä ja väriin
perustuvaa tunnistusta käytetään hyväksi jo monenlaisissa sovelluksissa.
2. LAITTEISTO
Laboratoriotyössä käytettävään laitteistoon kuuluu:
- Insight 1000C -digitaalinen värikamera, jossa
- Ethernet-liityntä 100 Mbit/s
- CCD-elementti 640 x 480 pikseliä
- yksi pikseli on neliö 7,4 x 7,4 μm
- CCD-elementin koko on 4,8 x 3,6 mm
- väriarvot (Red, Green, Blue) saadaan 8 bittisenä lukuarvona
- PC, jossa Insight2 -konfigurointi- ja kuvankäsittelyohjelmistotyökalut
- käyttöliittymä tehdään Insight2-ohjelmistossa
- hälytykset voidaan ohjata 24V digitaalilähtöön
- kuvan ulkoista triggausta varten on 24V digitaalitulo
- esim. valokennolta tuleva tieto siitä, että kappale kuva-alueella
- erivärisiä ja erikokoisia Duplo-palikoita
3. ALKUVALMISTELUT
Tarkista, että Ethernet kaapeli on kytketty Insight-kameran ja PC:n välille.
Kytke kameran jännitteensyöttökaapeli paikalleen. Kameran takaosassa
pitäisi palaa kolme LED:iä: punainen ja kaksi vihreää.
Käynnistä Insight PC Host -ohjelmisto PC:ltä. Mikäli ohjelma ei käynnisty
(valkoinen tausta jää näkymään yli 2 min), irroita jännitejohto kamerasta ja
kiinnitä se uudelleen.
Klikkaa hiiren oikealla näppäimellä jotain harmaata solua taulukossa, ja
valitse avautuvasta systeemivalikosta Logon. Ruudulle avautuu valinta
(Kuva 1), jossa ‘Host name’ kentässä on <Local>. Valitse ok . Alkuikkunan
vasemmassa alalaidassa pitäisi nyt näkyä PC:n nimi ja ‘Local’ teksti.
Kuva 1. Logon ikkuna
Tarkista, että ‘Host Name’ -kentästä löytyy myös <is1k000e03>. is1k000e03
on kameran ‘Host’ -nimi. Ellei kameran nimeä löydy, valitse ‘Host name ‘
-luettelosta <New> ja anna sille seuraava MAC-osoite: 00d024000e03
(MAC-osoitteen 6 viimeistä numeroa näkyvät kameran takaa käyttökilvestä).
IP osoitteeksi annetaan 195.148.150.79, subnet maskiksi 255.255.255.0
(kuva 2).
Kuva 2. Kameran TCP/IP parametri-ikkuna
Paina ok, jolloin ohjelma hakee kameran ja antaa nimen is1k000e03
automaattisesti. Kun näyttöön tulee ilmoitus ‘Completed successfully’, pitäisi
kameran nimi löytyä ‘Logon’, ‘Host Name’ -valikosta.
Kirjoittaudu sisään kameraan ja kokeile ‘Live’ valintaa, jolloin kamera näyttää
live-kuvaa ruudulla. Siirrä kamera katsomaan paperiarkin pintaa. Jos kuva
värisee, vaihda valotusaika 8 ms —> 33 ms (löytyy image-kentän kohdalta
hiiren vasemmalla näppäimellä formula-napin takaa). Fokusoi kamera
paperiarkin pintaan. Aseta aukko sopivaksi niin, että Duplo-palikka näkyy
hyvin (väri ei vielä välttämättä oikea).
Seuraavaksi kalibroidaan väribalanssi siten, että kuvassa on pelkkä
paperiarkki. Valitse taulukon solu, jossa lukee ‘Image’. Avautuvan parametri-ikkunan
oikeassa alalaidassa on ‘white balance’. Klikkaa sitä hiiren
vasemmalla painikkeella, jolloin kamera kalibroituu. Aseta punainen Duplopalikka
kameran kuva-alueen keskelle. Tarkista vielä fokusointi palikkaan ja
valitse sopiva aukko, jolla kuva näkyy selkeästi punaisena. Kokeile myös
muilla väreillä, että ne toistuvat suhteellisen hyvin. Valon määrä ja spektri
vaikuttavat värien toistoon. Merkitse kohta, johon palikka pitää asettaa, jotta
se on kuva-alueen keskellä ja vaakasuorassa (kuva 3).
Kuva 3. Palikan asento
‘Live’ tilasta poistutaan mitä vain näppäintä painamalla. Yksittäisen kuvan voi
liipaista F5-näppäimellä, jolloin kuva päivittyy taustalle. Kokeile F5. Tämän
työn aikana pysytään kytkeytyneenä kameraan, mutta talletukset tehdään
PC:n muistiin, <Network> ja ‘PC nimi ‘, ei siis kameran Flash muistiin!
4. TEHTÄVÄT
- Kuvien ottaminen
Kun olet saanut palikan sopivaan asentoon, talleta kuva PC:lle valitsemalla
systeemivalikosta ‘Save&Load’ ja valitse vasemmalta ylhäältä ‘Images
(bmp)’, sen jälkeen <Network>, ‘PC:n nimi’, <New> ja ‘Save’, jolloin voit
antaa nimen kuvalle. Ota vähintään kolme kuvaa muistakin palikan
asennoista n. 20 astetta poikkeavalla kulmalla ja vähän eri paikassa. Taltioi
nekin PC:lle. Näitä kuvia voidaan käyttää testikuvina, kun jatkossa kehitetään
kuvankäsittelyfunktioita.
Tavoitteena on tehdä seuraavat operaatiot:
- palikan löytäminen kuvasta ja asennon tunnistus
- eriväristen palikoiden tunnistus
- käyttöliittymä, joka kertoo on-line, minkä värinen ja kokoinen palikka on kameran alla
2. Palikoiden paikannus
Aloitetaan kuvakäsittelyfunktioiden tekeminen kiinnekohdan määrityksellä.
Kiinnekohdaksi sopivat kappaleen alakulmat, joihin tehdään hahmontunnistus ja
sen jälkeen hahmojen keskipisteiden välille suora, jonka kulmaa käytetään
kiinnekohdassa.
Valitse vapaa solu ja ‘PatFind’, ‘FindPatterns’ toiminto (’Formula’, ’Vision
Processing’). Valitse ‘Model Region’ -alue siten, että Duplon alakulma on
suorakaiteen sisällä ja vain vähän pöydän pintaa mukana (kuva 4).
Kuva 4. ‘PatFind’, ’Model Region’ -alue
Valitse ‘Model settings’,‘Model Type’, ‘Area Model’. Valitse vielä
‘Coarseness’—> ‘Coarse’, jolloin hahmon haku on karkea, ja tunnistus on
nopeampi. Muut ‘Model Settings’ voivat olla oletusarvoissaan.
Valitse sitten ‘Find Region’, joka määrittää alueen, jolta mallia yritetään etsiä
(kuva 5).
Kuva 5. Hahmon etsintäalueen määritys
Duplo voi kiertyä, joten aseta parametriin ‘Angle Range‘ sallittu
kiertymiskulma, esim. 40 astetta (tarkoittaa +-40 astetta). Rastita myös ‘Scale
tolerance’, joka sallii että kohde voi olla pienempi tai suurempi kuin
alkuperäisessä kuvassa. Sitten ‘ok’, jolloin kulman paikka ja hahmon
löytymisen onnistumisprosentti tulevat näkyviin taulukossa.
Testaa, että malli löytyy kaikista aiemmin otetuista kuvista. Jos joku kuva
antaa #ERR, laajennetaan ‘Find Region’ aluetta ko. kuvaa vastaavasti.
Tee samalla tavalla toisen alakulman hahmon etsintä.
Talleta työ PC:lle <Network>, ‘PC:n nimi’ jne.
3. Kiinnekohdan tekeminen
Laske alakulmien välisen suoran kulma ‘PointToPointAngle’ funktiolla, joka
löytyy ‘Geometry’, ‘Measure’ valinnoista. Sido ‘Point0’:aan toinen alakulma ja
‘Point1’:een toinen. Tämä tehdään valitsemalla ’Row’ ja ’Col’ arvot taulukosta. Kulma ilmestyy taulukkoon ja sen arvo on lähellä 90 astetta.
Laske kolmeen uuteen soluun janan keskipisteen koordinaatit alakulmien
‘Row’, ‘Col’ ja ’Angle’ arvoista. Mathematics—>statics—->mean. Kuvassa 6 nähdään rivillä 10 esimerkki. ’Angle’ arvo on sama kuin ’PointToPointAngle’ arvo.
Valitse näiden läheltä vapaa solu ja valitse siihen toiminto
‘Vision processing’, Graphics’, Image’, ‘PlotCross’, ja siihen ‘Cross’ kenttään
Duplon ‘Row’,’Col’ ja ‘Angle’. jolloin kiinnekohdan paikassa näkyy vihreä risti.
Taulukko on nyt suunnilleen kuvan 6 näköinen.
Kuva 6. Kiinnekohta (Fixture)
Kokeile tekemilläsi kuvilla että kiinnekohta löytyy. Talleta työ PC:lle.
4. Värin tunnistus
Seuraavaksi käytetään ‘ExtractColorHistogram‘ -toimintoa, jolla saadaan
väripiirre esiin. Aseta kiinnekohdaksi (‘Fixture’) edellä tehty alakulmien
mukainen kiinnekohta. Valitse alue, josta värihistogrammi lasketaan,
mahdollisimman keskeltä kappaletta ja suunnilleen kuvan 7 mukaiselta
alueelta.
Taulukkoon ilmestyvät RGB arvot. Värit eivät ole aivan puhtaita, joten
kaikilla väreillä on jonkin verran intensiteettiä, mutta kappaleen mukaisella
värillä suurin. Lopullinen taulukko voi näyttää esim. kuvan 8 mukaiselta.
Talleta työ PC:lle.
Kuva 7. Värihistogrammin alue
Kuva 8. Taulukko, jossa värihistogrammin RGB arvot
5. Värintunnistus
Tee ensin kunkin värin tarkistukselle logiikkasolu, johon testaat, onko värin arvo sallituissa rajoissa. Laita rajat sen mukaan, millaisia arvoja saat eri kappaleista. Tee testaus ‘Mathematics’—> ‘Logic’—> ‘InRange’ funktiolla, jolla voi testata, onko arvo rajojen sisällä. Rajojen sisällä oleva arvo antaa tuloksen 1, muussa tapauksessa 0. Käytä InRange((B14,240,250),1,-1) elikkä inrange((tämän hetkinen arvo, min, max),1-1) tyyppistä loogista funktiota, jolla saat aikaan värien tunnistuksen. Tämä toistetaan jokaiselle värille.
Tee sitten tunnistussolut siten, että testaat If-funktiolla, onko joku testisoluista 1 ja jos on, niin kopioidaan väriä vastaava teksti tähän soluun (kuva 9). If(B17==1,”väri”,””), eli If(arvo ,true, false).
Testaa ottamillasi kuvilla, että käyttöliittymä näyttää oikein. Kokeile myös
laittamalla Duploja kameran näkyville ja F5. Talleta työ PC:lle.
Kuva 9. Jos kappale tunnistetaan punaiseksi, tulee vastaava teksti näkyville
6. Käyttöliittymä ‘Custom view’
Tee lopuksi ‘Custom View’ valitsemalla systeemivalikosta ja sen jälkeen
‘Select Cells’ valitse ne solut, joissa on tunnistusteksti ‘Punainen’, ‘Vihreä’,
‘Sininen’ (usean solun valinta nuolinäppäimillä shift-vaihtonäppäin pohjassa).
Funktionäppäimellä F6 voit tarkkailla käyttöliittymää. Kokeile viemällä
kappaleita näkökenttään, että se toimii oikein.
Kokeile myös pienemmillä palikoilla, että värin tunnistus sujuu niilläkin (kuva 10).
Kuva 10. Pienemmän palikan tunnistus
7. Leveyden mittaus koon tunnistamiseksi
Tee ‘FindSegment‘ -toiminnolla vielä kappaleen leveyden mittaus ja sido se
aiemmin tehtyyn kiinnekohtaan. Valitse ensin iso kappale ja määrittele
‘FindSegment’ -alueeksi kuvan 11 mukainen alue. Tästä saadaan taulukkoon
leveys pikseleinä. Kokeile, että pienempi kappale antaa pieniä arvoja. Tee
leveyden perusteella vertailu If funktion avulla siten, että saadaan tieto ISO/PIENI. Lisää tämä
solu käyttöliittymään värisolujen lisäksi.
Kokeile kappaleilla, että Duplo-palikoiden tunnistus toimii.
Kuva 11. ‘FindSegment’-funktion ‘Region’-valinta-alue, jolta reunoja haetaan.
Kuva 12. Taulukko kuva ’FindSegment’ -toiminnon sekä leveyden vertailun jälkeen.
Kuva 13. Käyttöliittymä mihin on liitetty FindSegment -funktio.
8. Raportointi
Liitä raporttiin käyttöliittymäkuvat, joissa pienen sinisen ja ison punaisen
palikan tunnistus on onnistunut. Ota ‘Printscreen’ myös ohjelmasolukosta,
jossa näkyvät tehdyt funktiot. Tyhjennä lopuksi PC:n muistiin mahdollisesti
tallentamasi kuvat.