Opi matematiikkaa ohjelmoimalla digitaalista kuvankäsittelyä osa 1/2
Matti Heikkinen ja Samu Huovinen
Matriisilaskentaa ja python -ohjelmointia
Artikkelisarjassa tutustutaan miten matriisilaskentaa ja ohjelmointia voi oppia hauskasti muokkaamalla omien valokuvien sisältämää digitaalista informaatiota. Tässä sarjan osassa 1/2 käsitellään johdantona Geogebra-esimerkkien avulla erilaisia xy-koordinaatiston lineaarisia kuvauksia, ja tutkitaan miten nämä vaikuttavat valokuvan ulkosasuun. Julkaisun osassa 2/2 tutkitaan miten samat kuvaukset voidaan toteuttaa python ohjelmoinnin avulla. Kaikkia matriisilaskennan tai ohjelmoinnin perusteita ei käydä läpi ja esimerkiksi matriisien algebraaliset laskutoimitukset on ulkoistettu tietokoneelle. Artikkeli havainnollistaa miten lineaarisia muunnoksia voidaan hyödyntää tehokkaasti esimerkiksi tietokonegrafiikassa.
Tarkastellaan johdantoesimerkkinä xy-tason lineaarista kuvausta T, jonka avulla kierrämme ja skaalaamme origon suhteen koordinaatistoa, jonka kantavektoreita ovat yksikkövektorit ja
Kuvauksen T avulla löydämme näille kantavektoreille uuden esityksen muunnetussa koordinaatistossa. Samalla tutkimme esimerkkinä miten alkuperäisen xy-koordinaatiston vektorin
esitys muuttuu kuvauksen T eli koordinaatiston kierron ja skaalauksen yhteydessä. Lineaarikuvaus T pitää koordinaatiston origon paikallaan ja koordinaatiston apuviivat yhdensuuntaisina ja tasavälisinä. Alkuperäisen koordinaatiston yksikkövektoreiden esitys pystyvektoreina:
Geogebrasovelluksen avulla voit tutkia miten vektori muuntuu kuvauksessa T. Kokeile omaa lineaarista kuvausta kääntämällä, venyttämällä tai kiertämällä sinisellä ja punaiselle merkittyjä kantavektoreita.
Alla olevassa kuvassa on esitetty alkuperäiset kantavektorit ja
sekä vektori
. Tämän jälkeen tarkastellaan lineaarista kuvausta, joka kiertää ja skaalaa koordinaatiston kantavektoreita ja näin muuttaa samalla vektorin
esitystä. Kuvaus T esitetään muunnosmatriisin avulla.

Koordinaatistoa kierretään siten, että kantavektorit ja
kuvautuvat ja skaalautuvat muunnoksessa T seuraavasti:
Kuvaus T on siis funktio, joka saa syötteenä 2-ulotteisen vektorin ja kuvaa sen uudeksi 2D-vektoriksi. Piirretään muunnetut kantavektorit punaisella ja sinisellä:

Esimerkissä käytetty xy-tason vektorin
kuvautuminen muunnoksessa voidaan esittää seuraavasti:
Kuvaus T voidaan siis laskea 2×2 kerroinmatriisin A ja pystyvektorin tulon avulla. Ylläolevassa laskussa on esitetty vektorin
komponenttiesitys (kertoimet -1 ja +1) muunnettujen kantavektorien muodostamassa kannassa sekä alkuperäisessä koordinaatistossa.
Lineaarinen kuvaus T pitää origon paikallaan, mutta kiertää ja skaalaa (sinistä ja punaista ) kantavektoreita. Vektorin v muunnettu esitys saatiin laskemalla 2 x2 muunnosmatriisin A ja pystyvektorin tulo:
Kuvioiden pinta-alat lineaarisissa muunnoksissa
Geogebra-sovelluksen avulla voit tutkia miten erilaiset sinisellä ja punaisella piirretyt kantavektorien muunnokset vaikuttavat valokuvaan, ja mikä on muunnettuja kantavektoreita vastaava matriisikuvaus. Kokeile kiertää tai skaalata kantavektoreita.
Kuvioiden pinta-alat lineaarisissa muunnoksissa
Tarkastellaan vielä alkuperäisten kantavektorien virittämän 1×1 -neliön ja kuvauksessa T muodostuvan suunnikkaan pinta-alojen suhdetta:


