Camera, ảnh số và pixel
Bài 3 trong khóa Robot Thế hệ 3 — Thị giác máy tính và nhận diện vật thể

G3 02 - Camera, ảnh số và pixel
Linh kiện cần chuẩn bị
- 1 ESP32-S3 DevKit.
- 1 LED trạng thái và điện trở 220 ohm nếu không dùng LED có sẵn.
- 1 buzzer chủ động.
- 3 thẻ mẫu pixel 8x8 in trên giấy: nền tối, vùng sáng ở giữa, vùng sáng lệch trái/phải.
- Máy tính có Arduino IDE hoặc Arduino CLI, cáp USB data, Serial Monitor.
- Bảng đo gồm: mẫu ảnh, mean brightness, bright pixel count, vị trí vùng sáng, quyết định.
Code bài này chỉ dùng ESP32-S3, LED, buzzer và Serial Monitor. Chưa dùng camera module, motor hoặc WiFi.
Bài này giúp bạn làm được gì?
Ảnh số là một bảng pixel. Mỗi pixel có giá trị sáng hoặc màu. Nếu học viên hiểu pixel trước, việc nhận diện màu/vật thể sau này sẽ bớt bí ẩn.
Kết quả cuối bài:
- Học viên đọc được ma trận ảnh 8x8.
- Code tính độ sáng trung bình và số pixel sáng.
- Code tìm vùng sáng lệch trái, giữa hoặc phải.
- LED/buzzer phản hồi khi vùng sáng đủ rõ.
Khái niệm chính
| Từ | Cách hiểu |
|---|---|
| Pixel | Một điểm ảnh |
| Frame | Một ảnh tại một thời điểm |
| Brightness | Độ sáng của pixel, ví dụ 0-255 |
| Threshold | Ngưỡng để quyết định pixel sáng/tối |
| Centroid | Tâm tương đối của vùng sáng |
Thực hành từng bước
Bước 1: Đọc ma trận bằng mắt
Nhìn thẻ 8x8. Ô sáng là pixel có brightness cao. Hỏi:
- Vùng sáng nằm bên trái, giữa hay phải?
- Nếu tăng ngưỡng, số pixel sáng tăng hay giảm?
- Nếu nền quá sáng, threshold có còn tốt không?
Bước 2: Upload code
Mở Serial Monitor và gửi:
CENTER
LEFT
RIGHT
DARK
Robot sẽ in bản đồ pixel dạng ký tự, mean brightness, bright count và centroid.
Bước 3: Ghi bảng
| Mẫu | Mean | Bright count | Centroid | Quyết định |
|---|---|---|---|---|
| CENTER | ||||
| LEFT | ||||
| RIGHT | ||||
| DARK |
Code mẫu hoàn chỉnh
Code đầy đủ nằm trong file:
code/g3-02-camera-anh-so-va-pixel/g3-02-camera-anh-so-va-pixel.ino
Đoạn tính centroid:
if (image[y][x] >= THRESHOLD) {
brightCount++;
xTotal += x;
}
Kiểm thử robot thật
| Test | Thao tác | Kết quả mong đợi | Pass? |
|---|---|---|---|
| 1 | Gửi CENTER | Centroid gần giữa | |
| 2 | Gửi LEFT | Centroid nhỏ hơn giữa | |
| 3 | Gửi RIGHT | Centroid lớn hơn giữa | |
| 4 | Gửi DARK | Bright count thấp, buzzer kêu ngắn |
Lỗi thường gặp và cách sửa
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
| Centroid sai | Nhầm trục x/y | In bản đồ pixel để nhìn |
| Bright count quá cao | Threshold quá thấp | Tăng THRESHOLD |
| Không thấy khác biệt LEFT/RIGHT | Mẫu ảnh quá giống nhau | Sửa ma trận mẫu |
| Nghĩ pixel là vật lý camera | Pixel là dữ liệu ảnh | Camera thật sẽ học ở G3 03 |
Checklist hoàn thành
- Giải thích được pixel và frame.
- Tính được mean brightness.
- Tính được bright count và centroid.
- Chạy được 4 lệnh mẫu.
- Sẵn sàng kết nối camera thật ở G3 03.
Bài tiếp theo
G3 03 sẽ dùng ESP32-CAM và OV2640 để chụp frame đầu tiên. Khi đó các khái niệm pixel/frame trong bài này sẽ xuất hiện từ camera thật.
Điều hướng bài học
Bài tiếp theo: G3 03 - Kết nối camera và xem ảnh đầu tiên
Bài trước: G3 01 - Robot biết nhìn là gì