Bilgisayarlı Görüntü Projeleri

Projenin GitHub Deposu

About

Bu depo, Mehmet ve Jean‘in CSCI437’e kayıtlı oldukları Colorado School of Mines‘deki Sonbahar 2020 döneminde çalıştıkları tüm kodlama projelerini (laboratuvarları) sergiliyor, 28 Ağustos 2020‘den 14 Aralık 2020‘ye kadar olan dönemi kapsıyor. Bu laboratuvarlar, Python, OpenCV ve temel bilgisayarlı görü kavramlarını öğrenmek için kapsamlı bir platform sağladı.

About The Class

Sonbahar 2020 döneminde Bilgisayarlı Görüntüye Giriş (CSCI437) dersini aldım. Bu süre zarfında Dr. William Hoff ve Dr. Tom Williams dersi öğrettiler. CSCI437. İşte CSCI437 için resmi sınıf açıklaması:

(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).

Credits

CSCI437 sınıfı tarafından ders sırasında, slaytlarda veya Canvas üzerinden sağlanan Python betikleri ve/veya kod parçacıkları vardır. CSCI437 sınıfı Colorado School of Mines’te sunulmaktadır. Bu laboratuvarlar aşağıdaki ortaklarla yapıldı:

  • Jean Duong
  • Mehmet Yilmaz

Lab Descriptions

Laboratuvar 1

Laboratuvar 1, OpenCV’yi Python ile kullanmanın temellerine odaklanır. Katılımcıların bir video dosyasını okuyan, videonun her karesine bir kare oluşturan dört nokta projekte eden ve her noktanın Z koordinatını artarak ayarlayarak karenin uzaklaşmasını simüle eden bir Python programı yazmaları beklenir. Ayrıca, kare numarası her karede gösterilmeli ve grafik katmanlarıyla son video değerlendirme için yüklenmelidir.

Laboratuvar 2

Laboratuvar 2, görüntü dönüşümleriyle ilgilenir ve özellikle “XYZ sabit açıları” konvansiyonunu kullanarak X, Y ve Z eksenleri etrafında dönüşlere odaklanır. Öğrenciler, dönüşüm matrislerini hesaplamak, kamera pozları için homojen dönüşüm matrisleri oluşturmak, bir kalibrasyon matrisi yaratmak ve OpenCV’nin line fonksiyonunu kullanarak bir nesneyi oluşturmak için noktaları bir görüntüye projekte etmekle görevlendirilir. Laboratuvar, bilgisayarlı görüde kamera geometrisi ve dönüşüm matrislerinin anlaşılmasını vurgular.

Laboratuvar 3

Laboratuvar 3, şablon eşleştirme ile ilgilidir; öğrenciler, normalize çapraz korelasyon kullanarak bir film dosyasının her karesinde bir şablon alt-görüntüyü izlemekle görevlendirilir. Ödev, kullanıcının filmin ilk görüntüsünden bir şablon seçmesine, bu şablonu sonraki görüntülerde izlemeye, her görüntüde şablonun konumunu göstermek için dikdörtgenler çizmeye ve bu konumları göstermek için bir çıktı film dosyası oluşturmaya olanak tanır. Öğrenciler, en iyi izlemeyi sağlayan şablonu ve nedenini anlamak için farklı şablonlarla denemeler yapmaya ve eşleşmeler doğru tanımlandığında gözlemlenen korelasyon puanlarını tartışmaya teşvik edilir.

Laboratuvar 4

Laboratuvar 4, renkli görüntüleri işleme konusundaki etkinliği nedeniyle derslerde tartışılan HSV renk uzayını kullanarak renk segmentasyonuna odaklanır. Öğrenciler, sağlanan görüntülerden dur işareti piksellerini ayırmak için eşikleme işlemleri uygulamakla görevlendirilir; bu işlem bir Python/OpenCV programı kullanılarak yapılır. Ö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ı ve kullanılan eşik ve morfolojik işlem parametreleriyle birlikte sunmayı gerektirir.

Laboratuvar 5

Laboratuvar 5, yeni bir görüntü dokusunu mevcut bir görüntünün belirli bir bölgesine ekleyerek projeksiyonun doğru görünmesini sağlama görevini içerir. Düzlem değiştirme olarak bilinen bu süreç, öğrencilerin yeni bir görüntüyü mevcut bir görüntünün düzlemsel bir alanına haritalamak için projeksiyon dönüşümü (homografi) tekniklerini kullanmasını gerektirir. Laboratuvar, perspektif doğruluğunu koruyarak görüntü içeriğini değiştirmek için homografinin pratik uygulamasını vurgular. Öğrencilerin orijinal görüntüyü, değiştirilmiş doku ile görüntüyü, birleştirilmiş görüntüyü ve Python programlarını laboratuvar teslimatının bir parçası olarak sunmaları beklenir.

