Bilgisayarlı Görüntüleme Projeleri

Projenin GitHub Deposu

Hakkında

Bu depo, Mehmet ve Jean‘in Colorado School of Mines‘de Güz 2020 döneminde CSCI437 dersine kayıtlı oldukları süre boyunca üzerinde çalıştıkları tüm kodlama projelerini (laboratuvarları) sergilemektedir; kapsanan dönem 28 Ağustos 2020 ile 14 Aralık 2020 arasındadır. Bu laboratuvarlar, Python, OpenCV ve temel bilgisayarlı görme kavramlarını öğrenmek için kapsamlı bir platform sağladı.

Ders Hakkında

Güz 2020 döneminde Bilgisayarlı Görmeye Giriş (CSCI437) dersini aldım. Bu süre zarfında dersi Dr. William Hoff ve Dr. Tom Williams verdiler. CSCI437 için resmi ders açıklaması şu şekildedir:

(I) Computer vision is the process of using computers to acquire images, transform images, and extract symbolic descriptions from images. This course provides an introduction to this field, covering topics in image formation, feature extraction, location estimation, and object recognition. Design ability and hands-on projects will be emphasized, using popular software tools. The course will be of interest both to those who want to learn more about the subject and to those who just want to use computer imaging techniques. Must be Senior level standing. 3 hours lecture; 3 semester hours. Prerequisite: (MATH201 or MATH334 or EENG311),and,MATH332,and,(CSCI200 or CSCI261).

Katkılar

Ders sırasında, slaytlarda veya Canvas üzerinden CSCI437 dersi tarafından sağlanan Python betikleri ve/veya kod parçaları bulunmaktadır. CSCI437 dersi Colorado School of Mines’te verilmektedir. Bu laboratuvarlar aşağıdaki ortaklarla birlikte yapıldı:

  • Jean Duong
  • Mehmet Yilmaz

Laboratuvar Açıklamaları

Laboratuvar 1

Laboratuvar 1, Python ile OpenCV kullanımının temellerine odaklanır. Katılımcılardan bir video dosyasını okuyan, her kareye bir kare oluşturan dört noktayı projekte eden ve her noktanın Z koordinatını kademeli olarak ayarlayarak karenin uzaklaşmasını simüle eden bir Python programı yazmaları beklenir. Ek olarak, kare numarası her karede gösterilmeli ve grafik bindirmeleriyle son video değerlendirme için yüklenmelidir.

Laboratuvar 2

Laboratuvar 2, görüntü dönüşümleriyle ilgilidir; özellikle “XYZ sabit açılar” konvansiyonunu kullanarak X, Y ve Z eksenleri etrafında yapılan dönüşümlere odaklanır. Öğrencilerden dönüşüm matrislerini hesaplamaları, kamera pozları için homojen dönüşüm matrislerini hesaplamaları, bir kalibrasyon matrisi oluşturmaları ve OpenCV’nin line fonksiyonunu kullanarak bir görüntüye noktaları projekte ederek tanıdık bir nesne oluşturması beklenir. Laboratuvar, bilgisayarlı görmede kamera geometrisi ve dönüşüm matrislerinin anlaşılmasını vurgular.

Laboratuvar 3

Laboratuvar 3, şablon eşleştirme ile ilgilidir; öğrencilerden normalleştirilmiş çapraz korelasyonu kullanarak bir film dosyasının her karesinde bir şablon alt-resmini izlemeleri istenir. Ödev, kullanıcının filmin ilk görüntüsünden bir şablon seçmesine izin vermeyi, bu şablonu sonraki görüntülerde takip etmeyi, her görüntüde şablonun konumunu göstermek için dikdörtgenler çizmesini ve bu konumları göstermek için bir çıktı film dosyası oluşturmasını içerir. Öğrencilerin en iyi izlemeye hangi şablonun izin verdiğini ve nedenini anlamak için farklı şablonlarla denemeler yapmaları ve eşleşmeler doğru şekilde tanımlandığında gözlemlenen korelasyon skorlarını tartışmaları teşvik edilir.

Laboratuvar 4

Laboratuvar 4, renkli görüntülerle çalışırken etkili olduğu derslerde tartışılan HSV renk uzayını kullanarak renk segmentasyonuna odaklanır. Öğrencilerden sağlanan görüntülerden dur işareti piksellerini segmentlemek için eşikleme işlemleri uygulayan bir Python/OpenCV programı yazmaları istenir. Ödev, dur işareti piksellerini en iyi tespit eden eşik değerlerini bulmayı, sonucu temizlemek için morfolojik işlemler yapmayı ve segmentlenmiş görüntüleri, Python programını ve kullanılan eşik ve morfolojik işlem parametrelerini sunmayı gerektirir.

Laboratuvar 5

