Jeffrey Cross
Jeffrey Cross

Kodeering: luuakse pildifiltrid koos maatriksi korrutamisega

Värvifiltrid võimaldavad muuta pilti… hästi ... pildi värvide filtreerimisega. Kui töötlusel on sisseehitatud mõned filtrid, on sageli mugav luua oma kohandatud filtreid. Näiteks saidi Anaglyph Methods Comparison andmed sisaldavad mitmeid erinevaid filtreid, mis on kasulikud 3D-kujutiste loomisel.

Nagu näete saidilt, on filtrid põhiliselt matemaatilised muutused, mida rakendatakse pildi pikslite punasele, rohelisele ja sinisele komponendile. Stereo anaglyph saidile sarnase filtri loomiseks peame tõmbama iga pikseli originaalpildis, rakendama maatriksi operatsiooni oma värvikomponentidele ja seejärel kasutama seda uut väärtust vastavas pikslis uues pildis. See Codebox näitab teile, kuidas luua oma filtrid.

Esiteks, natuke ülevaadet (potentsiaalselt) karvase ilmega matemaatikast. Maatriks on kahemõõtmeline arv numbrid, mida nimetatakse elementideks. Matriise kasutatakse paljudes erinevates rakendustes, mis esindavad võrrandite komplekte, 3D-objektide teisendusi ja värvifiltreid (nagu käesolevas näites).

Maatriksit iseloomustavad tavaliselt selle mõõtmed: elementide arv selle ridades (läbivad numbrid) ja veerud (numbrid tõusevad üles ja alla). Kokkuleppe kohaselt tuleb ridade arv alati esimesena. Järgmine joonis näitab kahte maatriksit. Vasakul on 2 rida 3 maatriksiga, mida tavaliselt nimetatakse lihtsalt 2 × 3 maatriksiks. Paremal on 3 rida 2 veergu maatriks, mida nimetatakse ka 3 × 2 maatriksiks:

Selleks, et korrutada kahte maatriksit koos (nimetame neid maatriksiks A ja maatriksiks B), peab maatriksi A veergude arv võrduma maatriksi B ridade arvuga. See on kriitiline - kui see ei ole tõsi, siis korrutamist ei ole määratud . (See on omamoodi nagu jagamine nulliga - see on lihtsalt võimatu.)

Eeldades, et need kriteeriumid on täidetud, on kahe maatriksi toode (võimaldab seda nimetada maatriksiks C) sama arvu ridasid kui maatriks A ja sama arv veerge kui maatriks B. Maatriksi C elemendid on võrdsed summaga vastavas veerus elemendis olevad tooted B-kordse reaelementides B-s. See on natuke keeruline, kuid järgmine joonis peaks (loodetavasti!) seda veidi selgemaks tegema:

Järgmine joonis, matrix_mult.pde, näitab, kuidas toimingut töödelda:

Joonise käivitamisel peaksite nägema järgmist väljundit:

[0][0] = 2.0 [0][1] = 0.0 [1][0] = 5.5 [1][1] = 2.0

Niisiis, kui peamine matemaatika on väljas, oleme valmis filtri koodi kirjutama. Ülejäänud korts on see, et töötluses olevad pildid hoitakse pigem ühemõõtmelistes värvilahendustes kui (x, y) koordinaatide kahemõõtmelised massiivid, nagu on selgitatud Daniel Shiffmani suurtes piltides ja pikslites. Juhendis annab ta kena valemi, mida saab kasutada, et kaardistada (x, y) koordinaadid pildi massiivi positsioonile:

positsioon massiivis = x + IMAGE_WIDTH * y

Järgmine joonis peaks aitama illustreerida enamikku tööde kontseptsioone siin:

Täiendavalt ei ole siin skeem nimega filter.pde filtri rakendamiseks maatriksi korrutamisel:

Veel: Vaadake siit kõik Codeboxi veerud

Makeri varjus:


Töötlemise alustamine Lugege arvutiprogramme töötlemisel lihtsal viisil, mis on lihtne keel, mis võimaldab teil kasutada jooniseid, animatsioone ja interaktiivseid graafikaid. Programmeerimiskursused algavad tavaliselt teooriaga, kuid see raamat võimaldab teil hüpata paremale loomingulistele ja lõbusatele projektidele. See sobib ideaalselt kõigile, kes soovivad õppida põhiprogramme ja on lihtsad sissejuhatused mõnede programmeerimisoskustega inimestele.

Osa

Jätnud Kommentaari