Bir Bilgisayar Mühendisi İçin Programlama Dili, Öğrendiklerini Sınadığı, Deneyler Yaptığı Bir Labaratuardır. Ve Mühendisler Deneylerini, Kestiremedikleri Sonuçları Gözlemlemek İçin Değil, Öngördükleri Sonuçları Doğrulamak İçin Yaparlar...
  Görüntü Filtreleri
   Görüntü filtreleri, çeşitli amaçlarlar kullanılırlar. Görüntüleri yumuşatabilir, keskinleştirebilirler. Ayrıntıları belirginleştirip, yok edebilirler...

   Filtreler genelde 3x3 matrislerdir. Bunlara çekirdek matris (kernel matrix) denir. Filtreleme işlemi ise kısaca bu matrislerin görüntü üzerinde gezdirilip, üst üste gelen değerlerin çarpımları ve oluşan tüm çarpımların toplamlarının filtre elemanlarının toplamına bölünmesi ile gerçekleştirilmiş olur. Her seferinde sadece merkez pixelin, yani ortadaki pixelin değeri değiştirilir. Bu işlemler sırayla tüm pixeller için yapılır ve görüntü güncellenir.

   Filtreleme sırasında oluşabilecek iki problem vardır. Birincisi filtrenin görüntü dışına taşmasıdır. Bunu önlemek oldukça kolaydır. Resim üzerinde gezdirilen matrisin, sınırlara gelmemesi için kenar pixellerden uzak durulur. Eğer mutlaka tüm pixeller işlenmek isteniyorsa, o zaman, kenar pixel merkez olduğunda, görüntü üzerinde işlenen 3x3lük pixel matrisin 3. sütunu bulunmadığı için, tekrar ikinci sütunu üçüncü sütun yerine yerleştirilerek işlemlere devam edilir. Filtrelemede karşılaşılabilecek ikinci problem pixellerin çarpma ve bölme işlemleri sonucunda maximum veya minimum değerlerden taşmasıdır. Bu durumda pixel maximum veya minimum renk değerine geri çekilir.

   Filtreleme yapılırken renkli bir görüntü kullanılıyorsa, tüm renklerin (kırmızı, yeşil, mavi) ayrı ayrı, filtre matrisi (çekirdek matris/kernel matrix) ile işleme girmesi sağlanmalıdır.
  
Görüntü Filtreleri
Resim: Görüntü Filtreleri Örnek Uygulama (indirmek için tıklayın)

   Yukardaki programı yazarken gözardı ettiğim için beni oldukça uğraştıran ve "Hata nerede?" diye düşündüren ufak ama önemli bir noktayı da yazayım. Filtre gezdirilirken elde edilen değerler görüntüye hemen aktarılamamlıdır. Başka bir değişle, işlenen değerler ile işlenecek değerler aynı dizi içerisinde bulunmamalıdır. Yoksa her seferinde işlenen pixel işlenmiş başka pixellerle tekrar işleme girer ve filtreleme yanlış sonuç verir. Programa en çok kullanılan filtrelerden 19 tanesini ekledim. Başka filtreleri, matris elemanlarını doldurarak deneyebilirsiniz. Programda picturebox nesnesinin pixel okuma ve yazma hızı olduça düşük olduğu için, GDI+ kütüphanesinin fonksiyonlarını kullandım. Eğer sisteminizde bulunmuyorsa 858 KBlık GDI+ kütüphanesini indirmek için tıklayın...
 
Okunma Sayısı: 1013
Yayınlanma Tarihi: 14 Ağustos 2009 Cuma - 16:18
Anahtar Kelimeler: Görüntü filtreleri, filtreler, kenar tespit, kabartma, yumuşatma, detaylandırma, görüntü işleme, soften, sharpen, edge detection, emboss, enhance filters, image filters
Yorumlar ( 2 )
ümit
#1

05/04/2010, 15:08

selamlar;
siteyi az önce netten tanıdım ve bir hazine bulmuş gibi sevindim bu duyguyu yaşattığınız için ilk mesajımda öncelikle çok teşekkür ederim... programlama olarak sadece resim işleme ile ilgileniyorum örneğinizdeki matrisi resme nasıl uyguluyoruz bunun mantığını anlatabilirmisiniz acaba ?
Hüseyin Atasoy
#2

05/04/2010, 22:14

Yazıda kısaca filtrenin nasıl gezdirileceğinden bahsetmişim ama sanırım çok kısa olmuş. Biraz daha açalım; filtreler 3x3 matrislerdir ve bu matrisler görüntü üzerinde gezdirilir. Gezdirilen matrisin altında resme ait pixellerin oluşturduğu bir başka matris vardır. İşte bu iki matrisin üstüste gelen elemanları birbirleri ile çarpılır ve bu çarpımlar toplanır. Elde edilen toplam, filtre matrisindeki elemanlarının tümünün toplamına bölünür. Sonuçta elde edilen değer filtre matrisinin tam ortasındaki elemanın altında kalan pixele yazılmak üzere saklanır. Pixellerin güncellenmesi ancak filtre tüm pixelleri gezdikten sonra yapılmalıdır...
Yorum/Görüş Bildir
Yorumları html kodu veya özel karakter kullanmadan, yazım kurallarına
dikkat ederek ve düzgün bir Türkçe kullanarak yazalım...
 
    Atasoy Blog v3.0 © 2009-2010 Hüseyin Atasoy | Tema Tasarımı: Hüseyin Atasoy
AtasoyWeb 1 yaşında, bu tema benden ona doğum günü hediyesi :)    
Programlama Günlüğü > Dijital Sinyal İşleme > Görüntü İşleme > Görüntü Filtreleri
Menü