Laboratuvar 5, mevcut bir görüntünün belirli bir alanına yeni bir görüntü dokusu ekleme görevini içerir; böylece projeksiyon doğru görünür. Bu işlem, düzlem değiştirme olarak bilinir ve öğrencilerin yeni bir görüntüyü mevcut bir görüntünün düzlemsel bir alanına eşlemek için projektif dönüşüm (homografya) tekniklerini kullanmalarını gerektirir. Laboratuvar, perspektif doğruluğunu korurken görüntü içeriğini değiştirmede homografyanın pratik uygulamasını vurgular. Öğrencilerden orijinal görüntüyü, değiştirilmiş dokuya sahip görüntüyü, birleştirilmiş görüntüyü ve Python programlarını teslim etmeleri beklenir.

Laboratuvar 6

Laboratuvar 6, bir görüntüde beş kontrastlı konsantrik çemberden (CCC) oluşan bir hedefi algılamak ve pozunu hesaplamak için öğrencileri yönlendirir. Görev, OpenCV kullanarak CCC hedeflerini algılamayı, bunları doğru sıraya koymayı, pozunu OpenCV’nin solvePnP() fonksiyonuyla hesaplamayı ve koordinat eksenlerini ve pozunu görüntü üzerine çizmeyi içerir. Laboratuvar, hedef algılama, poz tahmini ve görsel çıktı biçimlendirme gibi bilgisayarlı görme kavramlarının uygulanmasını vurgular.

Laboratuvar 7

Laboratuvar 7, görüntüler arasındaki SIFT özelliklerinin algılanması ve eşleştirilmesine odaklanır. Amaç, bir görüntüden diğerine SIFT özelliklerinin doğru eşleşmelerini belirlemek ve bu eşleşmelerin doğruluğunu analiz etmektir. Laboratuvar, verilmiş Python kodu ve bir veri kümesinden görüntüler kullanmayı, eşleşme algılama performansını optimize etmek için algoritma parametrelerini ayarlamayı ve özellik eşleştirme sürecinin performansını değerlendirmek için precision ve recall metriklerini hesaplamayı içerir. Öğrencilerin Python programlarını ve farklı parametre ayarları için hesapladıkları precision ve recall değerlerini teslim etmeleri gerekmektedir.

Laboratuvar 8

Laboratuvar 8, eğitim görüntüsünden bir nesneyi sorgu görüntüsüne tespit etmek ve bindirmek için özellik eşleştirme ve afine dönüşüm uydurma kullanarak nesne tespiti üzerine odaklanır. Laboratuvar, farklı senaryolarda nesneyi algılamayı, yanlış pozitifleri azaltmak için inlier eşleşme sayısı eşik değerini ayarlamayı ve nesne tespit sisteminin performansını değerlendirmek için precision, recall ve accuracy metriklerini hesaplamayı içerir. Öğrencilerin sağlanan Python kodunu değiştirmeleri ve çalıştırmaları, sistem performansını farklı koşullar altında analiz etmeleri ve bulgularını ve değiştirilmiş kodlarını sunmaları beklenir.

Laboratuvar 9

Laboratuvar 9, eğitim görüntüsündeki bir nesne üzerine açıklama noktaları yerleştirmeyi ve sonraki sorgu görüntülerinde bu noktaları otomatik olarak doğru şekilde göstermeyi içerir. Bu laboratuvar, özellik çıkarımı, belirsiz eşleşmeleri ortadan kaldırmak için oran testi ile eşleştirme, aykırı değerleri elimine etmek için RANSAC kullanarak 2D afine dönüşüm uydurma ve açıklama noktalarını eğitim görüntüsünden sorgu görüntülerine eşlemek için dönüşümü uygulamayı vurgular. Kritik görev, yanlış pozitifler ve yanlış negatifler arasında denge kurmak için inlier eşleşme sayısı eşik değerini ayarlamak olup, görüntüleri doğru sınıflandırmada en yüksek doğruluğa ulaşmayı hedeflemektir.

Laboratuvar 10

Laboratuvar 10, Hough dönüşümünü kullanarak çizgi segmentleri bulmaya ve bir görüntüde paralel çizgi kümelerini tanımlamaya adanmıştır. Bu, uç noktalarıyla temsil edilen çizgi segmentlerini algılamak için OpenCV’nin cv2.HoughLinesP() fonksiyonu aracılığıyla olasılıksal Hough Transform’u kullanır. Laboratuvar ayrıca bu çizgi segmentlerinin yön vektörlerini analiz ederek kaçış noktalarını belirlemeyi içerir; amaç, 2D görüntü düzleminde göründükleri gibi 3B uzaydaki paralel çizgilerin yönelimini anlamaktır. Öğrencilerden test görüntülerini işleyerek paralel çizgi segmentlerini bulmaları, algılama optimizasyonu için parametrelerle denemeler yapmaları ve sonuçlarını Python programıyla birlikte teslim etmeleri istenir.

Notlar

  • Bu betikleri/labları çalıştırmak için şu üçüncü taraf Python paketlerine ihtiyacınız olacak: cv2 & numpy.
  • Bu laboratuvarların bazıları belirli bir cv2 sürümünü kullanmanızı gerektirebilir. Ne yazık ki, gereksinimler belgelenmemişti, bu yüzden bunu kendiniz çözmeniz gerekecek. Eğer bunu çözerseniz veya takılırsanız, lütfen issues formu üzerinden bildiriniz.