[ pirgos_madden @ 01.07.2004. 13:48 ] @
Molio bih nekoga da mi pojasni (objasni) ovu "tematiku", naravno krenuvsi od osnovnih stvari ili da preporuci neki link na kome postoji objasnjenje u istom stilu. Bilo bi super da neko navede konkretnu primenu konvolucije u nekim problemima npr. iz fizike?
[ anon315 @ 01.07.2004. 15:15 ] @
Evo po definiciji.

Neka su i originali. Konvoluciju funkcija i , u oznaci definisemo integralom:



Konvolucija je komutativna, asocijativna i distributivna (u odnosu na sabiranje), operacija nad funkcijama.

Evo jednog primera iz Teorije El. Kola:

Zamisli da imamo neku mrezu koja je okarakterisana nekakvom prenosnom funkcijom u kompleksnom domenu (mrzelo me da podvlacim kompleksne). Ako na ulaz te mreze dovedes pobudu onda ce izlaz biti . Poenta je u tome da se uglavnom cesce barata u kompleksnom domenu. Medjutim, kada smo dobili odziv sada treba da ga vratimo u vremenski domen jer nam je on blizak i govori tacno sta se vremenski desava. Primenom inverzne laplasove transformacije na dobijamo vremenski domen odziva. A po definiciji je inverzna laplasova tranformacija proizvoda dve funkcije ustvari konvolucija te dve funkcije.
[ pirgos_madden @ 01.07.2004. 18:28 ] @
Ne kontam dve stvari (bar u toj osnovnoj jednacini konvolucije):

1) Zasto se bas mnoze te ulazne funkcije, za to nije suvise uska definicija za realizaciju problema iz prirode - sto ne bi mogli uvesti neku trecu funkciju koja kaze sta se radi sa tim dvema ulaznim funkcijama?

2) Zasto se u podintegralnom delu mnozi f(t-p) i g(p) a ne recimo f(p) i g(p) (sa p sam obelezio ono drugo te) Jer to ima veze sa orjentacijom osa dve funkcije?
[ pirgos_madden @ 01.07.2004. 18:51 ] @
I jos nesto. Da li se konvolucija moze raditi u Matlab-u i posto sigurno moze ima li negde nekih objasnjenja osnovnih komandi posto ih u help-u nema?
[ Nedeljko @ 01.07.2004. 18:56 ] @
1. Niko nije rekao da se pomoću konvolucije sve opisuje.

2. Ljudi su se dogovorili da ovu operaciju tako zovu. Ako ti uvedeš neku drugu operaciju daćeš joj neko drugo ime. To neće više biti konvolucija.

3. OVA operacija je vrlo važna u Matematici. Recimo da se parcijalna suma trigonometrijskog Furijeovog reda izražava preko konvolucije. Takođe, konvolucija multiplikativnih funkcija u teoriji brojeva je multiplikativna funkcija. Mnogi dokazi se skraćuju upotrebom konvolucije.
[ Ve$eli @ 01.07.2004. 19:52 ] @
Zamisli da imas dva signala. Jedan od njih okrenes naopacke (to ti je ono minus tau) i pomeris ga za neko vreme t, a drugi ostane kakav jeste , pomnozis ih i dobices korelaciju tih novih signala - to je ustvari konvolucija
To i jeste neka promenljiva u f-ji od pomeraja t, tj. jeste nova f-ja


Citat:
2) Zasto se u podintegralnom delu mnozi f(t-p) i g(p) a ne recimo f(p) i g(p) (sa p sam obelezio ono drugo te) Jer to ima veze sa orjentacijom osa dve funkcije?


Zato sto to vise nije konvolucija nego korelacija
Ona ima veliku primenu u telekomunikacijama pri spektralnoj analizi signala

Recimo autokorelaciona funkcija (f(t)=g(t)), i spektralna gustina snage signala (šuma) obrazuju furijeov transformacioni par - što znači da ako imaš autokorelacionu funkciju koja se često lakše nalazi onda ćeš lako naći spektralnu gustinu snage signala (šuma) koja prestavlja snagu signala rasporedjenu u frekvencijskom domenu
[ pirgos_madden @ 04.07.2004. 19:19 ] @
Ok otprilike sam shvatio o cemu je rec, moze li neko da mi navede neki konkretan link gde postoji od a do w konkretan primer kako se to radi. Oblast moze biti bilo koja ali bi pozeljno bilo da ima veze sa fizikom.
[ Nedeljko @ 04.07.2004. 21:36 ] @
Evo kako se radi. Izračunaš integral i to uje to.
[ pirgos_madden @ 05.07.2004. 02:06 ] @
Citat:
Nedeljko: Evo kako se radi. Izračunaš integral i to uje to.


