5.34. Özet¶
image modülü, kameranın sunduğu en büyük API’dir ve bu bölüm yalnızca onun ana hatlarını kapsadı: bir görüntünün bellekte nasıl temsil edildiği, kameranın tek tek pikselleri nasıl okuyup yazdığı, yakalanan çerçevelerin içine nasıl çizdiği, onları aritmetik ve geometrik olarak nasıl dönüştürdüğü, nasıl eşik-sınıflandırması yaptığı ve filtrelediği, onlardan nasıl ölçümler ve tespitler çıkardığı, içlerinden basılı sembolleri nasıl çözdüğü, bir görüntüyü bir diğeriyle nasıl karşılaştırdığı ve sonuçları kameraya nasıl alıp ondan nasıl çıkardığı.
Araç takımı bilinçli olarak geniştir. Küçük bir gömülü kamerada çalışan klasik bir bilgisayar görüşü işlem hattı, varsa bir makine öğrenmesi modeline herhangi bir şey ulaşmadan önce işinin çoğunu yapar – eşikleme girişi temizler, filtreler gürültüyü giderir, bölgeler aramayı daraltır, nokta (blob) ve çizgi tespit ediciler adayları konumlandırır, benzerlik puanlaması adayın ilginç olup olmadığına karar verir ve I/O katmanı sonucu sonraki aşamayı çalıştıracak olana teslim eder. Bu bölümdeki her sayfa bu işlemlerden birini kapsadı; herhangi bir uygulama için doğru işlem hattı, problemin gerektirdiği sırada birleştirilmiş bir dizidir.
5.34.1. İşlem hattı deseni¶
Önemsiz olmayan çoğu kamera uygulaması aynı ana hattı izler. Sensörden bir çerçeve yakala. Onu ön işle: biçimleri dönüştür, histogramı eşitle, gürültüyü bulanıklaştırarak gider. İlgilenilen bölgeleri veya öznitelikleri konumlandır: nokta (blob) tespiti, çizgi tespiti, şablon eşleştirme, kod çözme. Bulunanı analiz et: geometrik ölçümler, benzerlik puanlaması, istatistikler. Analize dayanarak ne yapılacağına karar ver: bir GPIO tetikle, bir veri yükü raporla, yakala-ve-kaydet, çerçeveyi bir ML modeline teslim et. Kararı veya yakalanan eseri çıkar: kaydet, kodla, gönder, IDE önizlemesi için çerçeveye geri çiz.
Hiçbir bölüm sayfası her adımı tek başına kapsamadı; bölüm, işlem hattının birleştirdiği yapı taşlarını kapsadı. Hangi blokların hangi sırada kullanılacağını seçmek, uygulama betiğinin işidir.
5.34.2. Bölümün yönlendirdiği yer¶
image modülü, görüntülerle görüntü olarak ilgilenir – pikseller, bölgeler, çizim, tespitler. Yakalanan veriler üzerindeki pek çok iş bu çerçeveye uymaz. Rastgele bir sayısal dizi üzerinde istatistik hesaplamak, ham sensör verisi üzerinde vektörleştirilmiş aritmetik çalıştırmak, arkasında bir image modülü yöntemi olmayan özel bir matris dönüşümü uygulamak, belirli bir tensör düzeni isteyen bir makine öğrenmesi modeli için veri hazırlamak – bunların hepsi bir görüntü işleme kütüphanesinin değil, bir sayısal dizi kütüphanesinin işidir.
Bir sonraki bölüm tam olarak bunu kapsar. Kamerada MicroPython ile birlikte gelen ulab.numpy modülü, NumPy’ın bir alt kümesidir ve onu image modülüne iki köprü bağlar: to_ndarray() bir çerçevenin piksellerini sayısal işler için bir ndarray içine kopyalar ve Image yapıcısı, sonuçtan yeni bir görüntü oluşturmak için bir ndarray kabul eder; bu görüntü görüntülenmeye, kaydedilmeye veya image kütüphanesine geri beslenmeye hazırdır. İki modül birbirini tamamlar – her biri diğerinin yapmadığını yapar ve birlikte, gömülü bir görüş uygulamasının ihtiyaç duyduğu sayısal ve görüntüleme işini kapsarlar.