4.20. Tổng kết

Bạn đã đi qua các thành phần trong chuỗi xử lý hình ảnh của camera xuất hiện mỗi khi một tập lệnh chụp một khung hình:

  • Quang học trước cảm biến -- lỗ nhỏ (pinhole) là phần tử tạo ảnh đơn giản nhất, sau đó là thấu kính, thu được nhiều ánh sáng hơn nhiều trong khi vẫn lấy nét, với tiêu cự, khẩu độ, độ sâu trường ảnh và góc nhìn là các thông số mà ứng dụng lựa chọn. Thấu kính thực tế đi kèm với méo hình, vignetting và hiệu ứng góc tia chính mà cảm biến và ISP sau đó bù trừ.

  • Lưới cảm biến -- một mảng hai chiều gồm các photodiode chuyển đổi photon thành điện tích, với thời gian phơi sáng và độ khuếch đại analog cân bằng độ sáng với nhòe chuyển động và nhiễu. Màn trập cuộn và màn trập toàn cầu xác định cách các hàng của mảng được đọc, và một tập nhỏ các hiệu chỉnh trên chip -- FPN theo cột, mức đen, điểm ảnh lỗi, che phủ thấu kính -- làm sạch dữ liệu trước khi rời khỏi chip. Hai bus kết nối chip với MCU: một bus điều khiển I2C chậm dành cho thanh ghi và một bus song song hoặc MIPI nhanh dành cho điểm ảnh.

  • Màu sắc và ISP -- bộ lọc màu Bayer dạng mảng cung cấp cho mỗi điểm ảnh một trong ba màu đỏ, xanh lá hoặc xanh dương; quá trình debayering nội suy hai kênh còn thiếu. Bộ xử lý tín hiệu ảnh kết nối phần còn lại của pipeline -- trích xuất thống kê, tự động cân bằng trắng, debayering, hiệu chỉnh ma trận màu sắc, gamma, tỉ lệ, cắt xén và đóng gói cuối cùng vào định dạng điểm ảnh được yêu cầu.

  • Các định dạng điểm ảnh -- raw Bayer, RGB888, RGB565, YUV422, thang xám, BINARY và các đầu ra nén JPEG / PNG đánh đổi dung lượng bộ nhớ với độ trung thực màu sắc và tính tương thích với thuật toán downstream. RGB565 là mặc định cho màu sắc hoàn chỉnh vì nó phù hợp với độ rộng từ của MCU và giảm một nửa chi phí bộ nhớ so với RGB888.

  • CSI API -- năm dòng thiết lập cộng với vòng lặp chụp ảnh là hình dạng mà mọi tập lệnh bắt đầu từ đó. Bể bộ đệm khung hình (đơn, đôi, ba, FIFO video hoặc kích hoạt) quyết định cách ứng dụng và camera chia sẻ khung hình; một kênh xem trước riêng biệt cung cấp cho bất kỳ chương trình gỡ lỗi nào được kết nối mà không cạnh tranh với bộ đệm của ứng dụng; các núm cảm biến bao gồm hướng, thời gian phơi sáng, độ khuếch đại, cân bằng trắng, giới hạn tốc độ khung hình và mẫu thử nghiệm thanh màu.

  • Nhiều cảm biến và bể bộ nhớ -- các bo mạch có hai cảm biến khởi tạo một CSI cho mỗi chip và chạy mỗi cái với tốc độ riêng của nó. Bên dưới, bể bộ đệm khung hình, vùng xem trước, heap MicroPython và các vùng phân bổ bộ nhớ nhanh nhỏ hơn tồn tại trong các vùng RAM riêng biệt, được đặt sao cho các phần cần tốc độ sẽ có tốc độ và các phần chỉ cần dung lượng sẽ có dung lượng đó.

Như vậy là đủ để lấy khung hình từ cảm biến với định dạng, kích thước khung hình và thời gian phơi sáng phù hợp cho cảnh; chọn chế độ bộ đệm khung hình phù hợp với thời gian xử lý của ứng dụng; hiển thị xem trước trực tiếp cho bất kỳ thiết bị nào được kết nối; và đọc Image lại vào Python sẵn sàng để xử lý.

4.20.1. Sử dụng tài liệu tham khảo này sau này

Hãy coi các chương về hình ảnh như tài liệu tham khảo, không phải đọc một lần. Quay lại để ôn lại các chế độ bộ đệm khung hình, định dạng điểm ảnh hoặc ý nghĩa của một núm cảm biến nhất định là mục đích sử dụng dự kiến. Trang tham khảo csi.CSI liệt kê mọi phương thức ở một nơi khi câu hỏi chỉ là "tên chính xác của lệnh gọi này là gì".

4.20.2. Tiếp theo đi đâu

Xử lý ảnh là chủ đề tự nhiên tiếp theo. Với bộ đệm trong tay và csi API đã được hiểu, những gì còn lại là những gì cần làm với các điểm ảnh: ngưỡng, phát hiện cạnh, tìm vùng màu (blob), phát hiện đường thẳng và hình dạng, mã QR, AprilTags, suy luận machine learning. Bộ công cụ chuyển sang module image và danh mục các phương thức của nó trên đối tượng Image. Mọi thứ từ phần này đều mang theo; hình dạng vòng lặp, chế độ bộ đệm khung hình, định dạng điểm ảnh -- tất cả đều là những gì các phương thức xử lý ảnh hoạt động trên.