Ok priznajem bio sam malo neodredjen. Dakle jednostavan problem (nadam se). Dakle opticki problem; Imamo jedan zaklon na kome je nacrtan plavi krug (moze i crveni :) i sad ispred je jedno socivo (sabirno, bilo koje boje). Ispred sociva je oko ili bilo sta sto moze uhvatiti lik kruga. Voleo bih da mi objasnis kako uspomoc matematicke metode koja je na dnevnom redu dobiti lik tog kruga? Dakle koje funkcije konvoluiramo, kako (dobro to si vec pominjao) i sl. ... ne mora da bude super opsirno ali taman toliko da sve mogu sam da odradim.
[ pirgos_madden @ 06.07.2004. 14:23 ] @
Posto jos niko nije odgovorio pokusacu da malo preformulisem pitanje. Kada u Matlab-u ucitam dve slike dimenzija 128x128 pixel-a i kazem:

conv2(X,Y)

dobijem matricu dimenzija 256x256 i relativno zanimljivog izgleda u zavisnosti od toga kakve su unete slike. E sad, zanima me sta ustvari radi Matlab u ovom slucaju - sta integrali (inace ako neko slucajno ne zna - Matlab ove slike ucitava kao matrice i svako polje matrice ima svoj broj koji oznacava intenzitet svetlosti ili vec tako nesto)?
[ filmil @ 06.07.2004. 14:32 ] @
Matlab radi diskretnu konvoluciju, koja ne koristi integraljenje mada se odatle izvodi. Objašnjenje sledi.

f
[ pirgos_madden @ 06.07.2004. 15:08 ] @
Ok hvala ali voleo bih da ako vec objasnjavas pokusas da to uradis prilagodjeno za srednjoskolca (kao sto sam ja) - dakle sve sto se tice calculus-a moze ali molim te kreni od osnova (naravno ne integrala vec ove oblasti).
[ Mihailo Kolundzija @ 06.07.2004. 17:09 ] @
Ako imas Matlab, onda pogledaj u helpu kako to on radi.
Mislim da nije nesto zanimljivo konvoluirati sliku sa drugom slikom (mada, da budem iskren, to u zivotu nisam pokusao) - mozda bi ti bilo bolje da probas sa nekim jednostavnim filterima. Primera radi, probaj ovaj link, pa ces klikovima na "next" naci i neke sa kojima se mozes igrati (filtrirati svoju sliku uz pomoc pomenute operacije).
http://www.ph.tn.tudelft.nl/Co...P/noframes/fip-Convolut-2.html
[ filmil @ 06.07.2004. 18:41 ] @
Koliko vidim, tebe zanima najpre motivacija za uvođenje konvolucije, dakle zbog čega se javlja i zašto izgleda baš tako kao što izgleda a ne nekako drugačije. Pošto želiš da izbegneš analizu (integraljenje i slične stvari) primer koji ću da napišem biće iz digitalne obrade signala. Tako ćemo da preskočimo stvari koje ti nisu bliske, a i meni će biti lakše jer neću morati da opravdavam korake čije dokaze sam zaboravio. :) Takođe je dobro i to što je sva računarska obrada signala zapravo digitalna a digitalni signali su i tako razumljiviji novijim generacijama.

Počinjemo od 1d signala. Signal je uređen niz sa posebnom osobinom: za signal se uzima da je kauzalan, a to znači da su svi elementi sa indeksom manjim od nule jednaki nuli. Obično se ovaj niz označava sa . Uzmimo za sada da su elementi niza realni brojevi. Kauzalnost je bitna odlika prirodnih signala -- to praktično znači da signal ima početak. WAV
datoteke sa snimljenim tonom su skoro savršen primer: one ne sadrže ništa drugo nego niz brojeva. Kauzalnost ćemo da iskoristimo kasnije kod konvolucije.

Jedan poseban signal se zove impuls i ima ovakav oblik:

(jedinica je na nultom indeksu.)

