Araç Plakası Konum Tespiti
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:
•
GaborFiltresi.dll
•
BaglantiliBilesenEtiketleme.dll
Yöntemler ile ilgili daha fazla bilgi için:
•
Gabor Filtresi
•
Bağlantılı Bileşen Etiketleme (Connected Component Labeling)
•
Gri Seviye Ve Binary Dönüşüm
Aşağıdaki resimler görüntülerin adım adım hangi işlemlerden geçirildiğini gösteriyor:
1. Orjinal görüntü
|
2. Gri görüntü
|
3. Filtreli görüntü(Gabor ile)
|
4. Eşiklenmiş ikili görüntü
|
5. Yatayda genişletilmiş görüntü
|
6. Etiketlenmiş bileşenler
|
Adım 1: Görüntüyü Gri Seviyeye İndirgeme
Her pixelin ana renklerinin ortalaması alınarak((r+g+b)/3) pixeller gri seviyeye indirgenir.
Adım 2: 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.
Adım 3: 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.
Adım 4: 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);
Adım 5: 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.
Adım 6: 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.
Adım 7: 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ınlanma Tarihi: 21 Şubat 2011 Pazartesi - 16:39
Anahtar Kelimeler: araç plakası yer tespiti, plaka konum tespiti, gabor filtresi, bağlantılı bileşen etiketleme, görüntü işleme
Onaylı yorum bulunmuyor.
Yorum/Görüş Bildir