keskiviikko 31. maaliskuuta 2010

Kompressiota ja kuva-analyysiä

Ensimmäisellä tunnilla tutustuttiin kompression teoriaan, erityisesti kuvien tapauksessa. Kompressio lienee se signaalinkäsittelyn ala, joka on lähinnä jokapäiväistä elämää. Anekdoottina esitin aluksi muisikuvan, jonka mukaan ensimmäiset 1990-luvun alun jpeg-purkuohjelmat prosessoivat tyypillistä neljännesmegapikselin kuvaa useamman minuutin ennen kuin se oli GIF-formaatissa, jonka silloiset kuvankatseluohjelmat osasivat näyttää. Ilman laskentatehon eksponentiaalista kasvua digitaalinen media olisi kaukana siitä mitä se nyt on.

Häviöttömistä menetelmistä käytiin tarkemmin läpi Huffman-koodaus, joka perustuu koodipuun generointiin symbolien todennäköisyyksien mukaan. Harvinaisemmille symboleille annetaan pidempi koodisana, mikä mahdollistaa lyhyemmän koodisanan antamisen yleisemmille symboleille. Huffmanin pakkaustehokkuutta voidaan verrata entropiaan, joka antaa alaraja mille tahansa häviöttömälle pakkausmenetelmälle. Todettiin Huffmanin pääsevän melko lähelle alarajaa. Entropiarajaa voidaan pudottaa erilaisilla tempuilla, kuten tallentamalla ns. erotuskuva.

Toisen tunnin jälkimmäisellä puoliskolla oli "vierailuluento", jossa kerroin itse automaattisesta rekisterikilpien tunnistuksesta videokuvasta. Tätä tekee Tamperelainen yritys Visy Oy, jossa olin töissä 2003-2005 (ja edelleenkin sivutoimiluvalla). Rekisterikilpien tunnistus toimii kulunvalvonnan tunnisteena, jolloin kulkulupa suljetulle alueelle voidaan myöntää tietylle kilvelle. Erityisen hyödyllinen tämä on esimerkiksi satamissa, joissa vieraat käyvät usein vain kerran. Tällöin normaalit menetelmät, kuten autojen RFID-lukijat (esim. tämä valmistaja) ovat liian vaivalloisia hallinnoida. Sen sijaan rekisterikilpi toimii kuin sormenjälki: se on aina mukana.

Kurssin viime kevään välikoe/tentti käydään läpi huomenna to 1.4 klo 10:15 alkaen salissa TB109.

Kurssille järjestetään jatkokurssi SGN-1250 ensi kesänä juhannuksen jälkeen sekä ensi syksynä.

keskiviikko 24. maaliskuuta 2010

Kanavan estimointia ja kuvankäsittelyä

Tunnin aluksi korostettiin viimeistä kertaa konvoluution ja Fourier-muunnoksen yhteyttä. Jos siis

y(n) = h(n) * x(n),

niin konvoluutio muuttuu kertolaskuksi z-muunnoksessa (ja näin ollen myös vastaavissa Fourier-muunnoksissa):

Y(z) = H(z) X(z),
Y(e^(iw)) = H(e^(iw)) X(e^(iw)),
Y(n) = H(n) X(n),

Tästä seuraa, että jakolaskulla voidaan ratkaista joko H tai X, kun kaksi muuta termiä tiedetään. Esimerkiksi kanavan estimoinnissa tiedetään X ja Y, ja halutaan ratkaista näiden välinen yhteys esim. GSM-kanavan ekvalisoinnissa.

Tämän jälkeen luotiin lyhyt katsaus suodinsuunnitteluun ns. käänteisen Fourier-muunnoksen menetelmällä, josta on myös ensi viikolla kaksi harjoitustehtävää. Menetelmän etu on sen yksinkertaisuus ja nopeus. Miinussarakkeeseen tulee merkintä sen huonosta tarkkuudesta: amplitudivaste on tarkka vain N:ssä pisteessä, muualla se voi olla mitä sattuu.

Näiden jälkeen paneuduttiin kappaleeseen 6, joka tarkastelee kuvankäsittelyä. Alkuosa koostuu enimmäkseen yksiulotteisten lineaaristen järjestelmien yleistyksestä kahteen ulottuvuuteen. Fourier-muunnoksen yhteydessä todettiin, että kaksiulotteinen tapaus voidaan toteuttaa kahden yksiulotteisen FFT:n avulla, mikä mahdollistaa nopean laskennan.

Tämän jälkeen tarkasteltiin dekonvoluutiota, eli konvoluution käänteistä operaatiota. Monisteen esimerkin lisäksi esimerkkinä mainittiin Hubble-avaruusteleskoopin varhainen ongelma, joka aiheutti kuvaan jonkin verran epätarkkuutta. Ennen kuin kiertoradalle päästiin korjaamaan linssi kuntoon, täytyi linssin virhe mallintaa konvoluution avulla. Varhaisia kuvia myös korjattiin dekonvoloimalla virheelliset kuvat. Linssi kuitenkin lopulta vaihdettiin, koska dekonvoluutio ei voi tuottaa yhtä täydellistä tulosta kuin fyysinen korjaus. Tämä johtuu siitä, että PSF ei koskaan ole täysin oikea, vaan siinä on numeerista epätarkkuutta. Lisäksi informaatiota saattaa kadota konvoluution yhteydessä, jos taajuustason funktiossa H(n,m) on nollia kertoimina.

