Bir bilgisayar mühendisi için programlama dili, öğrendiklerini sınadığı, deneyler yaptığı bir laboratuardır ve mühendisler deneylerini, kestiremedikleri sonuçları gözlemlemek için değil, öngördükleri sonuçları doğrulamak için yapar...

Görüntü Filtreleri

Görüntü filtreleri nasıl uygulanır? 3x3 matris filtreler, kenar tespit, kabartma, yumuşatma, detaylandırma 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ılmamalı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...

Sayfayı
Yayın tarihi: 14 Ağustos 2009 Cuma, 16:18
Anahtar kelimeler: görüntü filtreleri, kenar tespit, kabartma, yumuşatma, detaylandırma

Yorum Gönder

 
Yorumunuzu -1. yoruma yanıt olarak gönderiyorsunuz. Yanıtlamayı iptal etmek için buraya tıklayabilirsiniz.

 

Yorumlar (6)

ümit
Yanıtla
05 Nisan 2010 Pazartesi, 15:08
#1

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
Yanıtla
05 Nisan 2010 Pazartesi, 22:14
#2

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 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...

munir
Yanıtla
11 Kasım 2010 Perşembe, 16:41
#3

ellerinize  sağlık, sizin yaptığınız hatayı bende yaptım  okuyunca şimdi anladım  ellerinize sağlık...

Çağrı
Yanıtla
12 Mayıs 2011 Perşembe, 18:22
#4

Anlayamadığım bir şey var. Matris elemanlarını pikselin her bir bandının değeriyle ayrı ayrı mı çarpıyoruz? Yani R, G ve B batlarının değerleriyle.

Hüseyin Atasoy
Yanıtla
13 Mayıs 2011 Cuma, 08:28
#5

Evet aynen öyle. Her renk bileşeni ayrı ayrı işlenir.

aslan
Yanıtla
01 Ekim 2011 Cumartesi, 17:29
#6

Sanırım bunu Visual Basic'te yapmışsınız kodlarını paylaşsanız gerçekten işime çok yarayacak bu gezdirme işlemi nasıl oluyor anlamam açısından faydalanacağım.

 
 
Sayfa 43 sorgu ile 0.017 saniyede oluşturuldu.
Atasoy Blog v4 © 2008-2017 Hüseyin Atasoy