| Juha-Pekka Kuusela | jpq@mbnet.fi Koodausvinkkejä kuvankäsittelyyn |
| Classic Monster Collection (osa 2)
| Jarkko Pienimäki
| Mindcandy volume 1: PC demos
| Juha-Pekka Jokela
| Koodausvinkkejä kuvankäsittelyyn
| Juha-Pekka Kuusela
| Spacecenter Babylon 5 (DVD)
| Tuomo Mämmelä
| Videota kajareihin
| Jarmo Piippo
Nopea blur
Pikseli A on se mihin blur tehdään. Sitten lasketaan pikselien B, C, D, E ja A keskiarvo, jolloin saadaan uusi pikseli A:n arvo. Sitten siirrytään pikselin verran vasemmalle, ja kun koko rivi on käyty läpi, siirrytään seuraavalle pikseli riville. Menetelmäni ei ole se mitä yleensä kuvankäsittelyohjelmat ilmeisesti käyttävät. Jälki on täysin saman näköistä, koodini on vain nopeampaa ja helpommin koodattavissa. Normaali menetelmä tosin sallii muitakin efektejä kuten terävöityksen sekä ilmeisesti "oil paint" ja "fresco" onnistuisivat sillä myös.
Kuvassa keltaisella pohjalla olevat kirjaimet plus yksi vihreä pohjainen pikseli on algorytmissä mukana niille jotka harmaalla pohjalla ei tehdä mitään ja tämä värikoodaus koskee myös aweragen kaaviota.
Average 3x3
Pikseli A on se mihin average 3x3 tehdään. Sitten lasketaan pikselien B, C, D, E, F, G, H, I ja A keskiarvo, jolloin saadaan uusi pikseli A:n arvo. Sitten siirrytään pikselin verran vasemmalle, ja kun koko rivi on käyty läpi, siirrytään seuraavalle pikseliriville.
    --- Tässä varsinainen esimerkkikoodi ---

    ; Syy BlitzBasicin käyttöön on se että osaan
    ; sitä paremmin kuin C:tä.

    ; COPYRIGHT 2003 Juha-Pekka Kuusela
    ; Suomi/Finland

    ; Koodia ei saa varastaa/levittää, mutta
    ; oppia saa ottaa.

    ; Koodi on vain mustavalkoinen, ECS/AGA:ssa
    ; ei ole truecolor-tilaa. Kuka vain voi
    ; soveltaa tämän väreille.

    NoCli
    WBStartup
    BitMap 0,320,256,4

    BLITZ
    Slice 0,42,4
    Show 0

    For col=0 To 15
    RGB col,col,col,col
    Next

    ; lumisade (TV:stä tuttu sellainen) kulmaus

    For x=0 To 159
    For y=0 To 119
    Plot x,y,Rnd(15)
    Next
    Next

    ; jotain muuta törkyä

    For lask=0 To 3599

    hx=240+Sin(lask/72*Pi)*25+Sin(lask/90*Pi)*25
    hy=60+Sin(lask/360*Pi)*25+Sin(lask/45*Pi)*25
    Plot hx,hy,15
    Next

    MouseWait

    ; Ehkäpä maailman hitain blur-koodi, BlitzBasic
    ; on hidas. Ideaa ei saa minun taidoillani
    ; nopeammaksi jos BlitzBasicia ajaa eikä kai
    ; muutenkaan. Pelkät laskutoimitukset ovat
    ; hitaita - johtuneeko siitä, että luen pikselin
    ; värin näyttömuistista mutta kyllä BlitzBasic 2
    ; taulukkoversiokin oli 68060:lla tervaa
    ; C-versioon nähden ja muutenkin vaikka ei
    ; edes vertailisi.

    For xk=1 To 318
    For yk=1 To 254
    kesk=Point(xk,yk)
    vyla=Point(xk-1,yk-1)
    oyla=Point(xk+1,yk-1)
    vala=Point(xk-1,yk+1)
    oala=Point(xk+1,yk+1)
    kskiarvo=(kesk+vyla+oyla+vala+oala)/5
    Plot xk,yk,kskiarvo
    Next
    Next
Antialias
Tämän idean selitän vain tekstinä. Jos resoluutio, johon halutaan antialias on 320x240, niin piirretään materiaali esim. 640x480 tai 960x720 ja skaalataan pehmentäen. Näin haluttuun kokoon eli lasketaan yhden 320x240 pikselin väri ensimmäisessä tarkkuusesimerkissä neljästä pikselistä ja toisessa yhdeksästä. Ja kappas vain, kulmikas monikulmiograafiikka pehmenee. Tämä ideahan ei kyllä kaikella materiaalilla ihan niin hyvin toimine kuin oikea antialias, mutta kaipa tälläkin edes demoissa ja ehkä peleissäkin tekee jotain - vai tekeekö, sen päättää jokainen itse. Tämä on ainoa, jonka idea on "rötsitty", eli tämä siis on tapa mitä käsittääkseni 3D-kortit käyttävät reunojen pehmennykseen tai ainakin ovat käyttäneet, jollen ole väärää tietoa saanut. Sivun alkuun |