Lisäksi tutustuttiin liike-epätarkkuuden korjaukseen erään SIGGRAPH-artikkelin vaikuttavien esimerkkien kautta.

Tunnin lopuksi perehdyttiin kuvien piste-ehostukseen. Tähän alueeseen kuuluvat menetelmät käsittelevät kuvaa piste kerrallaan ajamalla kunkin harmaasävyarvon tietyn funktion läpi. Funktio määräytyy tilanteen mukaan, ja gamma-korjauksen tapauksessa se on muotoa

y = x^gamma

(sopivilla skaalauksilla varustettuna, jolloin väli [0,255] kuvautuu väliksi [0,255]). Histogrammin ekvalisoinnin tapauksessa funktio lasketaan kuvasta niin, että histogrammin massa jakautuu suunnilleen tasaisesti. Tämä saadaan aikaiseksi kaavalla 6.1.

torstai 18. maaliskuuta 2010

Suodinsuunnittelu, osa 2

Tämän viikon luennolla käsiteltiin suodinsuunnittelu loppuun.

Ensimmäisellä tunnilla kerrattiin taajuusvasteen ja impulssivasteen yhteyttä. Jos tiedetään haluttu taajuusvaste, voidaan sitä vastaava impulssivaste ratkaista käänteisellä diskreettiaikaisella Fourier-muunnoksella (jos integraali vaan saadaan ratkeamaan). Valmiit ratkaisut annetaan prujussa neljälle vastetyypille: alipäästö-, ylipäästö-, kaistanpäästö-, sekä kaistanestosuotimelle. Näistähän tosin voidaan kolme viimeistä järkeillä pelkän alipäästösuotimen avulla. Esimerkiksi ylipäästösuodin on mahdollista esittää identiteettisuotimen ja alipäästösuotimen avulla:

hyli(n) = delta(n) - hali(n)

tai toisin sanoen

(korkeat taajuudet) = (kaikki taajuudet) - (matalat taajuudet).

Ideaalisen suotimen impulssivasteen pituus on ääretön, eikä sitä voi käytännössä toteuttaa. Näin ollen impulssivaste on katkaistava, mistä seuraa vääristymä amplitudivasteeseen. Matlab-testeillä havaittiin, että tätä ei voi kompensoida esim. kertoimia lisäämällä, vaan on käytettävä ikkunaa joka pehmentää katkaisun vaikutusta. Ikkunoita on lueteltu esim. sivun 84 taulukossa, ja mitä paremmat vaimennusominaisuudet niillä on, sitä leveämpi siirtymakaistasta tulee. Onneksi tätä voidaan kuitenkin kompensoida kertoimia lisäämällä.

Luennon lopuksi käytiin taululla esimerkki ikkunamenetelmän käytöstä vuoden 2008 toukokuun tentissä. Tässä sattui kiireessä valitettava virhe, ja taajuudet normalisoitiin 16 kHz:lla, vaikka oikea luku olisi ollut näytteenottotaajuus 32 kHz. Tästä virheestä olisi tentissä mennyt yksi piste.

Myös luentomonisteessa on noin puolen pisteen arvoinen virhe sivulla 87. Tuon sivun tehtävässä N = 53, mutta sivun keskellä olevassa impulssivasteen ht(n) kaavassa on mystinen luku 85. Tämän kuuluisi olla 53.

keskiviikko 10. maaliskuuta 2010

Suotimen analyysi ja synteesi

Tänään pääasiana oli suotimen suunnittelu eli synteesi. Aluksi muisteltiin vielä suotimen analyysikappaletta (kappale 4), jossa suotimen ominaisuudet pääteltiin sen kertoimista. Varsinaisen luennon aluksi käytiin läpi Matlab-demo, jossa hiirellä voidaan sijoitella napoja ja nollia napa-nollakuvioon, ja Matlab laskee syntyneen suotimen taajuusvasteen. Kolmanteen kuvaan tuli funktio

20 log10 (|H(z)|),

jossa näkyi nollien ja napojen aiheuttamat piikit ylös- ja alaspäin.

Kappaleessa 5 tarkastellaan kappaleen 4 ongelmaa toisin päin. Kappaleessa 4 tavoite oli selvittää annetun suotimen taajuusominaisuudet, ja kappaleessa 5 pitäisi ratkaista mikä suodin toteuttaa annetun taajuuskäyttäytymisen. Suunnittelukriteerit ovat kahtalaiset: suotimen taajuusvasteen määräämiseksi pitää tietää millainen vaihevaste halutaan ja millainen amplitudivaste halutaan.