Zatim uvodimo pojam sistema. Sistem je funkcija sa nekim posebnim osobinama. Te posebne osobine se uglavnom dogovorno uzimaju da odgovaraju osobinama raznih uređaja, mada naravno u opštem slučaju to ne mora da bude tako. Nas dalje zanimaju samo linearni i vremenski nepromenljivi sistemi. Običan tranzistorski radio je primer jedne takve naprave.

Ukratko, ubaciš ovaj niz odozgo, sa tim nulama i dobiješ drugi niz, , koji se zove odziv. Ono što je sistem uradio s njim zovemo transformacija i beležimo ovako, na primer: . Linearnost T se ogleda u sledećem: ako su data dva signala , onda za proizvoljna dva broja važi:



Ova osobina zove se linearnost, otud ime linearni sistem. Sistem je vremenski nepromenljiv ako je oblik odziva uvek isti do na vremenski pomeraj:



Dakle, ako signal zakasni za neko vreme , i odziv će da zakasni za isto toliko. Ove dve osobine koristimo kako bismo videli da se svaki signal može rastaviti na zbir zakašnjenih impulsa različite veličine:



Nacrtaj sliku i biće, nadam se, jasnije. Vrednost signala u svakoj tački i zamenimo sa jednim impulsom koji je tako pomeren da ona jedinica iz njegovog pika nastupi u tački i. Pošto je visina impulsa 1, moramo da pomnožimo sa kako bismo dobili stubić visine . Zatim saberemo sve stubiće i to nam tačno
daje polazni signal.

Interesantno je da, ako znamo kakav je odziv sistema na jedan impuls, to pomaže da izračunamo odziv na bilo koji drugi složeni signal (zato što smo pokazali gore da svaki složeni signal može da se razloži na impulse). Odziv na impuls zove se Grinova (Green) funkcija ili impulsni odziv. Obično se beleži sa .

Neka je . Tada imamo sledeći izraz, koji u više navrata koristi gorepomenute osobine linearnosti i vremenske nepromenljivosti:



Lin. i vrem. nepromenljivost smo iskoristili da T prošetamo kroz ceo izraz, dok nije preobratio svaki impuls u odgovarajući impulsni odziv. Ono što nam je ostalo je upravo konvolucija (diskretna) dve funkcije: ulaznog signala i impulsnog odziva sistema. Na kraju smo iskoristili kauzalnost da ograničimo sumu. Ako pogledaš šta je po suštini konvolucija u nekoj tački n: to je zbir svih ehoa impulsnih odziva koje su proizveli prethodni impulsi u signalu.

f


[Ovu poruku je menjao filmil dana 07.07.2004. u 00:27 GMT]
[ Nedeljko @ 06.07.2004. 21:52 ] @
Citat:
filmil: Matlab radi diskretnu konvoluciju, koja ne koristi integraljenje mada se odatle izvodi. Objašnjenje sledi.

f


Samo da napomenem da se konvolucija definiše u opštem slučaju preko apstraktnog integrala koji obuhvata i sumiranje kao specijalan (diskretan) slučaj, tako da se i tu zapravo vrši integraljenje.
[ pirgos_madden @ 07.07.2004. 01:12 ] @
E Filipe hvala ti beskrajno na objasnjenju . . . medjutim ne kontam tu vremensku nepromenljivost sistema jer mi nije jasna notacija. Naime onaj signal koji obelezavas sa X[n] ne sadrzi nigde u sebi taj faktor n, a samim tim mi nista ne znaci kada kasnije pises X[n-i] - po cemu se zapravo razlikuju ova dva signala, kako su pomereni?
Inace na linku koji mi je preporucio Mihajlo sam nasao fino objasnjnje i tu su za konvoluciju navedene dve jadnacine sa naznakama " for 2D continuous space" i "for 2D discrete space" ali u sledecoj jednacini:



ne vidim uopste odakle im ono plus/minus beskonacno kad se radi o skoro obicnoj matrici koja hvala bogu ima konacne dimenzije.
[ filmil @ 07.07.2004. 08:48 ] @
Citat:
pirgos_madden: Naime onaj signal koji obelezavas sa X[n] ne sadrzi nigde u sebi taj faktor n, a samim tim mi nista ne znaci kada kasnije pises X[n-i] - po cemu se zapravo razlikuju ova dva signala, kako su pomereni?


Kada se n šeta po skupu celih brojeva, x[n] (malo x, jer je veliko X rezervisano za druge stvari!) ti daje redom indekse, npr.:



