Görüntü İşleme
 
Üye Girişi
E-mail:

Şifre:



 
Blog Arama Motoru
 
Email Aboneliği
Yeni yazılar yazıldığında email adresinize bildirim gelmesini isterseniz aşağıdaki formu doldurabilirsiniz.
(Hizmet FeedBurner tarafından sağlanmaktadır.)

Email:

 
 
Kenar Tespiti (Edge Detection)
   Kenar belirleme işlemi birçok alanda kullanılıyor. Bunun için sobel gibi çeşitli algoritmalar mevcut. Ama biz kendi algoritmamızı kendimiz oluşturalım :D
   Öncelikle kenar derken ne kastettiğimiz önemli. Resim üzerinde kenar, bir renkten diğer renge geçişin olduğu noktaların meydana getirdiği çizgi şeklinde tanımlanabilir. Şimdi işimiz daha kolaylaştı. Yapmamız gereken şey resim üzerindeki her pixeli taramak ve komşu pixel ile arasındaki renk farkını analiz etmek. Ancak unutulmaması gereken bir nokta daha var. Bilgisayar bizim bile farkedemeyeceğimiz ufak geçişleri önemser. Dolayısıyla her renk geçişini kenar kabul edersek kenar falan belirleyemeyiz. O halde bir eşik değerine ihityacımız var. Eğer fark bu eşik değerinin üstünde ise o zaman bu pixel bir geçiş pixeli olur.

   Buraya kadar herşey tamam. Peki pixelleri hangi komşu pixellerle karşılaştırmamız lazım? Eğer her pixelin sadece sağındaki pixelleri kontrol edersek yatay kenarları tespit edemeyiz. Sadece alttaki pixelle karşılaştırırsak bu sefer de dikey kenarları tespit edemeyiz. O halde her pixelin hem sağındaki hem de altındaki pixeller ile arasında bulunan farkı kontrol etmemiz lazım.

   Bu yöntemi sadece bir renk için uygulayabileceğiniz gibi tüm renkler için( asıl kenar tespiti bu ) de uygulayabilirsiniz. Ve eğer kullandığınız dil RGB değerleri ile işlem yapıyorsa bu değerleri renklerine ayrıştırıp renklerin tamamının aynı anda işleme konması ve hepsinin de eşik değerin üstünde fark vermesini şart koşmanız lazım. RGBnin nasıl ayrıştırılacağını başka bir yazıda açıklamıştım...

Kenar Belirleme Yöntemi

   Bu arada şunu da söylemeliyim; bir resim için kenar belirleme işleminde kullanacağımız eşik değerini bir başkası için kullanamayabiliriz. Çünkü her resmin kontrastı birbirinden farklı olabilir. Resimdeki eşik değerini resmin niteliğine göre ayarlayan bir fonksyon yazdım ama çok ta ayrıntılı deneme fırsatı bulamadım. Eğer tutarsa ilerde yazarım. Gerçi bu sorunu belli oranda gidermek için histogram eşitleme yöntemi var ama bu yöntem eşik değerinin değişmesi gerektiği resimlerde bu değeri yine de sabit tutamıyor. Histogram eşitleme yöntemini de ileriki yazılarda işleyeceğim...
Yayınlanma Tarihi: Blogun eski sürümü ile yazılmış, tarih kaydı bulunmuyor...
Anahtar Kelimeler: kenar, edge, detection, tespit, belirleme, fark, pixel, yatay, histogram
Yorumlar ( 7 )
Musa
#1

17/11/2009, 18:06

Merhaba Hocam. Çalışmanız çok güzel. Acaba kaynak kodlarını paylaşmanız mümkün mü?
Hüseyin Atasoy
#2

18/11/2009, 11:57

Kaynak kod paylaşmıyorum normalde. Zaten maksat yöntemi vermek. Sonuçta herkes aynı dili kullanmıyor. Kolay gelsin...
Ali
#3

31/01/2011, 17:33

Merhaba hocam,

Aynı resme uyguladığım algoritma sonucunda ben de aşağıdaki şekli elde ediyorum, fakat o resme ne gibi işlemler uygulayıp plaka yerini tespit edebileceğimizi hala çözemedim.Yardımcı olursanız sevinirim.
Hüseyin Atasoy
#4

01/02/2011, 09:12

Resimde dikdörgen bölgeleri belirlemeye çalışıyoruz. Bunun için yatay çizgi, dikey çizgi ve köşe olabilecek bölgeler arıyoruz.
x, y ekseni veya bu eksenleri belli bir açı ile kestiğini varsaydığımız başka bir eksen boyunca belli bir uzunlukta sürekli devam eden beyaz pixellere rastlarsak bu çizgidir.
Az önce belirlediğimiz eksene dik olan başka bir eksen üzerinde bir başka çizgi tespit edebilirsek bu iki çizginin kesiştiği nokta bizim için köşe anlamına gelecektir.
Yazıda anlattığım kenar belirleme yöntemi ile dikdörtgen bölge tespiti yapmak için resmi hazırlamak pratikte çok başarısız bir yöntem. Örneğin beyaz bir arabanın plakasının yerini tespit etmek imkansız oluyor. Daha farklı bir yöntem izlenmeli...
Ali
#5

01/02/2011, 13:59

Merhabalar Hocam,

İlk önce teşekkür ederim, açıklamalarınız için. Şöyle bir sorun var, ben mesela Gabor süzgeci kullanıyorum ve gürültüleri temizledikten sonra karşıma beyaz pixel olarak karşılaştığım çok az alan kalıyor. Ve çoğunlukla da en fazla alanı kaplayan yerde de plaka oluyor. Ve tam bir dikdörtgen karşıma ne yazık ki çıkmıyor.

Sizin bu yöntemle yani sadece piksellerin birbirini 90 derecelik açıyla kesmesi, resmin son halinde pek mümkün gözükmüyor.

Ne yapmam gerekiyor bu konuda hala kafamda bir şey belirleyemedim.
Yardımlarınız için teşekkür ederim.
Ali
#6

01/02/2011, 14:08

Ve hocam az önce yazarken unutmuşum, plakanın resmini her zaman aynı açıdan çekmiyoruz. Dolayısıyla, birbiriyle dik kesişen çizgileri sadece karşıdan çekilmiş bir plaka ile bulabiliriz gibime geliyor. Ve farklı açıdan çekilmiş bir resimdeki çizgileri belirlemek de ayrı bir sorun olarak karşımızda duruyor. Zira, biz filtrelenmiş ve siyah beyaz forma dönüştürdüğümüz resmi elde ettiğimizde, bunları haliyle dik olarak taramak zorunda değil miyiz?
Hüseyin Atasoy
#7

01/02/2011, 17:09

Yukarıdaki yöntemin kafanızı karıştırmasını istemem. Gabor süzgeci bu tip uygulamalar için oldukça uygun. Yukarıdaki yöntem basit bir kenar belirleme ve onu takiben çizgi belirleme yönteminden oluşuyor. Bu yöntemdeki eşik değerini bile değiştirdiğimde kenarlar kaybolabiliyor.
Gabor ile ilgili çok fazla şey bilmiyorum. Bence yolunuzu bu yöntem yüzünden değiştirmeyin. Gabordan sonra genişletme ve aşındırma algoritmalarından faydalanarak plaka bulunması muhtemel bölgeleri işaretleyip en boy oranına bakarak gerçek plaka konumunu buldurabileceğinizi düşünüyorum:
http://www.atasoyweb.net/blog/goruntu-isleme-k6s0/genisletme-ve-asindirma-y39.html
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-2012 Hüseyin Atasoy | Tema Tasarımı: Hüseyin Atasoy