Vaihevasteen osalta vaaditaan että kaikkien taajuuksien tulee viivästyä yhtä paljon. Tämä toteutuu jos vaihevaste on lineaarinen. Yksinkertaisimmissa tapauksissa vaihevasteen lauseke voi olla siis esimerkiksi muotoa -2w, joka taatusti on lineaarinen. Havaittiin kuitenkin, että vaihevasteessa tapaa olla 180 asteen hyppäyksiä, ja silti vaihevaste voi olla lineaarinen. Tällainen hyppäys tulee tilanteessa jossa taajuusvastefunktio menee kompleksitason origon läpi. Matlabissa tällainen kuvaaja saadaan esim. komennoilla:

>> [H,W] = freqz([1, 1, 1]);
>> plot(H);
>> grid on

Freqz-funktiosta saa siis ulos taajuusvastefunktion arvoja vektorissa H. Vektorissa on lueteltu taajuusvasteen kompleksiset lukuarvon 512:ssa pisteessä taajuusakselilla. Kun kuvaaja plotataan ruudulle, on tuloksessa yksi nollakohta, jossa kompleksifunktion vaihe hyppää 180 astetta (ts. funktio vaihtaa merkkiä). Näistä nollakohdista huolimatta suodin voi olla lineaarivaiheinen, ja näin ollen lineaarisuus kannattaakin määritellä näin: Vaihevaste on lineaarinen, jos vaihevasteen derivaatta on vakio aina kun se on määritelty. Derivaatasta käyteään nimeä ryhmäviive, ja se ilmaisee suoraan eri taajuuksille tulevan viiveen näytteinä (miinusmerkkisenä). Lopuksi todettiin, että vaihevaste on aina lineaarinen, jos impulssivasteen termit ovat symmetrisesti keskipisteen suhteen.

Amplitudivaste täytyisi saada päästökaistalla ykköseksi ja estokaistalla nollaksi. Käytännössä tämä ei ole mahdollista, vaan suotimelle täytyy antaa hieman toleranssia ja sallia tietty määrä värähtelyä molemmilla kaistoilla. Lisäksi kaistojen väliin täytyy sallia "don't care" -alue, jossa amplitudivaste saa olla mitä vain.

Prujussa ratkaistaan mikä impulssivaste toteuttaisi ideaalisen amplitudivasteen (arvot vain nollaa tai ykköstä). Osoittautuu että impulssivasteen muoto on tuttu sinc-funktio, mutta sen pituus on ääretön. Tämän vuoksi suotimesta ei saataisi ainuttakaan vastearvoa koskaan, vaan laskentaa tarvittaisiin äärettömän paljon.

Tästä ongelmasta päästään katkaisemalla impulssivaste, mutta tämä luonnollisesti vaikuttaa amplitudivasteeseen. Todettiin, että suoralla katkaisulla ei estokaistan värähtelyä saada millään alle n. 21 desibelin, ja päästökaistallakin suurin heitto on luokkaa 0.7 dB. Ratkaisu tähän on käyttää ikkunointia, eli kertoa katkaistu impulssivaste jollain ikkunafunktiolla. Näin voidaan päästä parempiin vaimennusominaisuuksiin. Tämä kuitenkin kostautuu siirtymäkaistan levenemisenä: esim. Hamming-ikkunan siirtymäkaista on aina n. 3,5-kertainen suoraan katkaisuun verrattuna. Tämä voidaan kuitenkin kompensoida nostamalla kertoimien määrää.

keskiviikko 3. maaliskuuta 2010

Siirtofunktio ja taajuusvaste

Tänään käsiteltiin kappaleen 4 loppuosa, ja pohdittiin siirtofunktion merkitystä suotimen analyysissä. Tämän ja viime viikon tavoite oli siis oppia analysoimaan annetun suotimen toiminta. Ensi viikolla käännetään ongelma toisin päin ja siirrytään suotimen synteesiin: kuinka suunnitellaan suotimen impulssivaste niin että se täyttää annetut taajuusvaatimukset.

Kaikki lähtee liikkeelle konvoluution ja z-muunnoksen yhteydestä: konvoluutio muuttuu kertolaskuksi z-muunnoksessa. Jos siis suodatus noudattaa yhtälöä

y(n) = h(n) * x(n),

on sama yhtälö voimassa myös z-tasossa:

Y(z) = H(z) X(z)

Tällöin impulssivasteen h(n) muunnoksen tuloksesta käytetään nimeä siirtofunktio. Siirtofunktio on rationaalifunktio, jonka osoittajassa ja nimittäjässä on polynomi. Kun tämä lauseke tiedetään, saadaan Fourier-muunnos em. sijoituksella. Tulos H(exp(iw)) on nimeltään taajuusvaste, ja siihen menee sisään reaaliluku w (taajuus josta ollaan kiinnostuneita), ja ulos tulee kompleksiluku. Tämän kompleksiluvun itseisarvo kertoo kuinka suuri vahvistus suotimella on kyseisellä taajuudella.