Što se tiče vremenskog pomeraja, uzmi da ti je ono i neki fiksiran broj, menjaj n i vidi šta će da se dobije. Primer::




Drugi signal „kasni“ za 2 u odnosu na prvi. (U formulama u oba slučaja prvi prikazani element ima indeks 0).

Citat:
ne vidim uopste odakle im ono plus/minus beskonacno kad se radi o skoro obicnoj matrici koja hvala bogu ima konacne dimenzije.


Slika je, kao i signal iz gornjeg primera, „beskonačnih“ dimenzija. Jedino što su posle neke granice vrednosti svih ćelija jednake nuli, pa možemo da uštedimo beskonačno mnogo prostora pamteći u konačnoj matrici samo onaj deo signala koji ima delove različite od nule.

Kada napišeš izraz za konvoluciju u kojem se indeksi šetaju po celoj celobrojnoj osi
i ispitaš koji članovi proizvoda otpadaju zato što je u tom delu funkcija jednaka nuli, dobićeš i konačne granice za sabiranje.

f

[ Nedeljko @ 07.07.2004. 16:40 ] @
Najjednostavniji primer konvolucije koji znam je
množenje polinoma.

Ovde se podrazumeva da su članovi nizova
počev odnekle jednaki nuli.
[ pirgos_madden @ 15.07.2004. 17:45 ] @
Ok sad mi je jasno sta je zapravo konvolucija. Cak sam probao da u Matlab-u nesto konvoluiram i proverim rucno da li se zaista dobija konvolucija na osnovu definicije konvolucije i to ide ok. E sad, skontao sam dakle da ako hocu da vrsim konvoluciju neke slike (u obliku 2D matrice) treba mi kovoluciono jezgro (kernel) koje je ustvari druga funkcija i mi vrsimo konvoluciju kernel-a i prve funkcije.

E sad kernel se ne prodaje na buvljaku vec je potrebno da ga ja konstruisem a uopste nemam ideju kako to uraditi sa nekim iole prostim nacinom?
[ Nedeljko @ 15.07.2004. 17:57 ] @
Zavisi od toga �ta ti treba.
[ pirgos_madden @ 15.07.2004. 18:50 ] @
Pa ok evo . . . recimo treba mi simulacija izgleda lika prilikom prolaska kroz jedno sabirno socivo. Dakle imamo sliku necega i potrebno je da unesemo podatke o udaljenostima zaklona i sociva kao i sociva i slike (objekta). Treba nam kernel koji ce prilikom konvolucije sa pocetnom slikom dati sliku lika.
Mislim ovo sam samo lupio kao primer, u slucaju da neko ima neki jednostavniji primer neka ga navede ali bih molio da ne bude nesto iz elektrotehnike. Dakle potreban mi je neki primer kako bih makar na osnovnom nivou (mislim ja cu dosadjivati dok god ne dodjem do toga) shvatio princip konstruisanja konvolucionog jezgra.
[ pirgos_madden @ 15.07.2004. 18:53 ] @
Pa ok evo . . . recimo treba mi simulacija izgleda lika prilikom prolaska kroz jedno sabirno socivo. Dakle imamo sliku necega i potrebno je da unesemo podatke o udaljenostima zaklona i sociva kao i sociva i slike (objekta). Treba nam kernel koji ce prilikom konvolucije sa pocetnom slikom dati sliku lika.
Mislim ovo sam samo lupio kao primer, u slucaju da neko ima neki jednostavniji primer neka ga navede ali bih molio da ne bude nesto iz elektrotehnike. Dakle potreban mi je neki primer kako bih makar na osnovnom nivou (mislim ja cu dosadjivati dok god ne dodjem do toga) shvatio princip konstruisanja konvolucionog jezgra.
[ Nedeljko @ 15.07.2004. 22:27 ] @
Pa to nema veze sa Matematikom, vec sa Fizikom. To se opisuje zakonima Optike i osobinama tog sociva. To su prirodni (fizicki) zakoni, a ne matematicke konstrukcije. Ako te zanimaju konkretne primene pronadji neku knjigu iz tih primena koje te zanimaju. Matematika ti moze samo dati aparat za rukovanje konvolucijom, to jest njene osobine, a ne zakon prelamanja svetlosti kroz socivo. To je predmet izucavanja Fizike.
[ pirgos_madden @ 16.07.2004. 01:08 ] @
Pa u redu, kontam da se iz konvolucije ne moze izvesti zakon prelamanja. Mislio sam da konstruisemo taj kernel uz pretpostavku da nam je vec poznat taj zakon odbijanja - nesto kao simulacija, testiranje modela. To je, pretpostavljam, moguce?
[ Nedeljko @ 16.07.2004. 09:48 ] @
Napisi potrebne zakone prelamanja pa da vidimo.
[ pirgos_madden @ 16.07.2004. 13:05 ] @
Dakle navescu jedan izmisljeni problem - dakle ne mora da ima veze sa konkretnim fizickim zakonom da bi bilo jednostavno za modeliranje. Evo na sledecoj slici (koja je uzasna ali me je mrzelo da je doterujem) dat je potreban teorijski uvod:



