Akademisyenler öncülüğünde matematik/fizik/bilgisayar bilimleri soru cevap platformu
2 beğenilme 0 beğenilmeme
1.3k kez görüntülendi

instagramda fotografimizi nasil filitre ediyoruz? Algoritmasini nedir ya da algoritmanin adimlari nelerdir?

Akademik Matematik kategorisinde (25.5k puan) tarafından 
tarafından düzenlendi | 1.3k kez görüntülendi

2 Cevaplar

3 beğenilme 0 beğenilmeme
Katlayarak (turkce terimi bilemiyorum ingilizcesi convolution almanca falten) filtre ediyoruz. Katlama Fourier donusumu sonucunda carpmaya dondugu ve carpma ve ve hizli Fourier donusumu katlamadan daha hizli oldugu icin genelde fft algoritmasini katlama cekirdegine ve resme uygulayip ikisini carpip ters fft sini alarak filtreliyoruz. Bazi katlama cekirdekleri ayrilabilir oluyor o zaman fft yapmadan gene hizlica hesaplamak mumkun.
(1.6k puan) tarafından 
tarafından düzenlendi
Aslında bu fft algoritmalarını daha açıklayıcı birkaç gönderi oluşturabilirsek çok iyi olur. Hayat fft etrafında dönüyor neredeyse.
Convolution, evrişim diye Türkçeye çeviriliyor. Bence biraz alakasız ama.
Hizli Fourier Donusumu algoritmasi nasil calisir?
Gecen gun bilgisayarda buyuk sayilari carpmak icin fft tabanli bir algoritma gordum number theoretic transform diye geciyordu. Carpmanin evrisime benzemesinden yola cikip yukarida anlattigima benzer bir yontemle sonucu elde ediyorlar. Ffft gercekten zekice bir fikir
2 beğenilme 0 beğenilmeme


Her pixel R,G,B renk kanallarından oluşur.

Tüm resim bir matristir.


Pixeller tek tek ele alınır. Komşuları ile karşılaştırılır. Bu iki pixel P1 ve P2 olsun.


P1=(R1,G1,B1) P2=(R2,G2,B2)

iki pixel arasındaki fark, dif=|R1-R2|+|G1-G2|+|B1-B2|

Bir eşik belirlersiniz. dif > eşik ise; burada bir kontrast vardır kabul edersiniz.


Filtreniz konsrast artırmak için ise, eşik değerinden yüksek olduğu  pixellere uygulanacak işlemlerden biri;

R1 < R2 ise R1x0,9 ve R2x1,1

G1 < G2 ise G1x0,9 ve G2x1,1

B1 < B2 ise B1x0,9 ve B2x1,1 

... (Tersi de uygulanır)  Bu iki pixelin arasındaki kontrast(fark, zıtlık) artırılmış olur.


Filtreniz blur (matlaştırma) efekti ise

R1=R2= (R1+R2)/2

G1=G2=(G1+G2)/2

B1=B2=(B1+B2)/2  Her pixelin renk kanallarının değerlerinin, komşu pixelinki ile ortalaması alınır.

Bu matlaştırmayı kenarlarda uygulayıp, ortayı net göstermek isterseniz, Her değerlendirdiğiniz pixelin, resmin  orta noktasına uzaklığını basitçe pisagor teoreminden hesaplayıp, pixelleri karıştırma oranını pivota (merkez) uzaklık değeri ile orantılayabilirsiniz.


Bu işlemler, resimdeki pixeller tek tek için uygulanır. 

Her filtrenin algoritması farklıdır.


Bu algoritma yeterli değildir. Fikir oluşması için oldukça sadeleştirerek anlattım..

(25 puan) tarafından 

Fikir olustu bende. Tesekkurler.

bu matrixler ne kadar boyuttalar? sanıyorum yüzbinlerce pixel oldugu için okadar boyuttalar bu matrixlerle işlem yapmak için alttaki cevaptaki gibi fft tarzı bir metod olmadan bu işleri yapmak uzun sürerdi değil mi.
Matrislerin girdileri tamsayı olduğundan, bilgisayarın işlemcisinde çoğunlukla tamsayı aritmetiği ile işlem görürler. Bu nedenle çoğu işlem o kadar da uzun sürmez.
20,282 soru
21,820 cevap
73,505 yorum
2,546,186 kullanıcı