Suotimen analyysi käytiin läpi kaavan (4.3) suotimella. Ensin siitä selvitetään impulssivaste, sitten siirtofunktio ja lopuksi taajuusvaste. Taajuusvaste on kompleksifunktio, joten sitä ei voida sellaisenaan piirtää 2-ulotteiseen koordinaatistoon. Näin ollen piirretään kaksi kuvaajaa: funktion itseisarvon kuvaaja sekä sen vaihekulman kuvaaja. Näistä edellinen kertoo kuinka paljon eri taajuuksien amplitudit muuttuvat suodatuksessa ja jälkimmäinen paljonko ne viivästyvät suodatuksessa. Amplitudivaste on näistä mielenkiintoisempi, koska sen avulla taajuuksia saadaan esim. poistettua yksinkertaisesti huolehtimalla että amplitudivaste ko. taajuudella on nolla. Vaihevasteessakin on oma mielenkiintonsa, ja siihen tutustutaan lähemmin ensi viikolla.

Lineaarista asteikkoa kätevämpi on käyttää desibeliasteikkoa, joka on logaritminen. Logaritmi tekee kertolaskusta yhteenlaskua, ja korostaa lähellä nollaa olevia eroja, jotka molemmat ovat meille käteviä ominaisuuksia.

Seuraavaksi perehdyttiin suotimen siirtofunktion käytännön laskentaan kappaleessa 4.5.4. Tällä menetelmällä saadaan kätevästi sekä IIR-, että FIR-suotimen siirtofunktiot laskettua. Siirtofunktion navoista ja nollista voi päätellä yllättävän paljon suotimen stabiilisuudesta sekä amplitudivasteesta, ja tästä jatketaan ensi kerralla.

keskiviikko 24. helmikuuta 2010

Iriksentunnistusta ja z-muunnoksia

Ensimmäisellä tunnilla kuultiin Tapio Mannisen vierailuluento aiheesta "Iiris biometrisena tunnisteena". Esitys pohjautui Tapion kandityöhön, joka valmistui vuosi sitten. Sivumennen sanoen Tapio valmistui tekniikan kandidaatiksi "oivallisesti", mikä tarkoittaa keskiarvoa yli 4 ja kandityön arvosanaa vähintään 4 sekä automaattista 250 euron stipendiä TTY:ltä.

Iiriksentunnistus pohjautuu John Daugmanin kehittämään ja patentoimaan IrisCode-menetelmään. Algoritmi tunnistaa ensin iiriksen ja pupillin reunat sovittamalla niihin ympyrät. Näiden avulla iiriksen alue muunnetaan napakoordinaatistoon, ja saatu matriisi jaetaan edelleen 8x4 = 32 alueeseen. Kukin näistä alueista projisoidaan pistetulon avulla ns. Gabor-kantaan (suodatetaan Gabor-suotimilla). Puhutaan myös Gabor-muunnoksesta, mikä viittaa siihen että kyseessä on hieman viritetty versio Fourier-muunnoksen kaksiulotteisesta yleistyksestä (ks. myös prujun sivut 96-99). Näin jokaisesta alueesta jää jäljelle yksi kompleksiluku kutakin 32:a Gabor-aalloketta kohti. Tämän kompleksiluvun vaihe kvantisoidaan neljään arvoon, jotka voidaan kuvata kahdella bitillä. Kaikkiaan saadaan siis 32 x 32 x 2 = 2048 bittiä pitkä bittijono, joka toimii tunnisteena. Lopuksi pohdittiin kuinka päätellään kuvaavatko kaksi bittijonoa samaa silmää. Tässä oli apuna tilastomatematiikka niin, että arvioitiin jakaumat ns. Hamming-etäisyydelle samoille ja eri silmille. Näin voidaan arvioida virhepäätelmän todennäköisyyttä, mikä on olennainen osa järjestelmän myyntipuheita sekä sen lakiteknistä luotettavuutta (esim.: Loton päävoitto on todennäköisempi kuin että asiaton henkilö pääsee kulunvalvonnastamme sisään ilman lupaa.)

Laitoksella tehtyihin kanditöihin voi tutustua tämän linkin takana. Linkistä latautuu zip-tiedosto, joka on suojattu salasanalla. Tunnus on sgnkandi ja salasana motiivi.

Toisella tunnilla aloitettiin Z-muunnoksen käsittely. Luennoilla ehdittiin käsitellä z-muunnoksen määritelmä, sekä laskea napa-nollakuviot muutamille z-muunnoksille. Itse muunnoksen laskennan osalta ehdittiin tarkastella vain yleisimpien jonojen z-muunnokset, jotka löytyvät sivun 58 alalaidan taulukosta. Useimpien jonojen z-muunnokset voidaan palauttaa näiden tapausten yhdistelmiksi, joten kauhean paljon monimutkaisempia muunnoksia ei tarvitse osatakaan laskea.

