5.34. Tổng kết

Module image là API lớn nhất mà cam cung cấp, và chương này vừa bao gồm phần tổng quan của nó: cách một ảnh được biểu diễn trong bộ nhớ, cách camera đọc và ghi từng điểm ảnh riêng lẻ, cách nó vẽ vào các khung hình đã chụp, cách nó biến đổi chúng về mặt số học và hình học, cách nó phân loại theo ngưỡng và lọc chúng, cách nó trích xuất các phép đo và phát hiện từ chúng, cách nó giải mã các ký hiệu in từ chúng, cách nó so sánh một ảnh với ảnh khác, và cách nó đưa kết quả vào và ra khỏi cam.

Bộ công cụ có mục đích rộng. Một pipeline thị giác máy tính cổ điển chạy trên một camera nhúng nhỏ thực hiện hầu hết công việc của nó trước khi bất cứ điều gì đến mô hình học máy, khi có một mô hình -- phân ngưỡng làm sạch đầu vào, bộ lọc khử nhiễu, các vùng thu hẹp phạm vi tìm kiếm, các bộ phát hiện vùng màu (blob) và đường xác định vị trí ứng viên, chấm điểm độ tương đồng quyết định liệu ứng viên có thú vị hay không, và lớp I/O chuyển kết quả đến bất cứ thứ gì chạy giai đoạn tiếp theo. Mỗi trang trong chương này đề cập đến một trong những thao tác đó; pipeline phù hợp cho bất kỳ ứng dụng nào là một chuỗi chúng được kết hợp theo thứ tự mà vấn đề đòi hỏi.

5.34.1. Mẫu pipeline

Hầu hết các ứng dụng cam không tầm thường đều tuân theo cùng một phác thảo. Chụp một khung hình từ cảm biến. Tiền xử lý nó: chuyển đổi định dạng, cân bằng biểu đồ tần suất, làm mờ nhiễu. Xác định vị trí các vùng hoặc đặc trưng quan tâm: phát hiện vùng màu, phát hiện đường thẳng, so khớp mẫu, giải mã mã. Phân tích những gì được tìm thấy: các phép đo hình học, chấm điểm độ tương đồng, thống kê. Quyết định phải làm gì dựa trên phân tích: kích hoạt GPIO, báo cáo dữ liệu, chụp và ghi log, chuyển khung hình đến một mô hình ML. Xuất quyết định hoặc tạo phẩm đã chụp: lưu, mã hóa, gửi, vẽ trở lại khung hình để xem trước trong IDE.

Không có trang chương đơn lẻ nào bao gồm mọi bước; chương đề cập đến các khối xây dựng mà pipeline kết hợp. Việc chọn khối nào để sử dụng và theo thứ tự nào là công việc của tập lệnh ứng dụng.

5.34.2. Chương dẫn đến đâu

Module image xử lý ảnh như ảnh -- điểm ảnh, vùng, vẽ, phát hiện. Nhiều công việc trên dữ liệu đã chụp không phù hợp với khung đó. Tính toán thống kê trên một mảng số tùy ý, chạy số học vector hóa trên dữ liệu cảm biến thô, áp dụng biến đổi ma trận tùy chỉnh không có phương thức module ảnh nào đứng sau nó, chuẩn bị dữ liệu cho một mô hình học máy muốn bố cục tensor cụ thể -- tất cả đó là công việc cho thư viện mảng số, không phải thư viện xử lý ảnh.

Chương tiếp theo đề cập chính xác điều đó. Module ulab.numpy được cung cấp cùng MicroPython trên cam là một tập con của NumPy, và hai cầu nối kết nối nó với module ảnh: to_ndarray() sao chép các điểm ảnh của khung hình vào một ndarray để làm việc số học, và constructor Image chấp nhận một ndarray để xây dựng một ảnh mới từ kết quả, sẵn sàng để hiển thị, lưu hoặc đưa trở lại thư viện ảnh. Hai module kết hợp với nhau -- mỗi cái làm những gì cái kia không làm, và cùng nhau chúng đáp ứng công việc số học và xử lý ảnh mà một ứng dụng thị giác nhúng cần.