Järjestäjä: Metabolix
Vuodenvaihteessa 2011–2012 Ohjelmointiputkassa pidettiin kilpailu, jossa tehtävänä oli ohjelmoida ohjelma, joka piirtää mustavalkoisesta mallista kuvan. Kilpailun päätteeksi järjestettiin äänestys, jossa Ohjelmointiputkan käyttäjät arvostelivat ohjelmien taiteellisen tason asteikolla yhdestä kymmeneen.
Kilpailuun osallistui 13 ohjelmaa, jotka tekivät mallikuville hyvin erilaisia temppuja. Ylivoimaiseen voittoon kiri Trail kolmiulotteisilla vuoristomaisemillaan. Seuraavista sijoista käytiin kova kamppailu, ja tulos ratkesi vasta aivan viimeisillä äänillä: toiseksi nousi fpc_hehku ja kolmannen sijan nappasi metapirux. Tilanne oli tiukka myös viiden keskimmäisen välillä sekä jälkijoukossa. Uurnilla ehti käydä kaikkiaan 75 äänestäjää.
Ohjelmien taideteokset ja kuvaukset löytyvät edelleen äänestyssivulta. Lähdekoodit voi ladata yhtenä pakettina.
Alla ovat kaikki kilpailun osallistujat järjestyksessä kokonaispistemäärän mukaan. Varsinaisten kilpailijoiden lisäksi listan hännillä keikkuu kilpailun esimerkkiäly esim.
sija | tekoäly | kieli | tekijä | nimimerkki | pisteitä |
---|---|---|---|---|---|
1. | Trail | C++ | Antti Vainio | Anaatti | 614 |
2. | fpc_hehku | Pascal | Teemu Valo | User137 | 507 |
3. | metapirux | Pascal | Lauri Kenttä | Metabolix | 501 |
4. | voltti | Octave | Otto Seiskari | os | 480 |
5. | thunder | C++ | Lari Koponen | L2-K2 | 450 |
6. | J0U51 | C | pr0l3 | 438 | |
7. | Pointteri | C | Juho Peltonen | aaämdee | 428 |
8. | wanha_cala | C++ | Teemu Heikkilä | Sienikasvusto | 426 |
9. | karkki | PHP | Jouko Joensuu | Jogge | 404 |
10. | Reinobrandt | C | Eino-Pekka Kanto | reino | 318 |
11. | blue_period | C | Pekka Karjalainen | Pekka Karjalainen | 312 |
12. | Psycedelic | PHP | Teemu Kukkola | 304 | |
13. | esim | (useita) | 223 |
Monista sijoista kamppailtiin loppuun saakka. Seuraavassa kuvaajassa näkyy tekoälyjen saamien pisteiden keskiarvo kunkin äänestäjän jälkeen:
Kilpailun aatelia alkuperäisen kilpailuaiheen eli taiteellisen tekoälyn kannalta olivat blue_period, joka ainoana uskalsi siirrellä ja monistaa mallikuvan elementtejä, ja metapirux, joka tuotti melko tyylikkäitä joskin kaavamaisia värikynäpiirroksia malleista.
Useampi ohjelmoija etsi taidetta sen sijaan luonnontieteiden puolelta: voltti laski sähkökentän potentiaalia, thunder loi valokaaria ja J0U51 venytteli jousia; näillä menetelmillä syntyi muutama hyvinkin hieno teos. Matemaattista perspektiiviä tarvitsivat myös Trail kolmiulotteisissa kuvissaan ja wanha_cala kalansilmäefektissään. Pointteri taas piirteli Mandelbrotin fraktaalia kompleksilukujen avulla, ja erilaisia pehmennyskaavoja hyödynsi monikin ohjelma, erityisen näyttävästi fpc_hehku.
Pienempi osa ohjelmista – karkki, Reinobrandt ja Psycedelic sekä esim – tuotti hyvin selväpiirteistä, tietokonemaista grafiikkaa, joka ei tällä kertaa ollut useimpien äänestäjien mieleen. Kuitenkin myös nämä ohjelmat saivat muutamalta äänestäjältä täydet 10 pistettä; kauneus on katsojan silmissä.
Aivan alkuperäisiin tavoitteisiin ei päästy, sillä harva ohjelma edes analysoi mallikuvaa eivätkä näidenkään taideteokset olleet kovin suunnitelmallisia. Sen sijaan päädyttiin kilpailemaan hienoimmista efekteistä hieman demokilpailun tapaan – ja monta upeaa kuvaa saatiinkin!
Ohjelmien lähdekoodit voi ladata yhtenä pakettina. Alla ovat tekijöiden omat kuvaukset ohjelmistaan.
Tekijä: Antti Vainio, Anaatti
Tekoäly on ray tracer, joka käyttää mallikuvaa korkeuskarttana, jonka pohjalta se luo vuoristomaiseman. Ohjelma pystyy piirtämään mitä tahansa polygoneja, minkä lisäksi siihen on tehty monia ominaisuuksia, joita käytetään nykyaikaisessa tietokonegrafiikassa. Valaistuksessa käytetään suoran valaistuksen lisäksi phong-varjostusta. Tekstuurit käyttävät parallaksi- ja normaalikartoitusta. Kuvan jälkikäsittelyssä käytetään high dynamic range -valaistusta sekä bloom- ja depth of field -efektejä.
Tekijä: Teemu Valo, User137
Alkuperäinen kuva piirretään pienempänä ja alapuolelle peilattuna ja venytettynä. Paljon on käytetty sumennusefektiä ja blendausta. Tähtitausta muodostuu sadoista liikkuvista himmeistä partikkeleista.
Tekijä: Lauri Kenttä, Metabolix
Ohjelma muuttaa kuvan ensin vaaka- ja pystysuoriksi ja kulmittaisiksi viivoiksi ja piirtää sitten osan näistä viivoista hieman levennettynä, käyristettynä ja väritettynä. Piirtämiseen käytetään pienenpieniä metapalloja. Lopuksi kuvaa sumennetaan aavistus.
Tekijä: Otto Seiskari, os
Kuvan yläreunan ja alareunan välille on kytketty 1 voltin jännite. Mallikuvan mustissa kohdissa on eristettä (resistanssi 100 kertaa valkoisen aineen vastaava). Tuotetun kuvan värin voimakkuus kuvaa sähkökentän potentiaalia.
Ohjelma ratkaisee 24384 muuttujan yhtälöryhmän (diskretoitu johtavuusyhtälö), joka muodostetaan valmiiksi lasketun rakennedatan (datatiedosto s192x128.mat) perusteella laskennan nopeuttamiseksi.
Tekijä: Lari Koponen, L2-K2
Tehtävänä oli toteuttaa taiteellinen tekoäly. Kuitenkin, koska ohjelmoijan aika oli rajallista ja ohjelman suoritusaika vähemmän rajallista, lopputulos ei ole kovin "taiteellinen" eikä perinteisessä mielessä "älykäs". Ohjelma generoi syötteeseensä läpilyöntejä – eli valokaaria, joita myös salamoiksi kutsutaan. Eli siis: visuaalisuus ennen taiteellisuutta.
Salamoiden muoto lasketaan fysikaalisesti todenmukaisella läpilyöntimallilla, ja mallin tarvitsema Laplace-yhtälön ratkaisu saadaan arvioitua konvoluutioon perustuvalla iteratiivisella relaksaatiomenetelmällä. Salamoiden visuaalinen ilme lasketaan salaman muodon ja salama-alkion konvoluutiona. Salamoiden väri määräytyy kuvasta laskettavan tarkistusmerkin perusteella.
Koska ohjelmassa ei ole varsinaista älykkyyttä (muutoin kuin erillisten kappaleiden tunnistamiseksi), tietyt erikoistapaukset tuottavat vähemmän näyttäviä lopputuloksia.
Tekijä: pr0l3
Ohjelma yhdistää pikselit jousilla. Mustiin pisteisiin on kiinnitetty paino. Sitten simuloidaan vähän jousien venytystä ja väritetään pisteet. Sävy tulee siitä, mihin suuntaan piste on liikkunut tasossa, ja tummemmat kohdat ovat painuneet syvemmälle. Lopussa on vielä blur poistamaan teräviä reunoja.
Tekijä: Juho Peltonen, aaämdee
Pointteri ei ole mikään Picasso. Taustakuviot luodaan yksinkertaisella plasmaefektillä ja Mandelbrotin fraktaalilla. Mallikuvaa sumennetaan, värejä käännetään, viivoja levennetään, ja lopulta yhdistetään taustatauhkalla.
Lopputuloksen tekeminen oli luultavasti mukavampaa kuin sen luomien kuvien katsominen, mutta tekijä on silti tyytyväinen siihen, mitä sai illassa aikaan.
Tekijä: Teemu Heikkilä, Sienikasvusto
Wanha cala näyttää kuvan wanhan calan silmistä. Lisäilee sopivissa määrin vinjettiä kulmiin ja kuvailee kalan silmän läpi.
Tekijä: Jouko Joensuu, Jogge
Ohjelma piirtää taustan ja sen päälle mallikuvan väritettynä.
Tekijä: Eino-Pekka Kanto, reino
Reinobrandt lukee mallikuvan ja piirtää siitä hienon ja törkeän räikeän kuvan. Ensin ohjelma lataa datatiedostot, jotka ovat fontti ja kehys. Sitten se piirtää kuvalle värikkään taustan ja piirtää vielä mallikuvan mustat ääriviivat. Sen jälkeen se tutkii jokaisen 8x8-alueen ja katsoo mallikuvasta, kuinka monta pikseliä tuolla 8x8-alueella on. Sen jälkeen se valitsee ASCII-merkin kahdeksan merkin fontista. Lopuksi vielä ohjelma lisää kehyksen ja signeerauksen. Mallikuva on Minecraft-pelistä otettu sian kuva, jota on muokattu. Ohjelma käyttää mieluiten malleja, joissa on paksuja viivoja.
Tekoälyn nimi on annettu taiteilija Rembrandtin mukaan.
Tekijä: Pekka Karjalainen
Ohjelma etsii yhtenäiset yksiväriset alueet annetusta kuvasta. Se valitsee näitä satunnaisesti piirrettäväksi teoksen satunnaiseen kohtaan satunnaisilla sinisen sävyillä. Piirron loppuvaiheessa ohjelma rajaa leveitä ja korkeita kuvia pois. Kuvia piirtäessä ohjelma sekoittaa piirtovärin kuvassa jo olevaan väriin. Tähän käytetty sekoituskerroin laskee piirtokerran kasvaessa.
Tekijä: Teemu Kukkola
Käyttää neljää eri datatiedostoa, ensimmäisessä 192x1-kokoinen BMP-kuva mustasta valkoseen väriliukuna, muissa satunnaisesti valmiiksi generoituja lukuja. Tietyllä kaavalla mustan kohdalla lasketaan väri kuin myös valkoisen.
Esimerkkiohjelman teoksissa esiintyy pienennetty mallikuva neljänä kappaleena eri suuntiin peilattuna ja eri tavoin väritettynä.
Kiitos kaikille osallistujille hienoista töistä!