Z-muunnos on myös diskreettiaikaisen Fourier-muunnoksen (DTFT; s. 38) yleistys, ja muuntaa signaalin kompleksifunktioksi. Määritelmissä on eroa vain summan sisällä olevassa lausekkeessa, joka Z-muunnoksen tapauksessa on z, ja DTFT:n tapauksessa exp(iw). Jos siis tiedetään signaalin Z-muunnos, saadaan DTFT yksinkertaisesti sijoittamalla z = exp(iw).

Erityisen mielenkiintoinen Z-muunnos on silloin kun muunnettavana on suotimen impulssivaste (joka on signaali siinä kuin mikä tahansa muukin). Tällöin muunnoksen tuloksesta käytetään nimeä siirtofunktio. Siirtofunktio on rationaalifunktio, jonka osoittajassa ja nimittäjässä on polynomi. Kun tämä lauseke tiedetään, saadaan Fourier-muunnos em. sijoituksella. Tulos H(exp(iw)) on nimeltään taajuusvaste, ja siihen menee sisään reaaliluku w (taajuus josta ollaan kiinnostuneita), ja ulos tulee kompleksiluku. Tämän kompleksiluvun itseisarvo kertoo kuinka suuri vahvistus suotimella on kyseisellä taajuudella.

Kirjallisuudessa suotimista puhutaan yleensä niiden z-muunnoksen kautta. Pikainen haku tuottaa esim. tämän artikkelin, jossa esim. kaava (12) tekee juuri näin. Muistan itse ennen signaalinkäsittelyn opintojani saaneeni tehtäväksi toteuttaa suotimen

H(z) = 1 / (1 - z^-1 + 0.5 z^-2).

Ohjaajani näki jakolaskut C-kielisessä koodissa, ja sanoi: ei näin. Ensi viikolla nähdään miten tämä suodin pitäisi toteuttaa. Jakolaskuja toteutuksessa ei kuulu olla.

Kaiken kaikkiaan asia oli tänään varsin matemaattista. Jos tämä ahdistaa sinua, niin ensi viikolla helpottaa.

tiistai 23. helmikuuta 2010

Välikoe

Kurssin ensimmäinen välikoe oli eilen, ja assareilta kuulin, että sitä oli pidetty haastavana. Välikoejärjestelmä on vielä melko uusi laitoksellamme, ja kysymyksetkin näin ollen melko uusia. Tenttiä vartenhan kysymykset tuppaavat tulemaan prujun loppupuolelta materiaalin kumulatiivisen luonteen vuoksi. Viime vuonnakin välikoetta pidettiin vaikeana, mutta useat saivat silti täydet pisteet.

Kysymykset löytyvät kurssin sivuilta. Tässä muutamia kommentteja niistä.
  1. Ykköstehtävän oikea rivi on E, T, E, E, T, E.
  2. a) 2 x 10 kHz = 20 kHz. b) Fs on nyt 1/0,00125 Hz = 800 Hz. Prujun sivun 4 alalaidan kuvan perusteella 500 Hz laskostuu nyt taajuudelle 300 Hz. c) Samanlainen kuin harkkatehtävä 2.12.
  3. a) Ratkeaa matriisimuunnoksella, ja tulos on [1, -5+2i, 5, -5-2i]. b) Vaikeinta lienee termin y(2-n) muunnoksen laskenta. Tämä saadaan ratkaisemalla ensin y(-n):n muunnos (joka on sama kuin Y, mutta kaikki omegat miinusmerkkisiksi), ja tämän jälkeen lisäämällä kahdella siirron vaikutus (eli lausekkeen y(-n + 2) muunnos). y(2-n):n muunnos on siis exp(2iw) Y(exp(-iw)). x(n-1):n muunnoksen laskenta on helppoa, samoin kuin konvoluution, joka muuttuu Fourier-puolella kertolaskuksi. Päässälaskien sanoisin että kysytty lauseke on exp(2iw) Y(exp(-iw)) exp(-iw) X(exp(iw)), joka vielä vähän sieveneekin. Lauseketta en tällä merkistöllä saa näkyviin. Sivumennen sanoen, x(n) on jono 0.1^n * u(n) ja y(n) = 1, kun n=-5,...,5 ja nolla muulloin (tai lyhyemmin: y(n) = u(n+5) - u(n-6)).
  4. a) Samanlainen kuin tehtävä 2.17. b) Askelvaste voidaan päätellä kuten harkkatehtävässä 2.18 tehtiin. h(n) saadaan yksinkertaisesti sijoittamalla arvot.
  5. a) Impulssivasteen arvot ovat [0.3, -1.2, 1.0, 0.3] välillä n=0,...,3, ja muualla nollia. b) Tässä voidaan käyttää sivun 22 konvoluution ominaisuuksia, joista luennolla piirrettiin kuvatkin. Oikea vastaus on h(n) = h1(n) * h2(n) + h3(n).
