|
|
||
|---|---|---|
| .. | ||
| lab | ||
| OpenCV.ipynb | ||
| README.md | ||
README.md
Bilgisayarlı Görüye Giriş
Bilgisayarlı Görü, bilgisayarların dijital görüntüleri yüksek seviyede anlamasını sağlamayı amaçlayan bir disiplindir. Bu oldukça geniş bir tanımdır çünkü anlama birçok farklı şeyi ifade edebilir; bir resimdeki nesneyi bulmak (nesne tespiti), ne olduğunu anlamak (olay tespiti), bir resmi metinle açıklamak veya bir sahneyi 3D olarak yeniden oluşturmak gibi. İnsan görüntüleriyle ilgili özel görevler de vardır: yaş ve duygu tahmini, yüz tespiti ve tanımlama, 3D duruş tahmini gibi.
Ders Öncesi Test
Bilgisayarlı görünün en basit görevlerinden biri görüntü sınıflandırmasıdır.
Bilgisayarlı görü genellikle yapay zekanın bir dalı olarak kabul edilir. Günümüzde, bilgisayarlı görü görevlerinin çoğu sinir ağları kullanılarak çözülmektedir. Bu bölümde, bilgisayarlı görü için kullanılan özel bir sinir ağı türü olan evrişimli sinir ağlarını öğreneceğiz.
Ancak, bir görüntüyü sinir ağına göndermeden önce, birçok durumda görüntüyü iyileştirmek için bazı algoritmik teknikleri kullanmak mantıklı olabilir.
Görüntü işleme için kullanılabilecek birkaç Python kütüphanesi vardır:
- imageio farklı görüntü formatlarını okumak/yazmak için kullanılabilir. Ayrıca, video karelerini görüntülere dönüştürmek için kullanışlı bir araç olan ffmpeg'i destekler.
- Pillow (PIL olarak da bilinir) biraz daha güçlüdür ve morfing, palet ayarlamaları gibi bazı görüntü manipülasyonlarını da destekler.
- OpenCV, C++ ile yazılmış güçlü bir görüntü işleme kütüphanesidir ve görüntü işleme için de facto standart haline gelmiştir. Kullanışlı bir Python arayüzüne sahiptir.
- dlib, birçok makine öğrenimi algoritmasını, bilgisayarlı görü algoritmaları da dahil olmak üzere, uygulayan bir C++ kütüphanesidir. Python arayüzüne sahiptir ve yüz ve yüz işaretleri tespiti gibi zorlu görevler için kullanılabilir.
OpenCV
OpenCV, görüntü işleme için de facto standart olarak kabul edilir. C++ ile uygulanmış birçok kullanışlı algoritma içerir. OpenCV'yi Python'dan da çağırabilirsiniz.
OpenCV öğrenmek için iyi bir başlangıç noktası bu Learn OpenCV kursudur. Müfredatımızda amacımız OpenCV'yi öğrenmek değil, onun ne zaman ve nasıl kullanılabileceğine dair bazı örnekler göstermektir.
Görüntü Yükleme
Python'da görüntüler, NumPy dizileriyle kolayca temsil edilebilir. Örneğin, 320x200 piksel boyutundaki gri tonlamalı görüntüler 200x320 boyutunda bir dizi olarak saklanır ve aynı boyuttaki renkli görüntüler 200x320x3 şeklinde bir boyuta sahip olur (3 renk kanalı için). Bir görüntüyü yüklemek için şu kodu kullanabilirsiniz:
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
Geleneksel olarak, OpenCV renkli görüntüler için BGR (Mavi-Yeşil-Kırmızı) kodlamasını kullanır, oysa Python araçlarının geri kalanı daha geleneksel olan RGB (Kırmızı-Yeşil-Mavi) kodlamasını kullanır. Görüntünün doğru görünmesi için, renk uzayını RGB'ye dönüştürmeniz gerekir; bunu NumPy dizisindeki boyutları değiştirerek veya bir OpenCV fonksiyonunu çağırarak yapabilirsiniz:
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
Aynı cvtColor fonksiyonu, bir görüntüyü gri tonlamaya veya HSV (Ton-Doygunluk-Değer) renk uzayına dönüştürmek gibi diğer renk uzayı dönüşümleri için de kullanılabilir.
OpenCV'yi kullanarak videoyu kare kare yükleyebilirsiniz - bir örnek OpenCV Notebook alıştırmasında verilmiştir.
Görüntü İşleme
Bir görüntüyü sinir ağına göndermeden önce, birkaç ön işleme adımı uygulamak isteyebilirsiniz. OpenCV birçok şeyi yapabilir, örneğin:
- Görüntüyü
im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)kullanarak yeniden boyutlandırma. - Görüntüyü
im = cv2.medianBlur(im,3)veyaim = cv2.GaussianBlur(im, (3,3), 0)kullanarak bulanıklaştırma. - Görüntünün parlaklığını ve kontrastını değiştirme, NumPy dizi manipülasyonlarıyla yapılabilir, bu Stackoverflow notunda açıklandığı gibi.
- Eşikleme kullanarak
cv2.threshold/cv2.adaptiveThresholdfonksiyonlarını çağırmak, genellikle parlaklık veya kontrast ayarlamaktan daha tercih edilir. - Görüntüye farklı dönüşümler uygulamak:
- Affine dönüşümler, görüntüdeki üç noktanın kaynak ve hedef konumlarını bildiğinizde döndürme, yeniden boyutlandırma ve eğme işlemlerini birleştirmeniz gerektiğinde kullanışlı olabilir. Affine dönüşümler paralel çizgileri paralel tutar.
- Perspektif dönüşümler, görüntüdeki dört noktanın kaynak ve hedef konumlarını bildiğinizde kullanışlı olabilir. Örneğin, bir akıllı telefon kamerasıyla bir dikdörtgen belgeyi bir açıdan çektiğinizde, belgenin kendisinin dikdörtgen bir görüntüsünü oluşturmak istiyorsanız.
- Optik akış kullanarak görüntü içindeki hareketi anlamak.
Bilgisayarlı Görü Kullanım Örnekleri
OpenCV Notebook'ta, bilgisayarlı görünün belirli görevleri gerçekleştirmek için nasıl kullanılabileceğine dair bazı örnekler veriyoruz:
- Bir Braille kitabının fotoğrafını ön işleme. Eşikleme, özellik tespiti, perspektif dönüşümü ve NumPy manipülasyonlarını kullanarak bireysel Braille sembollerini ayırmaya odaklanıyoruz, böylece bunlar bir sinir ağı tarafından sınıflandırılabilir.
![]() |
![]() |
![]() |
|---|
Görüntü OpenCV.ipynb'den alınmıştır.
- Kare farkı kullanarak videoda hareket tespiti. Kamera sabitse, kamera akışındaki kareler birbirine oldukça benzer olmalıdır. Kareler diziler olarak temsil edildiğinden, iki ardışık kare için bu dizileri çıkardığınızda piksel farkını elde edersiniz; bu fark statik kareler için düşük, görüntüde önemli bir hareket olduğunda ise yüksek olur.
Görüntü OpenCV.ipynb'den alınmıştır.
-
Optik Akış kullanarak hareket tespiti. Optik akış, video karelerindeki bireysel piksellerin nasıl hareket ettiğini anlamamızı sağlar. İki tür optik akış vardır:
- Yoğun Optik Akış, her pikselin nereye hareket ettiğini gösteren vektör alanını hesaplar.
- Seyrek Optik Akış, görüntüdeki bazı belirgin özellikleri (ör. kenarlar) alır ve bunların kareden kareye hareket yolunu oluşturur.
Görüntü OpenCV.ipynb'den alınmıştır.
✍️ Örnek Not Defterleri: OpenCV OpenCV'yi Eylemde Deneyin
OpenCV Notebook'u keşfederek OpenCV ile bazı deneyler yapalım.
Sonuç
Bazen, hareket tespiti veya parmak ucu tespiti gibi nispeten karmaşık görevler yalnızca bilgisayarlı görü ile çözülebilir. Bu nedenle, bilgisayarlı görünün temel tekniklerini ve OpenCV gibi kütüphanelerin neler yapabileceğini bilmek çok faydalıdır.
🚀 Zorluk
AI Show'daki bu videoyu izleyerek Cortic Tigers projesini ve bilgisayarlı görü görevlerini bir robot aracılığıyla demokratikleştirmek için nasıl blok tabanlı bir çözüm geliştirdiklerini öğrenin. Yeni öğrenenleri bu alana kazandırmaya yardımcı olan diğer projeler hakkında araştırma yapın.
Ders Sonrası Test
İnceleme ve Kendi Kendine Çalışma
Optik akış hakkında daha fazla bilgi için bu harika eğiticiye göz atın.
Ödev
Bu laboratuvarda, basit jestlerle bir video çekeceksiniz ve amacınız optik akış kullanarak yukarı/aşağı/sol/sağ hareketlerini çıkarmak olacak.
Feragatname:
Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalar için sorumluluk kabul etmiyoruz.




