keskiviikko 2. joulukuuta 2009

Tulostettavaa elektroniikkaa ja kanditöitä

Tänään ensimmäisellä tunnilla SGN-laitoksen tutkimusapulainen Tapio Manninen kävi esittelemässä diplomityönsä aihetta: konenäköjärjestelmää tulostettavan elektroniikan käyttöön. Erityisenä tutkimuskohteena tarkasteltiin menetelmää piirilevyn korvaajaksi. Tässä tapauksessa elektroniikan komponentit kytketään toisiinsa tulostetuilla johtimilla, jossa muste on sähköisesti johtavaa. Menetelmässä on haasteellista komponenttien siirtymät ennen tulostusta, mistä johtuu etteivät kytkentäpisteet välttämättä olekaan siellä missä niiden pitäisi. Tapion diplomityössä on kehitetty menetelmä kytkentäpisteiden todellisen sijainnin selvittämiseksi. Todellisia kytkentäpisteitä verrataan kytkentäkaavion sijainteihin: ratkaistaan siis missä pisteiden pitäisi olla ja missä ne todellisuudessa ovat. Tämä tehdään ns. Point Pattern Matching -algoritmilla. Kun pisteiden poikkeamat saadaan ratkaistua, täytyy kytkentäkaaviota korjata niin että se sopii kullekin modulille.

Toisella tunnilla luotiin katsaus laitoksella viime aikoina tehtyihin kanditöihin. Työt löytyvät zip-paketista. Latauksen tunnus on sgnkandi ja salasana motiivi.

keskiviikko 25. marraskuuta 2009

Epälineaarinen suodatus ja tilastollinen signaalinkäsittely

Päivän aihe oli epälineaarinen signaalinkäsittely (kappale 7), jonka lisäksi tutkailtiin varovasti tilastollisen signaalinkäsittelyn aihepiiriä. Epälineaariset suotimet saattavat tarjota vaihtoehdon lineaarisille suotimille (FIR ja IIR) silloin kun häiriö ja signaali sijaitsevat samalla taajuusalueella. Klassisin epälineaarinen suodin on mediaanisuodin, jonka ulostulo on suuruusjärjestyksessä keskimmäinen ikkunan sisällä olevista arvoista. Tätä vertailtiin demossa lineaarisen suotimen kanssa sekä äänen että kuvan suodatuksessa. Lopuksi tarkasteltiin vielä suotimen robustisuusmittoja, ja erityisesti murtumapistettä.

Viimeisen 15 minuutin aikana luotiin katsaus tilastolliseen signaalinkäsittelyyn ja erityisesti parametrien estimointiin. Ideana on luoda malli signaalista, joka riippuu tietyistä parametreista. Ongelmana on tämän jälkeen kehittää menetelmä näiden parametrien valintaan mitatun datan perusteella. Esimerkkinä voisi olla signaali, jonka tiedetään olevan sinimuotoinen, mutta amplitudi, vaihe sekä taajuus eivät ole tiedossa. Tähän ongelmaan on olemassa estimaattori, joka arvioi optimaalisesti kohinaisesta datasta näitä kolmea parametria.

Seuraavaksi vilkaistiin esimerkkiä käytännön elämästä, jossa erään järjestelmän tilasta voidaan tehdä mittaus, jonka perusteella halutaan säätää järjestelmän erästä toista parametria. Käsin mittaamalla voidaan kehittää opetusaineisto "hyvistä" kombinaatioista (xk, yk), k = 1,2,...,N. Nämä ovat siis käsin mitattuja arvoja: kun mittaus on xk, kannattaa säätöruuvin olla asennossa yk. Näiden perusteella halutaan laskea funktio y = f(x), jolla voidaan ennustaa hyvä lukuarvo y:lle myös kun x ei ole mikään käsin mitatuista. Tätä varten muodostetaan ns. havaintomatriisi (observation matrix), jossa on mukana ne funktiot, joista f pystytään toivottavasti koostamaan. Esimerkiksi seuraavat rivit laskevat parhaan toisen asteen polynomin arvioimaan xk:n ja yk:n välistä riippuvuutta:

x = [1,2,3,4,5,6,7,8];
y = [18,15,12,11,11,11,13,16];
H = [ones(8,1), x, x.^2];

