Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

 

  1. 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

 

  1.  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!

 

 

  1.  TEHTÄVÄT

 

  1. 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

 

  1.  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.

 

  1. 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.

 

  1.  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

 

  1. 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

 

  1. 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

 

  1.  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.

 

 

  1.  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.