Välikokeiden tarkastamisessa menee ehkä parisen viikkoa. Ilmoittautuneita oli reilu 200.

keskiviikko 10. helmikuuta 2010

Diskreetti Fourier-muunnos ja FFT

Tänään käsiteltiin Fourier-muunnos (kappale 3) loppuun. Myös ensi viikon välikokeen alue on kappaleen kolme loppuun. Kannattanee vilkaista myös seuraavat viikkoharjoitukset, koska ne käsittelevät samaa asiaa.

Ensimmäisellä tunnilla tarkasteltiin Fourier-muunnoksen ominaisuuksia. Ominaisuuksista tutustuttiin lähemmin siirtoon ajassa (esim. laske signaalin x(n+20) muunnos, kun tiedetään x(n):n muunnos) sekä konvoluution muunnokseen (DFT muuntaa konvoluution kertolaskuksi, eli x(n)*y(n) -> X(n)Y(n)). Tästä mainittiin kaksi sovellusta. Ensimmäinen niistä on että Fourier-muunnoksen (käytännössä FFT:n) avulla voidaan laskea konvoluutio kaavasta (Matlabin syntaksilla ilmaistuna):

conv(x,y) == ifft(fft(x) .* fft(y))

Toisena esimerkkinä oli dekonvoluutio, eli kysymys mikä olisi konvoluutiolle käänteinen operaatio. Jos siis tiedetään h ja y yhtälöstä

y(n) = h(n) * x(n),

niin kuinka voidaan ratkaista x(n)? Ratkaisu löytyy taajuustasossa, koska

Y(n) = H(n) X(n),

joten

x(n) = ifft (Y(n) ./ H(n)).

Tästä on hyötyä lineaarisen kanavan aiheuttaman häiriön poistossa. Jos tiedetään signaalin x kulkeneen kanavan h läpi, voidaan vastaanotetusta mittaustuloksesta y päätellä x, jos meillä on joku käsitys kanavasta h. Esimerkkinä tästä mainittiin langattoman tiedonsiirtokanavan estimointi ja sen aiheuttaman vääristymän kompensointi.

Luennon lopuksi käsiteltiin nopeaa Fourier-muunnosta eli FFT:tä, joka on vain nopeampi tapa toteuttaa diskreetti Fourier-muunnos (DFT). FFT perustuu signaalin jakamiseen lyhyempiin pätkiin, jotka muunnetaan jakamalla ne edelleen rekursiivisesti kahtia. Rekursio päättyy, kun muunnoksen pituus on 1, jolloin muunnosta ei tarvitse enää tehdä. 1-ulotteisen vektorin tapauksessa muunnosmatriisi on yksinkertaisesti F = [1], joka tarkoittaa pelkkää ykkösellä kertomista eikä sitä tarvitse tehdä. Lyhyemmistä vektoreista saadaan koostettua pidemmät vektorit kaavoilla (3.3) ja (3.4).

keskiviikko 3. helmikuuta 2010

Fourier-muunnos

Tänään luennolla käsiteltiin alkupuoli Fourier-muunnoksesta. Ennen itse asiaa demottiin oskilloskooppia, jossa oli myös spektrianalysaattoritoiminto, ja laite laski taajuusjakaumaa Fourier-muunnoksen avulla reaaliajassa.

Fourier-muunnoksen idea on kysyä paljonko eri taajuuksia annetussa signaalissa on. Taululla oli alla olevan piirroksen kaltainen kuva. Kuvan "yhtälössä" vasemmalla oleva signaalin pätkä jaetaan eri taajuuksiin kysymällä paljonko tarvitaan vakiotaajuutta (0.3 kpl), paljonko kerran värähtävää siniä (0.6 kpl), jne. Sama idea on kaikkien neljän muunnostyypin takana, mutta erona on montako eri taajuutta tarvitaan muodostamaan alkuperäinen signaali. Joissain tapauksissa niitä tarvitaan äärettömän paljon, jolloin kuvan summan sijaan tarvitaan integraali.

Jatkuvat tapaukset perustuvat siis integraalin laskentaan, ja käytännössä tämä täytyy tehdä muunnostaulukoiden avulla. Käsin laskettavien kolmen ensimmäisen muunnostyypin jälkeen tutustuttiin lopuksi diskreettiin Fourier-muunnokseen, joka voidaan esittää matriisimuunnoksena. Muunnosmatriisi muodostetaan lisäämällä rivi kerrallaan ykkösen n:nnen juuren eri potensseja. Ensimmäisellä rivillä potenssit hyppivät nollan askeleen välein, toisella yhden askeleen, kolmannella kahden, jne. Idea käy ehkä ilmi parhaiten sivun 41 alimman matriisin kautta. Matriisissa olevien lukujen päättelyssä auttaa graafinen tulkinta: wN on yksikköympyrällä kulmassa 1/N oleva luku, ja sen potenssit saadaan vaihekulman monikertoina. Alla oleva kuva esittää kuinka tapauksen N = 4 muunnosmatriisi päätellään yksikköympyrältä.

