Araç Plakası Konum Tespiti

GaborFiltresi.dll ve BaglantiliBilesenEtiketleme.dll kütüphanelerini kullanarak bir görüntü üzerinde bir veya birden fazla araç plakasının konumunu tespit eden uygulama.
Araç Plakası Konum Tespiti Uygulaması
Kaynak kodlar (C#) için: tıklayınız

Son yazdığım 2 kütüphanenin nerelerde kullanılabileceğine ilişkin iyi bir örnek olacağını düşünerek C# ile bir araç plakası konum tespit uygulaması hazırladım.

Programda çeşitli parametrelere verdiğim değerler, birkaç araba resmi üzerinde yaptığım ölçümlere dayanıyor. Normalde en uygun değerler yüzlerce araba resmi üzerinde yapılan testler sonucunda elde edilir ama elimde o kadar görüntü yok. Zaten elimdekilerini de google görsellerinden aldım...

Programın kullandığı kütüphaneler ile ilgili daha fazla bilgi için:

Yöntemler ile ilgili daha fazla bilgi için:

Aşağıdaki resimler görüntülerin adım adım hangi işlemlerden geçirildiğini gösteriyor:

Orjinal görüntü
1. Orjinal görüntü
Gri görüntü
2. Gri görüntü
Gabor filtresinden geçmiş görüntü
3. Filtreli görüntü(Gabor ile)
İkili görüntü
4. Eşiklenmiş ikili görüntü
Yatayda genişletilmiş
5. Yatayda genişletilmiş görüntü
Etiketlenmiş Bileşenler
6. Etiketlenmiş bileşenler

Görüntüyü Gri Seviyeye İndirgeme

Her pixelin ana renklerinin ortalaması alınarak((r+g+b)/3) pixeller gri seviyeye indirgenebilir.

Görüntüyü Gabor Filtresinden Geçirme

Bu işlem GaborFiltresi.dll kütüphanesi tarafından yapılır. Görüntüdeki dik ayrıtlar dışındaki tüm ayrıtlar gabor filtresi ile filtrelenir. Böylece yataya dik ve dike yakın açılar yapan ayrıtlar elde edilir. Görüntüler üzerinde dik ayrıtların en yoğun olduğu bölgeler plaka karakterlerinin bulunduğu bölgelerdir. Yoğunluğun tespiti ileriki adımlarda yapılır. Programda gabor filtresi kütüphanesine gönderilen parametreler; yönelim açısı 90, faz açısı 0, en/boy oranı 0.9, band genişliği 1, standart sapma 0(0 değeri standart sapmanın kütüphane tarafından hesaplanmasını sağlar), dalga boyu 4.

Görüntüyü İkili Biçime Dönüştürme

Görüntü sabit bir eşik değeri ile eşiklenerek ikili biçime dönüştürülür. Programda kullanılan eşik değer; 70.

Yatayda Genişletme

Elde edilen ikili görüntü yatay doğrultuda genişletilir. Programda hem ikili seviyeye dönüşüm hem de genişletme işlemleri .NET'in Graphic sınıfından yararlanılarak gerçekleştirilmiştir. İkili seviye dönüşümü için basit bir eşikleme yapılmış, genişletme işlemindeyse görüntü üzerinde rastlanan her bir beyaz pixel için, pixeli orta nokta kabul eden 16 pixel genişliğinde yatay çizgiler çizilmiştir.

resim = new Bitmap(genislik, yukseklik);
Graphics grafik = Graphics.FromImage(resim);
Pen kalem = new Pen(Brushes.White);
grafik.Clear(Color.Black);
for (y = 0; y < yukseklik; y++)
   for (x = 0; x < genislik; x++)
       if (gPixeller[y * genislik + x] > esik) // gPixeller[]: gabordan geçmiş gri pixel dizisi
            grafik.DrawLine(kalem, x - genisletmeMiktari, y, x + genisletmeMiktari, y);

Görüntüdeki Bileşenleri Etiketleme

Bu işlem BaglantiliBilesenEtiketleme.dll kütüphanesi tarafından yapılır. Görüntüdeki bileşenler bağlantılı bileşen etiketleme yöntemi ile etiketlenir. Böylece koordinatlarının tespiti kolaylaşır.

Bileşenlerin Koordinatlarını Tespit Etme

Bu işlem de BaglantiliBilesenEtiketleme.dll kütüphanesi tarafından yapılır. Her bir etiketlenmiş bileşenin en sol-üst ve en sağ alt pixellerinin konumu tespit edilir. Bu değerler kullanılarak en ve boy bilgileri hesaplanır.

Plaka Bölgesini Doğrulama

Elde edilen bileşenlerin tümü plakalara ait değildir. Bileşenlerin en ve boy değerleri plakaOlabilirMi() fonksiyonuna yollanır ve burada basit bir en/boy oranı kontrolünden geçirilir:

private bool plakaOlabilirMi(int en, int boy)
{
    if (boy < 5) return false;
    // Aşağıdaki oranı ve tölerans değerini birkaç plaka örneğini deneyerek buldum.
    // Bu yüzden bu yöntem tüm plaka konumlarının tespit edilmesini sağlayamayabilir.
    if (Math.Abs((float)en / boy - 4.5) < 2 && en > 40) return true;
    return false;
}

Plaka sağa veya sola eğimli olabileceği için en/boy oranına +-2 kadarlık fark töleransı tanınmalıdır. Ayrıca farklı oranlarda plakalar da kullanıldığından, bu fonksiyona farklı değerler eklenerek farklı oranlara sahip plaka tiplerinin de doğrulanması sağlanabilir...

Yayın tarihi: 21 Şubat 2011 Pazartesi, 16:39
Anahtar kelimeler: araç plakası yer tespiti, plaka konum tespiti, gabor filtresi, bağlantılı bileşen etiketleme

Yorum Gönder


 

Yorumlar

Onaylanmış yorum bulunmuyor.
 
 
Atasoy Blog v4 hafif sürüm, © 2008-2014 Hüseyin Atasoy
Sayfa 23 sorgu ile 0,012402 saniyede oluşturuldu. | Anasayfa | Yukarı Çık