4.20. Penutup

Anda telah menelusuri bagian-bagian dari tumpukan pencitraan kamera yang muncul setiap kali skrip menangkap sebuah bingkai:

  • Optik di depan sensor -- sebuah lubang jarum sebagai elemen pembentuk citra paling sederhana, kemudian lensa, yang mengumpulkan jauh lebih banyak cahaya sambil tetap memfokuskan, dengan panjang fokus, apertur, kedalaman bidang, dan bidang pandang sebagai kenop yang dipilih aplikasi. Lensa nyata hadir dengan distorsi, vignetting, dan efek sudut sinar utama yang dikompensasi oleh sensor dan ISP.

  • Kisi sensor -- larik dua dimensi fotodioda yang mengubah foton menjadi muatan, dengan waktu eksposur dan analog gain mempertukarkan kecerahan dengan motion blur dan noise. Rolling dan global shutter menentukan cara baris larik dibaca, dan sekumpulan kalibrasi on-chip -- column FPN, black level, defect pixel, lens shading -- membersihkan data sebelum meninggalkan chip. Dua bus menghubungkan chip ke MCU: bus kontrol I2C lambat untuk register dan bus paralel cepat atau MIPI untuk piksel.

  • Warna dan ISP -- filter warna Bayer memberi setiap piksel salah satu dari merah, hijau, atau biru; debayering menginterpolasi dua saluran yang hilang. Prosesor sinyal citra menyatukan bagian lain pipeline -- ekstraksi statistik, auto-white-balance, debayering, koreksi matriks warna, gamma, penskalaan, pemotongan, dan pengemasan akhir ke dalam format piksel yang diminta.

  • Format piksel -- raw Bayer, RGB888, RGB565, YUV422, skala abu-abu, BINARY, dan keluaran JPEG / PNG yang terkompresi mempertukarkan ukuran memori dengan kesetiaan warna dan kompatibilitas algoritma hilir. RGB565 adalah default untuk warna yang sudah jadi karena selaras dengan lebar kata MCU dan mengurangi setengah biaya memori relatif terhadap RGB888.

  • API CSI -- lima baris pengaturan ditambah loop snapshot adalah bentuk yang dimulai setiap skrip. Pool framebuffer (tunggal, ganda, tiga kali lipat, video FIFO, atau dipicu) menentukan bagaimana aplikasi dan kamera berbagi bingkai; saluran preview terpisah memberi makan program debug apa pun yang terpasang tanpa bersaing untuk buffer aplikasi; kenop sensor mencakup orientasi, eksposur, gain, keseimbangan putih, batas laju bingkai, dan pola uji color-bar.

  • Beberapa sensor dan pool memori -- papan dengan dua sensor membuat satu CSI per chip dan menjalankan masing-masing pada lajunya sendiri. Di bawahnya, pool framebuffer, wilayah preview, heap MicroPython, dan alokasi memori cepat yang lebih kecil berada di wilayah RAM yang berbeda, ditempatkan sehingga bagian yang membutuhkan kecepatan mendapatkannya dan bagian yang hanya membutuhkan ukuran mendapatkan itu.

Itu sudah cukup untuk mengambil bingkai dari sensor dengan format, ukuran bingkai, dan eksposur yang tepat untuk adegan; memilih mode framebuffer yang sesuai dengan waktu pemrosesan aplikasi; mengekspos preview langsung ke apa pun yang terpasang; dan membaca kembali Image ke Python siap untuk dioperasikan.

4.20.1. Menggunakan referensi ini nanti

Perlakukan bab-bab pencitraan sebagai materi referensi, bukan bacaan satu kali. Kembali untuk menyegarkan mode framebuffer, format piksel, atau makna kenop sensor tertentu adalah penggunaan yang dimaksud. Halaman referensi csi.CSI mencantumkan setiap metode di satu tempat ketika pertanyaannya hanya "apa nama pasti panggilan ini".

4.20.2. Ke mana selanjutnya

Pemrosesan citra adalah topik alami berikutnya. Dengan buffer di tangan dan API csi sudah dipahami, yang tersisa adalah apa yang harus dilakukan dengan piksel: ambang batas, deteksi tepi, pencarian blob, deteksi garis dan bentuk, kode QR, AprilTags, inferensi machine-learning. Toolkit beralih ke modul image dan katalog metode-nya pada objek Image. Semua yang ada di bagian ini terbawa ke depan; bentuk loop, mode framebuffer, format piksel -- semuanya adalah apa yang dioperasikan oleh metode pemrosesan citra.