t = inv(H'*H)*H'*y;


Tuloksena saadaan vektoriksi t = [22.5893, -4.9821, 0.5179]T, eli paras toisen asteen relaatio vektoreiden x ja y välille on y = 22.5893 - 4.9821 * x + 0.5179 * x2. Menetelmä on ns. pienimmän neliösumman estimaatti, jonka Gauss keksi jo 18-vuotiaana pohdiskellessaan mallia Ceres-kääpiöplaneetan radalle.

Viimeisen 15 minuutin tavoitteena oli osin antaa rehellinen kuva signaalinkäsittelyn oppiaineesta: aihe vaatii matematiikan osaamista (tai ainakaan kaavoja ei saa pelätä). Toisaalta matematiikkaa pelkäämättömälle aihe tarjoaa hienon mahdollisuuden toteuttaa itseään mielenkiintoisten sovellusten parissa. Kriittisiä taitoja signaalinkäsittelijälle on mm. ohjelmointitaito, koska menetelmät miltei aina tullaan toteuttamaan ohjelmiston osana. Näin ollen ilman ohjelmointitaitoa ei kannata valmistua signaalinkäsittely pääaineenaan.

keskiviikko 18. marraskuuta 2009

Signaaliprosessorit

Tämän päivän luennolla käsiteltiin kappale signaaliprosessoreista. Tärkeimmät syyt niiden käyttöön ovat yksinkertaisuus, halvempi hinta sekä pienempi virrankulutus. Kuitenkin niistä saa riittävästi tehoa signaalinkäsittelyn tarpeisiin, koska alan tarvitsemat operaatiot ovat nopeita (kertolasku, yhteenlasku). Esimerkiksi FIR-suodatuksen tarvitsemat kertolaskut ja yhteenlaskut voidaan suurelta osin laskea rinnakkain ns. MAC-operaation avulla. Vastaavia operaatioita on nykyisin myös tavallisissa prosessoreissa, ja ensimmäinen tällainen laajennus oli Intelin MMX-käskykanta vuodelta 1997.

Ensi viikon viikkoharjoituksissa koodataan FIR-suodin luokan TC303 signaaliprosessoreille. Olennaisimmat vaiheet olivat:
  1. Suodin suunniteltiin Matlabin fir1-rutiinilla.
  2. Kertoimet kopioitiin C-koodiin.
  3. C-kieliseen pohjaan kirjoitettiin for-silmukka, jossa kertoimet käydään läpi.
  4. Ulostulonäyte kirjoitetaan D/A-muuntimelle.
Vaiheessa 3 on kiinnitettävä huomiota circular buffering-tekniikkaan, jotta viitataan oikeisiin aiemmin sisään tulleisiin alkioihin.

keskiviikko 11. marraskuuta 2009

Oppivat järjestelmät

Tänään käytiin läpi kappale 8, joka prujussa on nimellä Hermoverkot, mutta uudessa versiossa on nimeltään Oppivat järjestelmät.

Oppivien järjestelmien ideana on esittää järjestelmälle näytteitä ja opettaa se tuottamaan oikea ulostulo kun sille esitetään opetusjoukkoon kuulumaton uusi näyte. Yksi oppivien järjestelmien osajoukko ovat luokittelijat, jossa ulostulo kertoo luokan johon esitetty näyte kuuluu.

Suosittuja luokittelualgoritmeja ovat ainakin seuraavat (kasvavan monimutkaisuuden järjestyksessä):
Kaikki näistä käsiteltiin luennolla, ja luentomonisteen uudessa versiossa esitellään kolme viimeisintä. KNN on ideana yksinkertaisin: kaikki opetusdata pidetään muistissa ja uuden näytteen tullessa etsitään k samanlaisinta näytettä, ja valitaan näistä yleisin luokka. Tyypillisesti k on vajaan kymmenen luokkaa, mutta voi olla suurempikin; esim. 30. Mitä suurempi k on, sitä sileämpi luokkarajasta tulee. Vaikka KNN:n luokittelutulos onkin melko hyvä, on sen ongelmana suuri muistin tarve sekä laskennallinen kompleksisuus. Koko opetusjoukko täytyy nimittäin säilyttää muistissa, josta etsitään k lähintä naapuria jokaisen luokittelun yhteydessä. Sekä tilantarve että etsinnän vaatima aika voivat olla ongelmallisia jos opetusjoukossa on esim. 100000 alkiota.

Luentomonisteen ensimmäinen menetelmä on LDA. Ennen sitä pruju esittelee yksinkertaisemman version samasta ideasta, jossa raja piirretään luokkien keskipisteiden puoliväliin. Tämä ei kuitenkaan toimi, jos luokat ovat "limittäin". Näin päädytäänkin LDA:han, joka ottaa limittäisyyden huomioon.

LDA:ta parempi tulos saadaan (yleensä) käyttämällä SVM:ää. SVM:n ominaisuutena on luokkien välisen marginaalin maksimointi. Tästä on iloa eritoten, jos data on korkeaulotteista. Lisäksi se tarjoaa paremman vaihtoehdon haluttaessa käyttää ns. kernelitemppua, joka kuvaa datan keinotekoisesti korkeampiulotteiseen avaruuteen. Korkeampiulotteisessa avaruudessa on enemmän tilaa, ja siellä on tyypillisesti helpompi löytää lineaarinen päätöspinta joukkojen väliin. Dataa ei konkreettisesti tarvitse kuitenkaan kuvata toiseen avaruuteen, koska kernelitemppu tekee saman yksinkertaisesti korvaamalla kaikki sisätulot sopivalla kernel-funktiolla.

SVM on ollut suosituin luokittelualgoritmi tällä vuosikymmenellä, koska se ei ole herkkä ylioppimisilmiölle. Lisäksi suosion syynä on sen yksinkertainen ja laskennallisesti tehokas toteutus, mutta mukana lienee myös hypeä liittyen optimointialgoritmin syvälliseen matematiikkaan jonka vain harva ymmärtää kunnolla.

Tämän jälkeen paneuduttiin hermoverkkojen opetukseen, ja mainittiin lyhyesti opetusalgoritmin perustuvan derivaattaan ja ketjusääntöön. Näiden avulla voidaan päätellä suunta, jossa luokitteluvirhe pienenee jyrkimmin, ja kyseiset kaavat löytyvät esim. täältä. Perus- backpropagationin lisäksi on olemassa kehittyneempiä ja nopeampia opetusalgoritmeja, ja esim. Matlabissa niitä on lähes parikymmentä. Olennaisin ero algoritmien välillä on niiden nopeudessa ja muistin tarpeessa.

Luennon lopussa laitettiin verkon opetus pyörimään, ja opetettiin sitä luokittelemaan suomalaisissa rekisterikilvissä olevia kirjaimia ja numeroita (vrt. prujun esimerkki). Opetusaineistona oli n. 7000 kirjainta ja ajo kesti vain 5 minuuttia. Tulosta demottiin skriptillä, jossa hiirellä voitiin näyttää merkin summittainen sijainti isossa kuvassa, ja verkko luokitteli sen johonkin luokkaan. Todettiin, että luokittelun suhteen oli kriittistä mikä kohta tarkalleen verkolle syötettiin. Yleisemminkin käytetty GIGO-periaate pitää siis paikkansa tässäkin yhteydessä. Luennolla ei otettu kantaa siihen miten järjestelmä löytää verkolle syötettävät merkit, mutta joitain yleisimpiä ratkaisuja kuvaillaan wikipedian feature detection -artikkelissa.

Lisäksi aivan alussa vilkaistiin OpenCV-pakettia, jonka kasvontunnistusesimerkkiä demottiin luennolla sekä alkuviikon opintosuunnistuksessa. OpenCV on vapaan lähdekoodin C++-kielinen paketti, joka on hyvä lähtökohta tutustua konenäköön lähemmin (CV = computer vision). Kasvontunnistusdemo toimii useiden webbikameroiden kanssa "heittämällä". OpenCV:n kasvontunnistus perustuu yksinkertaisten luokittelijoiden yhdistämiseen, niin että jokainen pyrki löytämään mahdollisimman suuren osan ei-kasvoista. Koska näitä on paljon enemmän kuin kasvoja, tulee toteutuksesta tehokas. Menetelmä esiteltiin v. 2004 ja sitä on kutsuttu läpimurroksi.

Perinteisempi tapa etsii kasvokandidaatteja ihonvärin perusteella ja syöttää ne hermoverkolle. Koska kasvojen ala kuvassa voi olla melko suuri, pudotetaan kasvokandidaatin dimensiota esim. 100 x 100 = 10000 komponentista esim. neljäänkymmeneen käyttäen ns. pääkomponenttianalyysiä.

OpenCV on myös muuten lupaava alusta konenäköprojektien toteutukseen Matlabin sijaan. Toinen yleinen vaihtoehto on Java-kielinen ImageJ.

keskiviikko 4. marraskuuta 2009

Audiokompressio

Tänään käsiteltiin kappale 6: audiokompressio. Audiokompression ideana on tallentaa äänisignaali häviöllisesti poistaen bittejä sieltä missä kuulo ei niitä havaitse. Tässä auttaa kuulon ominaisuuksien tuntemus, joista olennaisin osa on s. 81 kuulokäyrä. Kuulo havaitsee matalia ja korkeitä ääniä heikommin kuin keskiääniä. Tämän vuoksi epätarkemmin havaittavat taajuudet voidaan esittää pienemmällä bittimäärällä. Tässä yhteydessä on hyvä muistaa että jokainen poistettu bitti lisää kvantisointikohinaa kuudella desibelillä. Kysymys voidaan siis asettaa muotoon: "montako kuuden desibelin palikkaa kuulokäyrän alle mahtuu kullakin taajuudella". Lisätilaa kuuden desibelin palikoille saadaan havaitsemalla, että äänet peittävät heikompia ääniä alleen. Tässä tapauksessa siis itse kompressoitava signaali peittää näitä heikompia kuuden desibelin palikoita. Luennolla nähtiin myös esimerkki siitä miltä tulosmaski saattaisi näyttää yksittäisen piippauksen ympäristössä.

Jotta kuulomallia voitaisiin käyttää, täytyy signaali jakaa taajuuskaistoihin. Tämä tehdään kaistanpäästösuotimilla, ja kaistoja mp3-standardissa on 32. Kukin kaista voidaan alinäytteistää kertoimella 32, jolloin dataa on saman verran kuin alun perin. Nämä kaistat voidaan sitten kvantisoida kuulomallin mukaisesti. Palautettaessa alkuperäistä näytteenottotaajuutta riittää tehdä ylinäytteistys (nollien lisääminen) kertoimella 32, jolloin havaitaan, että aiemmin laskostunut signaali pomppaakin oikealle paikalleen ja vieläpä oikein päin --- siinäkin tapauksessa, että se olisi sattunut laskostumaan peilikuvakseen.

keskiviikko 28. lokakuuta 2009

28.10: Spektrin estimointia

Tämän päivän luennon aiheena oli signaalin taajuusjakauman laskenta mahdollisimman tarkasti. Tarkkuutta tarvitaan eritoten signaalianalyysissä, jossa taajuussisällön perusteella tehdään johtopäätöksiä esimerkiksi potilaan taudin laadusta. Jakauman laskenta eli spektrin estimointi onnistuu toki normaalilla diskreetillä Fourier-muunnoksella, mutta ei tuota täysin oikeaa tulosta, jos signaalin taajuuskomponenttien jaksot eivät ole samat kuin tarkasteluikkunan pituus. Sivun 66 alimmassa kuvassa on tilanne, jossa signaalin taajuus osuu juuri kahden muunnoskomponentin väliin, jolloin energia jakautuu lähellä oleville taajuuskomponenteille.

Ongelmaa voidaan lähestyä kahdesta suunnasta: ensimmäinen ratkaisu on käyttää pidempää ikkunaa, jolloin kaytettävissä olevien taajuuskomponenttien määräkin kasvaa. Joissain tilanteissa pituutta ei kuitenkaan voida määrättömästi kasvattaa esim. seuraavista syistä:
  • Mittaus on hidasta tai kallista. Esimerkiksi laitoksen systeemibiologian ryhmä tarkastelee eri organismien geenien aktiivisuutta ns. microarraymenetelmällä. Vaikka mittausten hinta onkin laskenut rajusti viime vuosina, saattaa jokainen aikasarjan näyte maksaa edelleenkin tuhansia euroja. Tutkittaessa esimerkiksi eri geenien toiminnan jaksollisuutta solusyklin aikana täytyy jaksollisuuden eli taajuuksien analyysin toimia luotettavasti hyvinkin pienellä näytemäärällä.
  • Sovellus ei salli viivettä spektrin estimoinnissa. Esimerkiksi moottorin tai työkoneen toiminnan optimaalisuuden tarkastelu saattaa vaatia jaksollisuuden tarkastelua vaikkapa käynnin tasaisuuden arvioinnissa. Jotta saatua tietoa voitaisiin käyttää tehokkaasti säädön apuna, täytyy viiveen olla melko lyhyt.
  • Laskenta-aikaa on vain rajallinen määrä. Reaaliaikaisissa sovelluksissa, joissa laskentakapasiteettia ei voida lisätä rajatta, täytyy ottaa huomioon menetelmän laskennallinen kompleksisuus. Fourier-muunnoksen laskenta on kompleksisuudeltaan O(n2), eli pituuden tuplaus nostaa laskennan määrän nelinkertaiseksi. Vaikka käytettäisiinkin alempana mainittua nollien lisäystä, voidaan näistä aiheutuva pituuden lisäys optimoida osin pois laskennasta.
Spektriin saadaan lisää taajuuskomponentteja lisäämällä näytteitä keinotekoisesti. Pienimmät sivuvaikutukset saadaan kun lisätään signaalin loppuun nollia. Tämä auttaa esimerkiksi sivujen 67-68 kuvien mukaisesti löytämään voimakkaimman taajuuden, joka 16 pisteellä suoraan ei löytyisi.

Sivuvaikutuksena nollien lisäämisellä on spektriin ilmestyvät komponentit jota ei todellisuudessa ole. Luennolla todettiin, että yksittäisen taajuuden tapauksessa Fourier-muunnos näyttääkin ikkunan Fourier-muunnoksen siirrettynä oikeaan paikkaan. Käytettävät ikkunat ovat samoja kuin suodinsuunnittelun yhteydessäkin, ja niiden avulla voidaan poistaa spektrin sivukeiloja (lisää ikkunoita harrisin artikkelista). Sivukeilojen poistumisen sivuvaikutuksena pääkeila kuitenkin leviää, joten ikkunan valinta on aina kompromissi samalla lailla kuin suodinsuunnittelussakin. Ikkunoiden vertailun helpottamiseksi niille voidaan laskea kuvaavia tunnuslukuja, joita esitellään kappaleissa 5.2.1-5.2.4.

Varsinaisen prujun asian lisäksi demottiin oskilloskooppia, jossa on myös spektriestimointi-toiminto. Havaittiin, että käytetyssä mallissa on mahdollista valita joko suorakulmainen ikkuna tai Hanning-ikkuna. Lisäksi nähtiin, että tietokoneen äänikortin epäideaalisuudet löytyivät spektristä vain Hanning-ikkunan avulla; ei pelkällä suorakulmaisella ikkunalla. Riittävän kovalla äänenvoimakkuudella tietokone nimittäin leikkaa sinisignaalin huiput tasaisiksi. Tämän säröefektin Fourier-sarja olisi mahdollista laskea analyyttisestikin, ja sen avulla voidaan ääni saada kuulostamaan voimakkaammalta keinotekoisesti---temppu jota käytetään esimerkiksi tekemään mainoksista kovaäänisempiä.

keskiviikko 14. lokakuuta 2009

Akustinen paikannus ja adaptiivinen signaalinkäsittely

Ensimmäisellä tunnilla Pasi Pertilä laitokselta esitteli tutkimuskohdettaan: akustista paikannusta. Akustinen paikannus käyttää useaa mikrofonia, ja arvioi eroja näihin saapuvan äänen viiveissä; tästä menetelmästä käytetään englanninkielistä nimeä Time Difference of Arrival (TDOA). Samaa ideaa käyttävät myös ihmiset sekä luultavasti muutkin kaksikorvaiset olennot: alitajuisesti aivosi arvioivat viivettä sekä taajuusvastetta, ja voit päätellä mistä suunnasta ääni tulee vaikka silmät kiinni. Jos puhuja on oikealla puolellasi, kuulet äänen muutaman millisekunnin aikaisemmin oikealla korvallasi. Lisäksi osaat myös silmät kiinni päätellä onko puhuja takanasi vai edessäsi äänen vaimentumien perusteella (keskiäänet läpäisevät korvalehden keskimääräistä paremmin, joten takaa tulevassa äänessä matalat ja korkeat taajuudet ovat vaimentuneet).

Tietokoneella tehtävä ääneen perustuva paikannus perustuu suurelta osin todennäköisyyslaskentaan. Kunkin mikrofonin kohdalta voidaan laskea tiheysfunktio siitä mistä suunnasta ääni sen mielestä tulee. Yhdistämällä eri mikrofonien tiheysfunktiot (todennäköisyyslaskennan kertolaskusäännöllä) saadaan todennäköisin alue mistä ääni tulee. Sen lisäksi voidaan arvioida paikan estimoinniin tarkkuutta ns. Dilution of Precision (DOP) -menetelmällä. Muita esillä olleita matemaattisia termejä olivat mm. tilastollisesta signaalinkäsittelystä tutut pienimmän neliösumman sovitus, Bayesin kaava sekä Cramer-Rao-alaraja. Kaavarykelmän tarkoitus ei ollut pelotella, vaan paremminkin näyttää ettei joissakin sovelluksissa selvitä ilman syvällisempää matematiikkaa. Samoja asioita tutkitaan myös matematiikan laitoksella mutta hieman eri sovelluksen yhteydessä.

(Tästä tuli mieleeni tarina, jonka mukaan teekkarisaunalla fukseilta oli kysytty vuoronperään minkä ovat ajatelleet pääaineekseen. Kun kymmenen ohjelmistofuksin jälkeen yksi oli maininnut signaalinkäsittelyn, oli seurauksena ollut naurunrämäkkä. Signaalinkäsittely on kuulemma niin vaikeaa ja irti tästä maailmasta ettei siellä voi pärjätä. Tästä on jo 10 v aikaa, ja sen jälkeen opetusta on pyritty tekemään ymmärrettävämmäksi ja sovellukset ovat vallanneet tietokoneiden työpöydät ja ihmisten taskut, joten epäilen että ei enää naurata.)

Toisella tunnilla käytiin kappale 4 loppuun. Tarkastelimme vielä LMS-algoritmia ja sen toimintaa. Lisäksi mietittiin mitä tapahtuu jos parametri mu on liian iso: ratkaisu alkaa heittelehtiä kauemmas ja kauemmas optimista, poukkoillen sen molemmin puolin. Tämähän on luonnollinen seuraus kaavasta

w := w - mu * grad (c(w)),

missä grad (c(w)) on kustannusfunktion gradientti. Kustannusfunktio on paraboloidin muotoinen, joten kauempana optimista myös gradientti kasvaa. Näin värähtely optimin molemmin puolin vahvistuu ja vahvistaa itseään. Ensi maanantaina on ensimmäinen välikoe. Ilmoittautuminen tähän päättyi jo, mutta poikkeuksellisesti tällä kertaa jälki-ilmoittautuminen on mahdollista. Syynä että en tarpeeksi mainostanut asiaa, ja POP:in bugi on estänyt ilmoittautumisen joiltakin. Jos et ole ilmoittautunut vielä, lähetä sähköposti otsikolla Jälki-ilmoittautuminen välikokeeseen osoitteeseen heikki.huttunen@tut.fi keskiviikkoiltaan 14.10 klo 21:00 mennessä. Liitä viestiin nimesi ja opiskelijanumerosi. Välikokeen 19.10 koealue on monisteen sivut 1-63. Siis myös kappaleen 4 harjoitustehtäviin (ainakin ei-matlab-tehtäviin) kannattaa perehtyä.

keskiviikko 7. lokakuuta 2009

Adaptiivinen suodatus

Tänään käsiteltiin monisteen kappale 4: adaptiivinen suodatus. Adaptiivisten suodinten ideana on oppia suotimen kertoimet tilanteen mukaan. Perusrakenne vaatii aina kaksi signaalia: referenssisignaalin sekä kohdesignaalin, ja kokonaisuudesta on kuva sivulla 47. Adaptiivinen suodin pyrkii saamaan referenssin ja suodatetun kohdesignaalin mahdollisimman lähelle toisiaan. Termi mahdollisimman lähelle määritellään täsmällisesti kustannusfunktion avulla, joka on erotuksen neliön odotusarvo. Tällöinhän täytyy enää löytää adaptiiviselle suotimelle ne kertoimet, jotka minimoivat kustannusfunktion.

Adaptiivisen suodatuksen toinen puoli on keksiä mikä olisi referenssisignaali ja mikä kohdesignaali. Toimintaperiaatteensa mukaan AS pyrkii suodattamaan kohdesignaalin niin, että se on mahdollisimman identtinen kopio referenssisignaalista (tai jostain sen osasta). Kohinanpoiston yhteydessä tilanne on yleensä sellainen, että kohdesignaali sisältää pelkkää häiriötä ja referenssi häiriön sekä etsittävän hyötysignaalin. Yksinkertaistettuna AS siis tekee vähennyslaskun:

tulos = referenssi - kohde

eli

tulos = (häiriö + hyöty) - häiriö

Koska y.o. kaavan termi häiriö ei ole sama referenssissä ja kohteessa (esim. viiveet, vaimennukset jne.), täytyy väliin heittää suodatin F:

tulos = (häiriö + hyöty) - F(häiriö),

joka muuntaa kaksi häiriökomponenttia identtisiksi.

Häiriönpoiston ja muiden sovellusesimerkkien lisäksi esiteltiin mm. esimerkki kaiunkumouksesta, sikiön sydänäänten tunnistuksesta sekä yleisestä häiriönpoistosta jotka voi ratkaista adaptiivisilla suotimilla.

Kappaleessa 4.5 etsitään optimiratkaisu w, joka saadaan kun kohde ja referenssi on kiinnitetty. Tulos esitetään autokorrelaatiomatriisin R ja ristikorrelaatiovektorin p avulla. Käytännön tilanteissa näiden estimointi on kuitenkin hankalaa, joten optimiratkaisun sijaan käytetään iteratiivista algoritmia, joka parantaa painokertoimia sitä mukaan kun uutta dataa tulee. LMS-algoritmi etenee aina kustannusfunktion hetkellisen gradientin suuntaan (miinusmerkkisenä). Hyppäyksen pituus määräytyy parametrin mu mukaan, jonka suuruusluokan valitsemista tarkasteltiin luennon lopuksi.

Seuraavalla kerralla luennon aluksi vanhempi tutkija Pasi Pertilä kertoo ja demoaa äänen tulosuunnan estimoinnista. Aihepiiristä tuli kysymyksiä, joihin en oikein osannut vastata, joten Pasi saa kertoa koko tarinan.

perjantai 2. lokakuuta 2009

D/A-muunnos ja näytteenottotaajuuden muuntelu

Tänään käytiin kappale 3 loppuun. Aloitimme kappaleen 3.5.1 menetelmällä, jota käytettiin jo ensimmäisissä CD-soittimissa 1980-luvun alussa. Menetelmän tarkastelu aloitettiin jo keskiviikkona, ja ideana oli tehostaa nollannen asteen pitopiirin toimintaa nostamalla näytteenottotaajuus korkeammaksi ennen pitopiiriä. Tämä näkyy aikatasossa s. 36 porraskuvion hienontumisena ja tätä kautta pitopiirin virheen pienenemisenä jä siirtymisenä korkeammille taajuuksille. Taajuustasossa yli 22,05 hertsin taajuuksille tulee vastaavia heijastuksia kuin interpoloinnin yhteydessäkin. Erona on, että nyt heijastumat vaimenevat sitä enemmän mitä korkeammalle mennään. Digitaalinen interpolointi helpottaa näiden heijastusten poistamista: ilman digitaalista interpolointia tarvittavan analogisen suotimen siirtymäkaistan leveys olisi 2,05 kHz, kun esim. nelinkertaisella interpoloinnilla se saadaan yli 130 kHz:n levyiseksi.

Toinen, nykyisin yleisempi ratkaisu yksinkertaistaa analogiapuolta edelleen kvantisoimalla D/A-muunnettavan signaalin 1-bittiseksi (etupaneelissa saattaa lukea 1 bit D/A conversion, tms.). Ratkaisusta käytetään nimeä kohinanmuokkaus, englanniksi noise shaping tai sigma delta modulation. Kvantisointi onnistuu äänenlaatua heikentämättä, kun nostetaan näytteenottotaajuus ensin riittävän suureksi. Tällöin näytteiden suuri määrä kompensoi niiden heikkoa tarkkuutta. Pelkkä ylinäytteistys ei kuitenkaan vielä riitä: ilman muita temppuja näytteenottotaajuus pitäisi nostaa jopa miljardikertaiseksi, mikä ei käytännössä ole mahdollista. Siksi täytyy ottaa käyttöön sivun 39 lohkokaavion mukainen takaisinkytkentä, joka aiheuttaa kvantisointivirheen siirtymisen korkeammille taajuuksille. Siellähän kohina ei haittaa, koska se voidaan erottaa hyötysignaalista analogisella alipäästösuodatuksella D/A-muunnoksen jälkeen. Jäljelle jäävän kvantisointikohinan määrä voidaan laskea, ja havaitaan että suuruusluokassa 1500 oleva muunnoskerroin riittää (miljardien sijaan). Ratkaisua voidaan edelleen tehostaa tarkastelemalla korkeampiasteisia kohinanmuokkaimia, jotka siirtävät vieläkin tehokkaammin kvantisointikohinaa korkeammalle.

Jotkin audioformaatit kuten Super Audio CD tallentavat äänen suoraan yksibittisenä. Tästä on etuna se, että kohinanmuokkaus täytyy tehdä vain kerran äänitysstudiossa eikä jokaisessa kuluttajalaitteessa erikseen.

Molemmat D/A-muunnosratkaisut ovat hienoja esimerkkejä viime vuosikymmenten trendistä siirtää elektronisten laitteiden toiminnallisuutta analogisesta maailmasta digitaaliseen maailmaan. Tästä on (ainakin) kaksi 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.

keskiviikko 30. syyskuuta 2009

Tänään luennoilla käsiteltiin kappaleen 3 alku noin sivulle 36 asti. Kappale 3 tarkastelee menetelmiä, joilla voidaan muuntaa näytteenottotaajuus näytteistämisen jälkeen toiseksi. Perusoperaatiot ovat desimointi ja interpolointi, jotka toimivat kokonaislukukertoimilla. Näitä yhdistelemällä saadaan kaikki rationaalikertoimet. Molemmat operaatiot tarvitsevat alipäästösuodattimen, joka on yleensä FIR, ja suunnitellaan normaaleilla menetelmillä. Suotimen siirtymäkaistasta todettiin, että se laitetaan aina rajataajuuden alapuolelle. Näin signaaliin tulee vähemmän virhettä kuin jos laskostumista pääsisi tapahtumaan.

Desimoinnissa tapahtuva näytteenottotaajuuden pieneminen toteutetaan yksinkertaisesti jättämällä näytteitä pois tasaisin väliajoin. Esimerkiksi kertoimella kolme jätetään vain joka kolmas näyte jäljelle. Tämä kuitenkin aiheuttaa laskostumista, koska signaalin sisältämät taajuudet pysyvät samoina mutta näytteenottotaajuus pienenee. Tämä saadaan luonnollisesti estettyä suodattamalla signaali ennen alinäytteistämistä sopivalla alipäästösuotimella.

Interpolointi puolestaan koostuu nollien lisäämisestä sekä tämän operaation tuottamien roskien poistamisesta. Nollien lisääminenhän tuottaa kopioita ja peilikuvia alkuperäisestä spektristä, jotka voidaan myös poistaa kätevästi alipäästösuodatuksella.

Kappaleessa 3.4 luodaan katsaus interpoloinnin ja desimoinnin yhdistämiseen, jolloin päästään s. 34 alalaidan rakenteeseen. Tässä huomataan olevan kaksi suodatinta peräkkäin, jotka molemmat poistavat tietyn kaistan ylätaajuuksilta. Näin ollen vain toinen niistä on tarpeellinen. Piirtämällä kuva näiden suodinten amplitudivasteista voidaan päätellä kumpi on tarpeeton (aina se, jota vastaava muunnoskerroin on isompi).

Luennon loppupuolella vilkaistiin lyhyesti ekskursiota D/A-muunnoksen toteutuksessa. Tarkasteltavana oli kaksi ratkaisua, joista kappaleen 3.5.1 versio on vanhempi, ja oli käytössä esim. ensimmäisissä CD-soittimissa (etupaneelissa saattoi olla teksti 4 times oversampling tms.). Tällöin D/A-muunnos tehdään ns. nollannen asteen pitopiirillä, joka tuo signaaliin häiriöitä korkeille taajuuksille. Nämä voidaan poistaa analogisella alipäästösuotimella, mutta ongelmaksi tulee kapea siirtymäkaista (20kHz - 22,05 kHz). Analogiapuolta voidaan yksinkertaistaa siirtämällä osa toiminnallisuudesta digitaaliseksi, eli interpoloimalla signaali digitaalisesti ennen D/A-muunnosta.

Tästä jatketaan jo ensi perjantaina, 2.10 klo 12 salissa TB104.

keskiviikko 16. syyskuuta 2009

Äärellinen sananpituus

Tämän päivän luennolla käsiteltiin kappale 2, jossa tarkastellaan äärellisen sananpituuden vaikutuksia. Meidän tarkastelussamme nämä ilmenevät A/D-muunnoksen yhteydessä sekä suodatettaessa äärellisellä laskentatarkkuudella. Pääpaino on ensimmäisessä tyypissä. Luennolla käsiteltiin näytteistyksessä käytettävät kvantisointitasot: esimerkiksi (1+7) bitin esityksessä käytettävissä ovat seuraavat 256 tasoa:

-128/128, -127/128, ..., 0, ..., 126/128, 127/128.

Pyöristettäessä lähimpään lukuun syntyvä kvantisointivirhe on aina välillä -1/256...1/256. Yleisesti pyöristys (1+b) bittiin aiheuttaa enintään virheen 2^(-b) / 2 suuntaan tai toiseen.

Seuraavaksi tätä yksinkertaista virhemallia käytettiin johdettaessa arvio virheen varianssille, joka on suoraan verrannollinen syntyvän kvantisointivirheen tehoon. Tätä kautta määritellään SNR, eli signaali-kohinasuhde, eli häiriöetäisyys. Tämä suure kertoo jotain äänenlaadusta, ja saatavia tuloksia tullaan tarvitsemaan kappaleessa 6, kun päätellään montako bittiä signaalista uskalletaan poistaa kompressiossa ilman äänenlaadun havaittavaa heikkenemistä.

Kappaleessa 2.1 johdettiin siis A/D-muunnoksen kvantisointikohinan varianssille kaava. Tässä yhteydessä luotiin silmäys Wikipedian artikkeliin eri kohinatyypeistä (sekä kevennyksenä maininta urbaanilegendasta nimeltä brown note). Lisäksi todettiin, etteivät sivun 19 yläreunan ehdot ole voimassa esim. silloin jos signaalin amplitudi on hyvin pieni.

Jos ehtojen oletetaan olevan voimassa, voidaan osoittaa kohinan odotusarvon olevan nolla ja varianssin yhtä kuin 2^(-2b) / 12. Varianssin laskennassa hyödynnettiin alaviitteen kaavaa, jota havainnollistettiin (vanhalla) Ässä-arpa-esimerkillä, ja laskettiin vastaavalla kaavalla arpavoiton odotusarvoksi 1,59 euroa.

Yllä olevaa kaavaa voidaan edelleen jalostaa signaali-kohinasuhteen käsitteeksi (SNR), joka kertoo signaalin tehon suhteessa kohinan tehoon. Kun kaavaa pyöriteltiin, havaittiin jokaisen ylimääräisen bitin (per näyte) nostavan SNR:ää kuudella bitillä.

Kappaleessa 2 johdettiin kaava varianssille suodatuksen jälkeen ja kappaleessa 2.3 tutkittiin suotimen kertoimien pyöristämisen vaikutusta. Tämähän täytyy tehdä aina kun suodin toteutetaan huonomman tarkkuuden alustalla kuin Matlab (esim. tällä 17-bitin DSP:llä).

Lopuksi alustettiin tehtävän 2.10 tavoitteita. IIR-suotimilla voidaan nimittäin päätyä ns. rajasykliin. Tällöin vaste jää värähtelemään alimmille kvantisointitasoille ikuisesti, koska pyöristys kumoaa IIR-suotimen normaalin vaimenemisen.

keskiviikko 9. syyskuuta 2009

Luento 9.9.2009

Ensimmäisen luennon aluksi esiteltiin kurssin sisältö, läpäisyvaatimukset ym. normaalin käytännön mukaiset asiat. Lisäksi kävi ilmi, että kurssin pruju on loppuunmyyty, eikä niitä ollutkaan myynnissä tänään. Myynnistä huolehtiva tele-kilta on tilannut monisteita lisää, ja niitä saapuu loppuviikosta ja myydään seuraavalla luennolla (16.9). Siihen asti on selvittävä pdf-version varassa.

Luennolla käytiin läpi kappale 1 kokonaan. Kappaleen aihe on IIR-suodinten suunnittelu, joka käytiin melko yleisellä Matlab-komentojen osaamisen tasolla. Kappaleen ydin on koottu sivun 11 taulukkoon, jossa suodintyyppejä vertaillaan amplitudivasteen ominaisuuksien ja kertoimien määrän suhteen. Taulukossa on virhe: kertoimia tarvitaan 29+28, 13+12 ja 8+7 kappaletta, koska vektorin b ensimmäinen kerroin on aina yksi ja varattu termille y(n). Vertailun vuoksi FIR-suotimen kertoimien määrä vastaavilla vaatimuksilla olisi N = [5.5/0.035] = 159 käytettäessä Blackman-ikkunaa.

Muita luennolla esiin tulleita seikkoja olivat mm.
  • Matlabin kerroinvektorit a ja b eivät ole suoraan käytettävissä ulostulon y(n) laskennassa, ks. sivun 2 loppu.
  • Elliptisellä suotimella on aina vähemmän kertoimia kuin muilla. Lisäksi tasavärähtely-ominaisuus on yleensä hyvä asia.
  • Napojen ja nollien sijoittelua demottiin ja napa-nollakuvion ja amplitudivasteen yhteyttä käsiteltiin.
IIR-suotimen etuna on siis pienempi kertoimien tarve. Haittapuolina mahdollinen epästabiilisuus sekä numeeriset ongelmat toteutuksessa. Tästä esimerkkinä mainittiin kurssin SGN-1600 signaaliprosessorityö, jossa täytyy toteuttaa IIR-suodin. Käytännössä yli toisen asteen IIR-suodinta ei voi toteuttaa numeeristen ongelmien vuoksi. Sen sijaan suodin täytyy jakaa peräkkäisiin toisen asteen lohkoihin esim. Matlabin TF2SOS-funktiolla.

Alku aina hankalaa: olin vahingossa merkinnyt ensimmäisen luennon POP:issa harjoitustyöksi, jolloin se ei näkynyt luentojen listalla. Toivottavasti tästä ei tullut kenellekään kohtuutonta haittaa. Myös pe 2.10 luento on merkitty siellä pakolliseksi (mitä se ei tietenkään ole), enkä tiedä kuinka sen saisi muutettua. Lisäksi unohdin mainita, että kurssin voi suorittaa joko tentillä tai välikokeilla, kuten kurssin SGN-1200:kin viime keväänä. Ensimmäinen välikoe on ensimmäisellä tenttiviikolla ja toinen samaan aikaan kuin kurssin tentti. Tenttitilaisuudessa on vielä vapaus valita tekeekö tentin vai toisen välikokeen.

Kurssiblogi perustettu

Pidän kurssin etenemisestä päiväkirjaa, koska luentojen jälkeen ja sähköpostitse tulee hyviä kysymyksiä joihin olisi kiva vastata. Lisäksi luennon asioiden lyhyt kirjaaminen päiväkirjaan helpottaa elämää niiden osalta, jotka eivät pääse luennolle. Kolmantena syynä on jatkuvasti pudonnut kurssipalautteen määrä. Toivottavasti tämä menettely lisää kommunikaatiota. Merkintöjen kommentointi on siis tervetullutta ja se onnistuu anonyymisti. Pyrin päivittämään blogin kerran viikossa luentojen jälkeen.

Jostain syystä POP ei näytä ensimmäistä luentoa oppimistapahtumien näkymässä. Ensimmäinen luento on silti 9.9 klo 14:15 salissa TB103.