‘çalışmalarım’ etiketli içerik
PSNC’deki 3. haftamın sonunda tamamladığım bu proje ile kamera görüş alanı içerisinde hareket eden öğelerin tespit edilmesi ve her ögenin kendi tanımlayıcı numarası ile takip edilmesi sağlanıyor. Bir önceki projemde olduğu gibi bu uygulamayı da Java ile OpenCV kütüphanesi arasında bir köprü niteliğinde olan JavaCV sarmalayıcısını kullanarak geliştirdim. Projenin temel işleyiş biçimini aşağıdaki başlıklar altında özetleyebiliriz.
Mevcut anlık görüntü içerisinde nesne bulma (Blob Detection)
Anlık görüntü içerisinde hareket eden cisimlerin bulunması için uygulanan yöntemler;
Mixture of Gaussians yaklaşımı ile dinamik arkaplan çıkarımı,
Elde edilen görüntünün eşikleme uygulanarak binary görüntüye dönüştürülmesi,
Biçimsel işlemler ile gürültünün giderilmesi ve nesne içi kopuklukların kapatılması,
Bağlı bileşenlerin bulunması ve çevreleyen dikdörtgenlerin elde edilmesi şeklinde özetlenebilir.
Bulunan nesnelerin bir önceki anlık görüntü ile ilişkilendirilmesi
Videonun ardışık çerçevelerinde aynı nesnelerin birbirleriyle ilişkilendirilmesini sağlamak için temel olarak aşağıdaki adımlar uygulanmıştır;
Bir önceki görüntüdeki nesnelerin mevcut nesnelere koordinat uzaklıklarının bulunması,
Görüntünün RGB renk uzayından HSV uzayına dönüştürülmesi ve nesnelerin Hue-Saturation histogramlarının elde edilmesi,
Histogramların normalizasyonu ve birbirine olan uzaklıklarının bulunması,
Ardisik iki görüntüdeki nesnelerin koordinat ve histogram uzaklıklarının karşılaştırılması,
Mesafe ve renk olarak en yakın olan nesnelerin uzaklığı belirli bir değerin altındaysa nesne tanımlayıcılarının (ID) eşleştirilmesi, değilse nesneye yeni ID atanması.
Çerçeveler arası süreksizlik probleminin çözümü
Anlık çerçevede bir nesne kaybolduğunda nesnenin önceki çerçevelerdeki hareketi göz önünde bulundurularak lineer regresyon ile yeni konumu hesaplanmaktadır. Nesnenin gerçekten kaybolmuş olabileceği durumunu da ele alabilmek için hesaplanarak konumu tahmin edilen nesneler hayalet nesne olarak işaretlenmekte ve ardisik çerçeve sayısı cinsinden bir ömür atanmaktadır. İlerileyen çerçevelerde nesne tekrar tespit edilirse yakalanmakta ve gerçek nesne olarak işaretlenmekte, ömrü bitene kadar tespit edilemezse silinmektedir. Bir nesnenin kisa bir sure icin kaybolmasi sorun oldugu gibi, genellikle görüntüdeki küçük hareketliliklerden kaynaklanan (örneğin ağaçların rüzgarla hareket etmesi) kisa sureli istenmeyen nesnelerin ortaya çıkması da problem olmaktadir. Bu sorun da benzer şekilde her nesneye bir yaşam süresi atanması ve belirli bir süreden daha uzun süre varlığını sürdürmeyen nesnelerin silinmesi ile çözülmüştür.
Stajımın ilk haftasında Java ve (JavaCV sarmalayıcısı ile) OpenCv kullanarak geliştirdiğim bir çeşit görü tabanlı izleme sistemi olan bu proje ile otopark alanına bakan bir kameradan alınan görüntüler işlenerek park alanında kaç araç bulunduğu, hangi alanların boş hangilerinin dolu olduğu gibi bilgiler kamera görüntüsü üzerinde görüntülenebiliyor.
Sistemin işleyişi oldukça basit, genel adımları aşağıdaki gibi özetleyebilirim:
İşaret dilinin bir alt kümesi olan parmak alfabesi ile ifade etme, özellikle özel isimleri ifade edebilmek veya anlaşılmayan kelimeleri netleştirmek için kullanılan, her harfin bir işaret ile temsil edildiği bir ifade etme yöntemidir. Türk İşaret Dili parmak alfabesinde çeşitli harf imlerinin ve karmaşık el şekillerinin varlığı, kamera tabanlı bir otomatik algılama sisteminin geliştirilmesini zorlaştırmaktadır.
Bu projede, Türkçe parmak alfabesinde benzer karakterlerin ayırt edilmesini kolaylaştıracak en etkili özelliklerin çıkarılmasına yönelik bir otomatik parmak alfabesi algılama sistemi geliştirilmiştir. Bu çalışmada temel olarak Histograms of Oriented Gradients (HOG) yöntemi ile özellik çıkarımı ve Principal Component Analysis (PCA) yöntemi ile özellik azaltma üzerine kurulu bir yaklaşım öne sürülmüştür. Özellik çıkarımında el şekillerinin dış izdüşümünün kullanılması yerine görüntülerin gri seviyesindeki iç özelliklerin kullanılması sistemin ayırt edicilik başarımını artırmaktadır. Sınama amaçlı kullanılan veri seti 4 farklı işaretçiden alınmış olan 493 parmak harfi görüntüsünden oluşmaktadır ve sınama sonuçlarında %99.39 ortalama sınıflama başarısı elde edilmiştir.
Projenin videosuna aşağıdaki youtube bağlantısından ulaşabilirsiniz:
Bitirme tezimin kısaltılmış web sürümüne aşağıdaki scribd bağlantısından ulaşabilirsiniz:
[Web edition of the B.Sc. thesis]
Konu ile ilgili bildirimi aşağıdaki bağlantıdan indirebilirsiniz:
F. Işıkdoğan and S. Albayrak, “Automatic Recognition of Turkish Fingerspelling”, Proceedings of International Symposium on INnovations in Intelligent SysTems and Applications (INISTA 2011), pp. 264-267, June 15-18, 2011, Istanbul, Turkey [IEEE Xplore Link][PDF Download]
Bu küçük oyunda akademik kariyerin çeşitli aşamalarında önemli bir yere sahip olan tez savunması oturumlarına mizahi bir yaklaşımda bulunmaya çalıştım.
Oyunda kontrol edilen mezuniyet durumundaki öğrenci, tezi hakkındaki soru yağmuruna cevap yetiştirmeye çalışıyor ve tez savunması sırasındaki performansına göre bir harf notu alıyor.
Başarı oranı öğrenci sorulara zamanında ve isabetli cevaplar verdiğinde yükseliyor, cevaplanamayan soru olduğunda veya isabetsiz cevap verildiğinde ise düşüyor. Sorular bittiğinde oturum sona eriyor ve öğrencinin notu kesinleşiyor.
Oyunu aşağıdaki linkten ücretsiz olarak oynayabilirsiniz:
[ Hemen Oyna: DefendYourThesis! ]
Bu arada arka plan müziği de kendi parçalarımdan biri, parçanın tamamını aşağıdaki MySpace bağlantısından dinleyebilirsiniz:
Bizim de çizgi izleyen bir robotumuz oldu. Çok yenilikçi bir çalışma olduğu söylenemez ama uğraşması oldukça zevkli.
Gerçek zamanlı sistemler dersinin projesi olarak 3 kişilik bir ekip ile 4 günde geliştirdiğimiz bu robotun teknik detaylarını ve videosunu yazının devamında inceleyebilirsiniz.
Geliştirilen robot, beyaz zemin üzerindeki siyah çizgiyi IR yansımaya dayalı algılayıcıları ile algılamakta ve çizginin oluşturduğu yol üzerinde ilerlemektedir. Yazının devamında robotun kullandığı karar yöntemleri, robotun tasarımı, karşılaşılan problemler ve çözümlerine yer verilmiştir.
Kullanılan Malzemeler:
İçerik tabanlı görüntü erişim teknikleri, genellikle geniş görüntü veritabanlarında istenilen özelliklerde sayısal görüntü aramakta kullanılmaktadır. Görüntü erişiminde renk, doku, şekil vb. özelliklerden faydalanılabilmektedir. İçerik tabanlı görüntü erişiminin basit bir uygulaması olan ‘GörüntüBul’ ile seçilen bir görüntünün renk özelliklerine bakılarak benzer görüntüler belirtilen dizinler altında aranabilmektedir.
Yapılan her aramada, belirtilen dizin altındaki bütün görüntülerin tekrar tekrar işlenmemesi için, seçilen her dizin için bir kez olmak üzere ‘Sistemi Eğit’ sekmesi altında özellik dosyası oluşturulması gerekmektedir. Daha sonra bu dosya kullanılarak ‘Sistemi Sına’ sekmesinden istenilen görüntü ile arama yapılabilmektedir.
Görüntü arşivi içerisinde, seçilen bir görüntüye benzer görüntüleri bulmakta kullanılabilecek bu uygulamayı aşağıdaki linkten ücretsiz indirebilirsiniz:
[GörüntüBul v0.1] (0,8 MB)
Uygulamanın temel çalışma mantığını ve kaynak kodlarını yazının devamında inceleyebilirsiniz.
8-Puzzle problemi 1’den 8’e kadar sayılarla doldurulmuş ve bir karesi boş olan 3×3 boyutunda bir matrisin istenilen bir hedef duruma getirilmesinin amaçlandığı bir oyun olarak tanımlanabilir. Puzzle üzerindeki elemanların yalnızca boşluk ile yer değiştirdiği (kaydırıldığı) hareketler geçerli kabul edilmektedir.
Çözüm uzayında herhangi bir durumdan en fazla 4 duruma geçilebilmektedir. Çözüm uzayının ağaç yapısıyla ifade edilmesi mümkündür, ancak bu uygulamada sezgisel arama sırasında en küçük durumun bulunmasını kolaylaştırdığı için kuyruk yapısının kullanılması tercih edilmiştir. Bu çalışmada sezgisel arama yöntemi olarak A* algoritması ve sezgisel olmayan arama yöntemleri olarak önce enine arama ve önce derinliğine arama algoritmaları gerçeklenmiştir.
Geliştirilen uygulamayı aşağıdaki linkten indirebilir, çözüm detaylarını yazının devamında okuyabilirsiniz.
[8-Puzzle Çözücü v1.1] (0,4 MB)
Sayısal görüntülerde geometrik şekil bulmanın görüntü işlemede birçok uygulama alanı bulunmaktadır. İris bulma, plaka bulma, saha üzerinde top bulma ve benzeri uygulamalar buna örnek olarak verilebilir.
Bir kamera veya benzeri bir algılayıcı yardımı ile elde edilen görüntülerdeki şekillerin her zaman eksiksiz yer alması mümkün olmamaktadır ve şekillerdeki kopukluklar şekil tespitini zorlaştırmaktadır. Bu noktada hough dönüşümü ile görüntünün tamamının görülebilir olmadığı durumlarda da olası şekiller tespit edilebilmektedir. Bu çalışmada şekil bulmada kullanılan hough dönüşümünün dairesel şekil tespitinde kullanımı üzerinde durulmuştur.
Hough dönüşümü temelde kenarların olası geometrik şekilleri oylaması mantığı ile çalışmaktadır. Hough dönüşümü kullanılarak şekil tespiti genel olarak aşağıdaki adımlar ile özetlenebilir:
- Kaynak görüntü üzerinde kenarlar belirlenir.
- Bir eşikleme yöntemi kullanılarak görüntü ikili (siyah-beyaz) hale getirilir.
- Her kenar pikseli için noktanın üzerinde olabileceği olası geometrik şekillerin polar koordinattaki değerleri kullanılan bir akümülatör matrisi üzerinde birer artırılarak her kenar pikselin olası şekilleri oylaması sağlanmış olur.
- Akümülatör değeri en yüksek olan şekiller en çok oy alan şekiller olduklarından görüntü üzerinde bulunma veya belirgin olma olasılıkları en yüksek olmaktadır.
- Bulunan şekiller isteğe bağlı olarak görüntü üzerine yazdırılabilir.
Bu çalışmada kaynak görüntüler üzerinde dairesel şekil arandığından kullanılan akümülatör matrisi çemberin merkezi olan [a,b] noktaları ve yarıçap değeri [r] olmak üzere üç boyuttan oluşmaktadır. Belirlenen aralıktaki yarıçap değerleri için çember merkezi çember denkleminden faydalanılarak bulunabilir.
- r2 = ( x – a )2 + ( y – b )2
- x = a + r×sin(θ)
- y = b + r×cos(θ)
Kullanılan açı değeri 0 – 2π aralığında değiştirilerek bir noktanın, yarıçapı bilinen bir çember üzerinde yer alıp almadığı tespit edilebilmektedir. Yarıçap değerinin bilinmesi durumunda çember merkezini ifade eden [a,b] değerlerinin iki boyutlu bir akümülatör matrisi üzerinde tutulması yeterli olacaktır. Yarıçap değerinin bilinmemesi veya bir aralık halinde olması durumunda ise olası yarıçap değerleri bir döngü içerisinde denenerek merkez koordinatları ve yarıçap uzunluğu boyutlarına (a,b,r) karşılık gelen akümülatör değerleri artırılarak elde edilen üç boyutlu akümülatör matrisi elde edilebilmektedir.