Laboratuvar 6

Laboratuvar 6, öğrencileri bir görüntüde beş kontrastlı iç içe daire (CCC) içeren bir hedefi algılamaya ve pozunu hesaplamaya yönlendirir. Görev, OpenCV kullanarak CCC hedeflerini tespit etmeyi, doğru sıraya koymayı, OpenCV’nin solvePnP() fonksiyonu ile pozunu hesaplamayı ve koordinat eksenlerini ve pozunu görüntüye çizmeyi içerir. Laboratuvar, hedef algılama, poz tahmini ve görsel çıktı biçimlendirme gibi kavramların bilgisayarlı görüde uygulanmasını vurgular.

Laboratuvar 7

Laboratuvar 7, görüntüler arasındaki SIFT özelliklerinin tespiti 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, verilen Python kodu ve bir veri kümesinden gelen görüntüleri kullanmayı, eşleşme tespitini optimize etmek için algoritma parametrelerini ayarlamayı ve özellik eşleştirme sürecinin performansını değerlendirmek için kesinlik ve geri çağırma metriklerini hesaplamayı içerir. Öğrencilerin Python programlarını ve farklı parametre ayarları için hesaplanan kesinlik ve geri çağırma değerlerini sunmaları gerekir.

Laboratuvar 8

Laboratuvar 8, özellik eşleştirme ve afin dönüşüm uyumu kullanarak bir eğitim görüntüsünden nesneleri bir sorgu görüntüsüne tespit edip üstüne bindirmeye odaklanır. Laboratuvar, nesneyi farklı senaryolarda tespit etmeyi, yanlış pozitifleri azaltmak için iç eşleşme eşiği sayısını ayarlamayı ve nesne tespit sisteminin performansını değerlendirmek için kesinlik, geri çağırma ve doğruluk metriklerini hesaplamayı içerir. Öğrencilerin sağlanan Python kodunu değiştirmeleri ve çalıştırmaları, sistemin farklı koşullardaki performansını analiz etmeleri ve bulgularını ve değiştirilmiş kodu sunmaları beklenir.

Laboratuvar 9

Laboratuvar 9, bir eğitim görüntüsündeki bir nesneye açıklama noktaları yerleştirmeyi ve bu noktaları sonraki sorgu görüntülerinde nesne üzerinde otomatik olarak doğru şekilde göstermeyi içerir. Bu laboratuvar, özellik çıkarımını, belirsiz eşleşmeleri ortadan kaldırmak için oran testini kullanarak eşleştirmeyi, aykırı değerleri temizlemek için RANSAC ile 2B afin dönüşümünü uydurmayı ve dönüşümü uygulayarak açıklama noktalarını eğitimden sorguya haritalamayı vurgular. Kritik görev, yanlış pozitif ve negatifler arasında denge sağlamak için iç eşleşme eşiği sayısını ayarlamaktır; amaç, görüntüleri doğru sınıflandırmada en yüksek doğruluğu elde etmektir.

Laboratuvar 10

Laboratuvar 10, Hough dönüşümünü kullanarak bir görüntüde çizgi segmentleri bulmaya ve paralel çizgi kümelerini tanımlamaya adanmıştır. OpenCV’nin cv2.HoughLinesP() fonksiyonu aracılığıyla olasılıksal Hough Dönüşümünü kullanarak uç noktalarıyla temsil edilen çizgi segmentlerini algılar. Laboratuvar ayrıca bu çizgi segmentlerinin yön vektörlerini analiz ederek kaybolma noktalarını tanımlamayı içerir; amaç, paralel çizgilerin 3B uzaydaki yönelimini 2B görüntü düzleminde nasıl göründüğünü anlamaktır. Öğrenciler, test görüntülerini işleyerek paralel çizgi segmentlerini bulmak, parametrelerle deneme yaparak algılamayı optimize etmek ve sonuçlarını bir Python programı ile birlikte sunmakla görevlendirilir.

Notes

  • Bu betikleri/laboratuvarları çalıştırmak için aşağıdaki üçü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ştir, bu yüzden bunu kendi başınıza çözmeniz gerekecek. Eğer çözer veya takılırsanız, lütfen bunu issues formu üzerinden bildirin.