5.34. Penutup¶
Modul image adalah API terbesar yang diekspos kamera, dan bab ini baru saja mencakup garis besarnya: bagaimana citra direpresentasikan dalam memori, bagaimana kamera membaca dan menulis piksel individual, bagaimana ia menggambar ke dalam bingkai yang diambil, bagaimana ia mentransformasikannya secara aritmetik dan geometris, bagaimana ia mengklasifikasikan berdasarkan ambang batas dan memfilternya, bagaimana ia mengekstrak pengukuran dan deteksi dari mereka, bagaimana ia mendekode simbol tercetak darinya, bagaimana ia membandingkan satu citra dengan yang lain, dan bagaimana ia mendapatkan hasil masuk dan keluar dari kamera.
Perangkat alat ini sengaja dirancang luas. Pipeline visi mesin klasik yang berjalan pada kamera tertanam kecil melakukan sebagian besar pekerjaannya sebelum apa pun mencapai model machine-learning, jika ada -- pengambangan membersihkan input, filter mengurangi noise, wilayah mempersempit pencarian, detektor blob dan garis melokalisasi kandidat, penilaian kemiripan memutuskan apakah kandidat menarik, dan lapisan I/O menyerahkan hasil ke apa pun yang menjalankan tahap berikutnya. Setiap halaman dalam bab ini mencakup satu operasi tersebut; pipeline yang tepat untuk aplikasi apa pun adalah urutan dari operasi tersebut yang dikombinasikan dalam urutan yang dituntut masalah.
5.34.1. Pola pipeline¶
Sebagian besar aplikasi kamera non-trivial mengikuti garis besar yang sama. Ambil bingkai dari sensor. Pra-proses: konversi format, samakan histogram, blur noise. Lokalisasi wilayah atau fitur yang diminati: deteksi blob, deteksi garis, pencocokan template, dekoding kode. Analisis apa yang ditemukan: pengukuran geometris, penilaian kemiripan, statistik. Putuskan apa yang harus dilakukan berdasarkan analisis: picu GPIO, laporkan payload, ambil-dan-log, serahkan bingkai ke model ML. Keluarkan keputusan atau artefak yang diambil: simpan, encode, kirim, gambar kembali ke bingkai untuk pratinjau IDE.
Tidak ada satu halaman bab pun yang mencakup setiap langkah; bab ini mencakup blok pembangun yang dikombinasikan pipeline. Memilih blok mana yang digunakan dan dalam urutan apa adalah pekerjaan skrip aplikasi.
5.34.2. Ke mana bab ini mengarah¶
Modul image berurusan dengan citra sebagai citra -- piksel, wilayah, gambar, deteksi. Banyak pekerjaan pada data yang diambil tidak cocok dengan kerangka tersebut. Menghitung statistik atas larik numerik sembarang, menjalankan aritmetika tervektorisasi pada data sensor mentah, menerapkan transformasi matriks kustom yang tidak memiliki metode image-module di baliknya, menyiapkan data untuk model machine-learning yang menginginkan tata letak tensor tertentu -- semua itu adalah pekerjaan untuk pustaka larik numerik, bukan pemrosesan citra.
Bab berikutnya mencakup hal itu secara tepat. Modul ulab.numpy yang disertakan dengan MicroPython pada kamera adalah subset dari NumPy, dan dua jembatan menghubungkannya ke modul image: to_ndarray() menyalin piksel bingkai ke dalam ndarray untuk pekerjaan numerik, dan konstruktor Image menerima ndarray untuk membangun citra baru dari hasil, siap ditampilkan, disimpan, atau diumpankan kembali ke pustaka image. Kedua modul saling melengkapi -- masing-masing melakukan apa yang tidak dilakukan yang lain, dan bersama-sama mereka mencakup pekerjaan numerik dan pencitraan yang dibutuhkan aplikasi visi tertanam.