keskiviikko 27. tammikuuta 2010

LTI-järjestelmät ja konvoluutio

Tänään käsiteltiin kappale 2 loppuun. Luennon alussa muistutettiin mieleen suodatuksen idea demon avulla (ks. kuva). Kuvassa ylimpänä on suodatettava signaali, joka etenee vasemmalta oikealle. Jokaisen uuden näytteen saapuessa (kuvan ulkopuolelta vasemmalta) kerrotaan punaisella merkityt näytteet kuvan keskellä keskellä olevilla kertoimilla. Näin saadut tulot lasketaan yhteen ja sijoitetaan tulos alla olevan kuvan punaisella merkityksi uusimmaksi vastearvoksi.

Tämän jälkeen jatkettiin teoreettisemmalla asialla, eli kappaleen 2.2 diskreettien järjestelmien ominaisuuksilla. Näistä lineaarisuus ja aikainvarianssi ovat ne perusominaisuudet jotka otetaan myöhemmän tarkastelun lähtökohdaksi. Myös stabiilisuus on kriittinen ominaisuus, koska epästabiililla suotimella ei tee mitään.

Kappaleessa 2.3 tarkastellaan LTI-järjestelmiä, eli järjestelmiä jotka ovat lineaarisia ja aikainvariantteja. Kappaleen alussa osoitetaan, että LTI-järjestelmät voidaan esittää konvoluution avulla (josta on esimerkki yo. kuvassa). LTI-järjestelmän hieno ominaisuus on, että sen impulssivaste määrää vasteen mille tahansa herätteelle. Esimerkkinä tästä tutustuttiin demoon, jossa impulssivaste oli saatu lyömällä käsiä yhteen kirkossa (ts. generoimalla impulssi) ja mittaamalla vaste, josta kaiku oli selvästi kuultavissa. Näin saatua impulssivastetta voidaan käyttää mallina tilan akustisista ominaisuuksista, ja myös kotivahvistinten tilaefektit (hall, arena, club, jne.) on toteutettu tällä periaatteella. Mallia testattiin laskemalla konvoluutio seiska-testisignaalin ja kyseisen impulssivasteen kesken. Tulos kuulosti kuin testisignaali olisi viety kirkkoon.

Toisena esimerkkinä konvoluution käytöstä reaalimaailman mallina mainittiin monitie-eteneminen tietoliikenteessä.

Konvoluution ominaisuuksien käsittelyn yhteydessä tuotiin esille niiden yhteys LTI-järjestelmien yhdistämiseen: peräkkäiset tai rinnakkaiset LTI-järjestelmät voidaan esittää yhtenä järjestelmänä ja toisaalta niiden järjestys ei vaikuta lopputulokseen.

Kappaleen lopussa määriteltiin FIR- ja IIR-suotimet LTI-järjestelmien alalajeina. FIR-suotimet ovat yksinkertaisuutensa vuoksi laajemmin käytettyjä, mutta IIR-suodinten ilmaisuvoima ja laskennallinen tehokkuus tekevät niistä hyödyllisiä useissa tilanteissa. IIR-suotimet ovat analogisten suodinten digitaalinen vastine, ja niiden kertoimet saadaankin suunnittelemalla ensin vastaava analoginen suodin ja muuntamalla tulos digitaaliseksi ns. bilineaarimuunnoksella.

Testikysymys: onko seuraava suodin FIR vai IIR?

y(n) = 0.9 y(n-1) - y(n-2) + x(n) + 0.5 x(n-1) +2 x(n-2)

Tähän nyt varmaan jokainen tietää vastauksen. Haastavampaa on selvittää esim. se, onko yo. suodin stabiili. Tähän ratkaisu löytyy prujun sivulta 68, johon pääsemme aikanaan.

keskiviikko 20. tammikuuta 2010

Sovelluksia ja signaalien ja järjestelmien perusteita

Tänään käsiteltiin monisteen sivut 5-15. Ensimmäisena asiana vertailtiin digitaalisia suotimia vastaaviin analogisiin suotimiin. Esimerkiksi kurssilla opittava tietyn taajuuskaistan poistava suodin on mahdollista toteuttaa myös analogisesti. Kysymys kuuluukin miksi sama pitäisi tehdä digitaalisesti. Prujussa mainittujen lisäksi digitaalisuudesta on (ainakin) kolme merkittävää etua:
  1. "Digitaalinen toiminnallisuus" tarkoittaa suomeksi softaa, jonka ainutkertainen ominaisuus on että saman tuotteen voi myydä useaan kertaan. Tästä syystä myös Bill Gates on maailman rikkain ihminen. Jos myyntimäärät ovat riittävän suuria, monimutkaisenkin softan toteutuksen hinta on mitätön suhteessa siitä saatavaan hyötyyn. Kannattaa siis hyvinkin palkata 10 DI:tä tekemään softalla ratkaisu, joka laskee lopputuotteen tuotantokustannusta esim. vain 10 senttiä, jos tuotetta myydään miljoonia kappaleita.
  2. Digitaalisuunnittelu on usein helpompaa kuin analogiasuunnittelu. SDSU:n kuuluisa professori frederick j. harris [sic] vertasi puheessaan työskentelyä digitaalisessa maailmassa työskentelyyn San Diegossa ja työtä analogisella puolella työhön Minnesotassa. San Diegossa on suunnilleen Välimeren ilmasto ja Minnesotassa suunnilleen Suomen ilmasto.
  3. Softatoteutus on joustavampi. Jos syystä tai toisesta tuotteen vaatiman suotimen vaatimukset muuttuvat, analogiatoteutukseen tilatut komponentit menevät romukoppaan. Digitaalisen suotimen tapauksessa käännetään softasta uusi versio ja aloitetaan tuotanto.