Pinta-alojen suhde saadaan muunnosmatriisin determinantista:
Jos vektori v on valokuvan tietyn pisteen paikkavektori
niin muunnoksessa T paikkavektori ja valokuva muuntuvat seuraavasti:
Ennen muunnosta:
Pinta-alojen suhde saadaan muunnosmatriisin determinantista:
Jos vektori v on valokuvan tietyn pisteen paikkavektori
niin muunnoksessa T paikkavektori ja valokuva muuntuvat seuraavasti:
Ennen muunnosta:

muunnoksen jälkeen

Kaksi peräkkäistä muunnosta ja matriisien tulo
Esimerkissä tarkastellaan kuinka kaksi peräkkäistä muunnosta voidaan esittää muunnosmatriisien A ja B tulon avulla. Olkoon A muunnosmatriisi lineaariselle kuvaukselle, joka kiertää koordinaatistoa 45 astetta vastapäivään. Vastaavasti matriisi B on kiertää koordinaatistoa 90 astetetta vastapäivään. Valokuvaan sovelletaan molemmat lineaariset kuvaukset, kiertyy valokuva 135 astetta vastapäivään.
45o kierron jälkeen:

Muunnosmatriisin ja kantavektorin tulosta saadaaan uudet muunnetut kantavektorit:
Suoritetaan lisäksi vielä 90 asteen kierto:

Vastavat kantavektorien muunnokset:
Kaksi peräkkäistä muunnosta voidaan laskea suoraan suorittamalla ensin muunnosmatriisien A ja B tulo oikealta vasemmalle. Ensin yksikkövektoriin suoritetaan 45 asteen kierto, ja sitten vielä 90 asteen kierto:
Kaksi peräkkäistä muunnosta voidaan laskea suoraan suorittamalla ensin muunnosmatriisien A ja B tulo oikealta vasemmalle. Ensin yksikkövektoriin suoritetaan 45 asteen kierto, ja sitten vielä 90 asteen kierto:
Kaksi peräkkäistä kiertoa voidaan siis korvata matriisilla C=BA:
Erilaisia muunnosmatriiseja:
Valokuvan suurentaminen:

Valokuvan litistäminen:

kierto origon suhteen vastapäivään

Peilaus y-akselin suhteen:

Peilaus x-akselin suhteen:

Shearing eli akselien kierto ja skaalaus :

Käänteismatriisi ja lineaarisen yhtälöryhmän ratkaisu
Tarkastellaan vielä esimerkille 1 käänteistä ongelmaa. Yksikkövektoreille ja
sekä tuntemattomalle vektorille
on tehty esimerkin 1 matriisin
mukainen muunnos, jolloin on päädytty alla olevan kuvan esittämään tilanteeseen. Sininen ja punainen vektori ovat muunnettuja kantavektoreita ja vektori
on saatu alkuperäisen vektorin
kuvaksena. Tavoitteena on selvittää matriisille
käänteinen kuvaus
, jotta saisimme selville mikä on vektori
alkuperäisessä yksikkövektorien
ja
muodostamassa kannassa.

Ongelma voidaan esittää matriisiyhtälönä ja lineaarisena yhtälöryhmänä:
Matriisiyhtälö voidaan ratkaista kertomalla se vasemmalta matriisin käänteismatriisilla
:
Missä käänteismatriisin ja matriisin
tulo on identiteettimatriisi:
Ratkaistaan ensin matriisin A käänteismatriisi Geogebran komennolla invert(A), jolloin saadaan:
Ja kerrotaan tällä matriisilla vektori
Alkuperäinen vektori d on siis saatu seuraavasti:
Vektorin d esitys alkuperäisessä koordinaatistossa:
