4.20. Özet¶
Bir betik her çerçeve yakaladığında karşınıza çıkan kamera görüntüleme yığınının parçalarını adım adım gördünüz:
Sensörün önündeki optik – en basit görüntü oluşturucu eleman olarak bir iğne deliği, ardından çok daha fazla ışık toplarken yine de odaklayan lensler; odak uzaklığı, diyafram açıklığı, alan derinliği ve görüş alanı, uygulamanın aralarından seçim yaptığı düğmelerdir. Gerçek lensler, sensörün ve ISP’nin daha sonra telafi ettiği distorsiyon, vinyetleme ve ana ışın açısı (chief-ray-angle) etkileriyle birlikte gelir.
Sensör ızgarası – fotonları yüke dönüştüren iki boyutlu bir fotodiyot dizisi; pozlama süresi ve analog kazanç, parlaklığı hareket bulanıklığı ve gürültüye karşı takas eder. Rolling ve global enstantaneler, dizinin satırlarının nasıl okunacağını belirler ve küçük bir yonga üzeri kalibrasyon kümesi – sütun FPN, siyah seviyesi, kusurlu piksel, lens gölgeleme – veriyi yongadan ayrılmadan önce temizler. Yongayı MCU’ya iki veri yolu bağlar: yazmaçlar için yavaş bir I2C kontrol veri yolu ve pikseller için hızlı bir paralel ya da MIPI veri yolu.
Renk ve ISP – bir Bayer renk filtresi dizisi her piksele kırmızı, yeşil ya da maviden birini verir; debayering eksik iki kanalı enterpolasyonla tamamlar. Görüntü sinyal işlemcisi (ISP) işlem hattının geri kalanını bir araya getirir – istatistik çıkarımı, otomatik beyaz dengesi, debayering, renk matrisi düzeltmesi, gama, ölçekleme, kırpma ve istenen piksel biçimine son bir paketleme.
Piksel biçimleri – ham Bayer, RGB888, RGB565, YUV422, gri tonlama, BINARY ve sıkıştırılmış JPEG / PNG çıktıları, bellek boyutunu renk doğruluğu ve sonraki algoritma uyumluluğuna karşı takas eder. RGB565, MCU’nun word genişliğiyle hizalandığı ve RGB888’e göre bellek maliyetini yarıya indirdiği için tamamlanmış renk için varsayılandır.
CSI API – beş satırlık kurulum artı bir anlık görüntü döngüsü, her betiğin başladığı biçimdir. Çerçeve arabelleği (frame buffer) havuzları (tekli, çiftli, üçlü, video FIFO ya da tetiklemeli), uygulamanın ve kameranın çerçeveleri nasıl paylaştığına karar verir; ayrı bir önizleme kanalı, uygulamanın arabelleklerini paylaşmak için yarışmadan bağlı olan herhangi bir hata ayıklama programını besler; sensör düğmeleri yönelim, pozlama, kazanç, beyaz dengesi, kare hızı sınırı ve bir renk çubuğu test desenini kapsar.
Birden çok sensör ve bellek havuzları – iki sensörlü kartlar, yonga başına bir
CSIörneği oluşturur ve her birini kendi hızında çalıştırır. Bunun altında, çerçeve arabelleği (frame buffer) havuzu, önizleme bölgesi, MicroPython yığını ve daha küçük hızlı bellek tahsisleri, RAM’in ayrı bölgelerinde yaşar; hıza ihtiyaç duyan parçalar hızı, yalnızca boyuta ihtiyaç duyan parçalar ise boyutu alacak şekilde yerleştirilir.
Bu kadarı, sensörden sahneye uygun biçim, çerçeve boyutu ve pozlamayla bir çerçeve almak; uygulamanın işleme süresine uyan bir çerçeve arabelleği (frame buffer) modu seçmek; bağlı olan herhangi bir şeye canlı bir önizleme sunmak; ve üzerinde işlem yapılmaya hazır Image nesnesini Python’a geri okumak için yeterlidir.
4.20.1. Bu referansı daha sonra kullanmak¶
Görüntüleme bölümlerini tek seferlik bir okuma değil, referans materyali olarak ele alın. Çerçeve arabelleği (frame buffer) modlarını, piksel biçimlerini ya da belirli bir sensör düğmesinin anlamını yenilemek için geri dönmek, amaçlanan kullanımdır. Soru sadece “bu çağrının tam adı neydi” olduğunda, csi.CSI referans sayfası her yöntemi tek bir yerde listeler.
4.20.2. Buradan nereye gidilir¶
Görüntü işleme doğal bir sonraki konudur. Arabellek elinizdeyken ve csi API’si anlaşılmışken, geriye kalan, piksellerle ne yapılacağıdır: eşikler, kenar tespiti, nokta (blob) bulma, çizgi ve şekil tespiti, QR kodları, AprilTag’ler, makine öğrenimi çıkarımı. Araç takımı image modülüne ve onun Image nesnesi üzerindeki yöntemler kataloğuna kayar. Bu bölümdeki her şey ileriye taşınır; döngü biçimi, çerçeve arabelleği (frame buffer) modu, piksel biçimi – bunların tümü, görüntü işleme yöntemlerinin üzerinde çalıştığı şeydir.