Kappaleen 2 alussa käsitellään usein käytettyjen jonojen perusmääritelmät ja lohkokaavioiden perusoperaatiot. Näiden käsittelyn aikana kurkattiin jo tulevaan: tämän kurssin suotimet voidaan esittää konvoluution avulla, joka laskee painotetun keskiarvon N:stä viimeksi sisään tulleesta näytteestä.

keskiviikko 13. tammikuuta 2010

Vanhat harkkapisteet

Muutama opiskelija kyseli vanhoista harkkabonuksista ja paljonko niitä mahtoikaan olla.

Vanhat sivut ja harkkapisteet ovat tallessa jossain palvelimen syövereissä, kunhan osaa arvata osoitteen. Tässä pari linkkiä:

http://www.cs.tut.fi/kurssit/SGN-1200/Kes07/harjoitukset/
http://www.cs.tut.fi/kurssit/SGN-1200/K08/harjoitukset/

Harkat ovat voimassa edelleen, mutta niitä ei voi täydentää vaan uusien pisteiden kerääminen alkaa nyt nollasta.

Kurssiblogi perustettu

Kurssin SGN-1200 kurssiblogi on perustettu. Blogissa kirjataan jokaisen luennon jälkeen luennolla käydyt asiat lyhyesti. Lisäksi käsittelen blogissa luennolla tai sen jälkeen esiin nousseita kysymyksiä, luennolla käytyjä linkkejä, jne.

Tänään luennolla käsiteltiin kurssin hallinnolliset asiat, tehtiin prujutilaukset sekä käsiteltiin luentomonisteen alkua. Prujujen monistuksesta vastaa Tele-kilta, jota voi vielä yrittää lähestyä prujutilauksella. Prujun tilanneihin otetaan yhteyttä sähköpostitse mistä ja koska sen saa hakea.

Toisella tunnilla varsinaista asiaa alustettiin puhumalla A/D-muunnoksesta, digitaalisista signaaleista, digitaalisista suotimista sekä Fourier-muunnoksesta. Täsmällisemmin nämä asiat käsitellään myöhemmin kurssilla. Erästä testisignaalia (seiska.mat) tarkasteltiin Matlabilla, ja todettiin, että spektrogrammissa näkyvät selvästi eri äänteet.

Ensimmäisenä varsinaisena asiana käsiteltiin näytteenottoteoreema, jonka mukaan naytteistämisessä ei häviä informaatiota, jos näytteenottotaajuus on vähintään tuplat signaalin korkeimpaan taajuuteen nähden. Käytännössä ennen näytteistystä täytyy siis poistaa liian korkeat taajuudet analogisella suotimella ettei laskostumista pääsisi tapahtumaan. Lopuksi verrattiin ilmiötä videokuvaan, jossa esimerkiksi kärrynpyörä saattaa näyttää pyörivän väärään suuntaan. Sääntö on tässäkin tapauksessa sama: kuvia pitää ottaa vähintään kaksi per kierros. Aikaisempina vuosina on luennon jälkeen keskusteltu miksi live-tilanteessakin pyörät saattavat näyttää pyörivän väärään suuntaan tai miksi herkemmät ihmiset saattavat havaita loisteputkien värinän. Yksi tulkinta molemmista on että myös ihmisaivot toimivat tietyllä "kellotaajuudella", joka määrää sen minkä taajuiset ilmiöt voidaan havaita.

Luennon jälkeen kysyttiin voiko jollain lailla tehdä sekä tentin että välikokeen (ja missä vaiheessa valinta suoritustavasta täytyy tehdä). Valinta täytyy tehdä vasta toisessa välikoetilanteessa: 2. välikoe on samaan aikaan tentin kanssa, ja kaikki saavat sekä välikokeen että tentin kysymykset. Vastata saa joko 2. välikokeeseen tai tenttiin. Valinta kannattanee tehdä 1. välikokeen menestyksen perusteella sekä sen mukaan kummat tehtävät näyttävät helpommalta. Koska suoritustavan valinnan voi tehdä näinkin myöhään, ei liene mitään syytä olla menemättä 1. välikokeeseen.