5.34. บทสรุป¶
โมดูล image คือ API ที่ใหญ่ที่สุดที่กล้องเปิดเผย และบทนี้เพิ่งครอบคลุมโครงร่างของมัน: วิธีที่ภาพถูกแสดงในหน่วยความจำ วิธีที่กล้องอ่านและเขียนพิกเซลแต่ละตัว วิธีที่มันวาดลงในเฟรมที่ถ่าย วิธีที่มันแปลงพวกมันทางคณิตศาสตร์และเรขาคณิต วิธีที่มันจำแนกด้วยค่าขีดแบ่งและกรอง วิธีที่มันแยกการวัดและการตรวจจับออกมาจากพวกมัน วิธีที่มันถอดรหัสสัญลักษณ์ที่พิมพ์ออกมาจากพวกมัน วิธีที่มันเปรียบเทียบภาพหนึ่งกับอีกภาพหนึ่ง และวิธีที่มันส่งผลลัพธ์เข้าและออกจากกล้อง
ชุดเครื่องมือนี้กว้างขวางโดยเจตนา ไปป์ไลน์การมองเห็นของเครื่องแบบคลาสสิกที่รันบนกล้องฝังตัวขนาดเล็กทำงานส่วนใหญ่ ก่อน ที่อะไรจะถึงโมเดลการเรียนรู้ของเครื่อง เมื่อมี -- การกำหนดค่าขีดแบ่งทำความสะอาดอินพุต ฟิลเตอร์ลดสัญญาณรบกวน บริเวณที่สนใจ (ROI) จำกัดการค้นหาให้แคบลง ตัวตรวจจับบลอบและเส้นระบุตำแหน่งผู้สมัคร การให้คะแนนความคล้ายคลึงกันตัดสินว่าผู้สมัครน่าสนใจหรือไม่ และเลเยอร์ I/O ส่งผลลัพธ์ไปยังสิ่งที่รันขั้นตอนถัดไป หน้าแต่ละหน้าในบทนี้ครอบคลุมหนึ่งในการดำเนินการเหล่านั้น ไปป์ไลน์ที่เหมาะสมสำหรับแอปพลิเคชันใดก็ตามคือลำดับของพวกมันที่ประกอบกันในลำดับที่ปัญหาต้องการ
5.34.1. รูปแบบไปป์ไลน์¶
แอปพลิเคชันกล้องที่ไม่ใช่ trivial ส่วนใหญ่ปฏิบัติตามโครงร่างเดียวกัน ถ่าย เฟรมจากเซนเซอร์ ประมวลผลล่วงหน้า: แปลงรูปแบบ ปรับสมดุลฮิสโตแกรม เบลอสัญญาณรบกวน ระบุตำแหน่ง บริเวณหรือลักษณะเด่นที่สนใจ: การตรวจจับบลอบ การตรวจจับเส้น การจับคู่แม่แบบ การถอดรหัส วิเคราะห์ สิ่งที่พบ: การวัดเรขาคณิต การให้คะแนนความคล้ายคลึง สถิติ ตัดสินใจ สิ่งที่ต้องทำตามการวิเคราะห์: ทริกเกอร์ GPIO รายงาน payload ถ่ายและบันทึก ส่งเฟรมไปยังโมเดล ML ส่งออก การตัดสินใจหรืออาร์ติแฟกต์ที่ถ่าย: บันทึก เข้ารหัส ส่ง วาดกลับเข้าเฟรมสำหรับการแสดงตัวอย่างใน IDE
ไม่มีหน้าบทใดครอบคลุมทุกขั้นตอน บทนี้ครอบคลุม ส่วนประกอบพื้นฐาน ที่ไปป์ไลน์ประกอบขึ้น การเลือกว่าจะใช้บล็อกไหนและในลำดับใดคืองานของสคริปต์แอปพลิเคชัน
5.34.2. จุดที่บทนี้นำไปสู่¶
โมดูล image จัดการกับภาพ ในฐานะภาพ -- พิกเซล บริเวณ การวาด การตรวจจับ งานจำนวนมากบนข้อมูลที่ถ่ายไม่เข้ากรอบนั้น การคำนวณสถิติบน numeric array ตามอำเภอใจ การรันคณิตศาสตร์แบบ vectorised บนข้อมูล sensor ดิบ การใช้การแปลง matrix แบบกำหนดเองที่ไม่มีวิธีการ image-module รองรับ การเตรียมข้อมูลสำหรับโมเดล machine-learning ที่ต้องการ tensor layout เฉพาะ -- ทั้งหมดเหล่านั้นเป็นงานสำหรับไลบรารี numeric-array ไม่ใช่ไลบรารีประมวลผลภาพ
บทถัดไปครอบคลุมสิ่งนั้นพอดี โมดูล ulab.numpy ที่ให้มากับ MicroPython บนกล้องเป็นส่วนย่อยของ NumPy และสองบริดจ์เชื่อมต่อกับโมดูล image: to_ndarray() คัดลอกพิกเซลของเฟรมเข้าไปใน ndarray สำหรับงานเชิงตัวเลข และ constructor ของ Image รับ ndarray เพื่อสร้างภาพใหม่จากผลลัพธ์ พร้อมแสดง บันทึก หรือป้อนกลับเข้าไลบรารีภาพ สองโมดูลนี้ประกอบเข้ากันได้ -- แต่ละตัวทำในสิ่งที่อีกตัวไม่ทำ และร่วมกันครอบคลุมงานเชิงตัวเลขและการถ่ายภาพที่แอปพลิเคชัน embedded-vision ต้องการ