Dakle sve je prikazano na slici. Imamo 3 ravni (obelezene brojevima) i sa obelezenim centrima koji se nalaze na istoj pravoj (koja je takodje nacrtana). U ravni 1 se nalzi neki lik elipse (crne) koji nije tacno u centru ravni. Ravan 2 je zaduzena za prelamanje. Naime svaki zrak svetlosti koji krene sa povrsine elipse i prodje kroz ravan 2 biva skrenut za ugao X po jednostavnom zakonu:

X = c / R (prakticno zrak od svoje pocetne putanje skrene za ovaj ugao)

gde je c poznata konstanta a R rastojanje prodorne tacke od centra ravni 2. Tako prelomljen zrak nastavi dalje do ravni 3. E sad, mi (tj. posmatrac) se nalazi u centru ravni 3 i vidi neku deformisanu sliku pocetne elipse. E sad, normalno je da posmatrac vidi samo one zrake koji su tacno tako prelomljeni da prolaze kroz centar ravni 3 ali najbitnije je to sto on vidi ustvari projekciju zraka na pocetnu ravan 1 (debljom linijom sam obelezio pravu pputanju zraka a tanjom projekciju na ravan 1 - dakle preseke ove tanje linije sa ravni 1 je tacka koju zapravo visi posmatrac naravno ukoliko krajnja putanja zraka prolazi kroz centar ravni 3). Dakle treba da modeliramo sliku koju vidimo iz tacke koja je centar ravni 3.

Napomena:
Ocigledno sve slike koje ovde imamo kao i one koje dobijemo predstavljamo kao matrice pri cemu osvetljeno polje ima vrednost razlicitu od nule (npr. 10) dok belo polje ima vrednost nula.

[ pirgos_madden @ 21.07.2004. 15:40 ] @
Ok dakle nije potrebno da se bilo ko zamara sa ovim, neka navede BILO STA sto mi moze makar u osnovnim crtama pokazati kako se konstruisu konvolucioni kerneli - tj. lako je kad imas sliku i kernel (npr.Gaussian) pa da se vidi sta on radi sa funkcijom (slikom) ali me zanima kako da ja sam konstruisem kernel koji ce raditi neku zadatu operaciju (npr. zamucivanje, izostravanje . . .).
Jos nesto, kakve veze ima konvolucija sa Furijeovim redovima - nije li resenje upravo spregnuto sa ovim?
[ filmil @ 21.07.2004. 15:51 ] @
„Zamućivanje“ slike je filtriranje niskopropusnim filtrom. Dakle uzmi neki 2D niskopropusni filtar, napravi inverznu Furijeovu transformaciju i dobićeš kernel za zamućivanje.

„Izoštravanje“ slike je pojačavanje visokofrekventnih komponenti spektra. Na originalnu sliku dodaj sliku konvoluiranu sa visokopropusnim filtrom, i dobićeš izoštrenu sliku.

Postoji mnogo različitih načina da se slika zamuti ili izoštri, zavisno od toga kakve se spektralne osobine filtra izaberu.

Međutim, gledano prema slici koju si dao, tebi treba nešto što nema mnogo veze sa filtriranjem. Filtriranje je linearna operacija, a ovo što si ti napravio je (nelinearni) fizički problem. Tebi verovatno treba rej-trejsing koji uzima u obzir skretanje svetlosti.

f
[ Mihailo Kolundzija @ 23.07.2004. 15:51 ] @
Mozda moze da pomogne:
http://www.cs.fsu.edu/~liux/courses/research/textbook/