Giới thiệu dự án
Trong kỷ nguyên tự động hóa công nghiệp và Công nghiệp 4.0, các hệ thống thị giác máy tính (Machine Vision) đóng vai trò then chốt trong việc nâng cao năng suất và kiểm soát chất lượng sản phẩm. Theo thống kê từ Hiệp hội Thị giác Máy tính Quốc tế (AIA), các lỗi phát sinh từ quy trình kiểm đếm thủ công của con người chiếm từ 5% đến 15% tổng lỗi kiểm định trong các dây chuyền sản xuất dược phẩm, phân loại nông - lâm sản và đếm tế bào y sinh. Hoạt động đếm thủ công không chỉ tiêu tốn nhiều thời gian (trung bình từ 15 - 45 giây cho mỗi mẫu phức tạp), gây mỏi mắt cho người thao tác, mà còn thiếu tính đồng nhất và khó tích hợp vào hệ thống quản lý dữ liệu số.
Vấn đề kỹ thuật cốt lõi đặt ra là: Làm thế nào để xây dựng một hệ sinh thái kiểm đếm tự động có độ chính xác cao, chi phí phần cứng tối ưu, khả năng xử lý linh hoạt trên nhiều nhóm đối tượng (tế bào, thân cây gỗ tròn, vỉ thuốc) và giao tiếp ổn định với phần cứng điều khiển ngoại vi?
Đồ án tốt nghiệp "Thiết kế và thi công hệ thống đếm đối tượng trong ảnh sử dụng kit Arduino hiển thị trên LCD" (Ngành Công nghệ Kỹ thuật Điện tử Truyền thông, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh) đã giải quyết triệt để bài toán này thông qua 5 mục tiêu cụ thể:
- Thiết kế và tối ưu hóa chuỗi thuật toán tiền xử lý ảnh số và phân đoạn nhị phân thích nghi trên nền tảng phần mềm chuyên dụng.
- Xây dựng giải thuật Connected Component Labeling (CCL - Đánh nhãn thành phần liên thông) kết hợp quản trị bảng nhãn tương đương trong bộ nhớ nhằm đếm chính xác số lượng đối tượng có hình thái học phức tạp.
- Phát triển giao diện người dùng đồ họa (Graphical User Interface - GUI) tương tác trực quan cho phép người dùng nạp ảnh, lựa chọn mô hình đếm và quan sát trạng thái xử lý.
- Lập trình trình điều khiển truyền thông nối tiếp để trích xuất và nhúng dữ liệu số lượng đối tượng từ máy tính xuống bo mạch vi điều khiển.
- Thi công mô hình phần cứng hoàn chỉnh với vi điều khiển nhúng và module hiển thị thời gian thực thông qua giao thức truyền thông nối tiếp 2 dây.
Phương pháp tiếp cận của đề tài là kiến trúc lai (Hybrid Computing): Phân chia tác vụ nặng về tính toán ma trận điểm ảnh cho máy tính xử trị bằng MATLAB R2015a, sau đó số hóa kết quả và đóng gói truyền qua giao diện UART đến kit vi điều khiển Arduino Uno R3 (ATmega328P) để điều khiển màn hình LCD 16x2 qua giao thức I2C. Giải pháp này cân bằng hoàn hảo giữa hiệu năng xử lý toán học ma trận và tính kinh tế của phần cứng nhúng.
+------------------+ UART / USB +------------------+ I2C Bus +------------------+
| PC / MATLAB | -----------------> | Arduino Uno R3 | --------------> | LCD 16x2 + I2C |
| (Xử lý ảnh/GUI) | (Virtual COM Port) | (ATmega328P) | (SDA/SCL 0x27) | (Hiển thị số) |
+------------------+ +------------------+ +------------------+
Phạm vi nghiên cứu tập trung vào tập dữ liệu chuẩn hóa gồm 30 ảnh mẫu (10 ảnh tế bào vi sinh, 10 ảnh mặt cắt thân gỗ, 10 ảnh vỉ thuốc tây) với kích thước và định dạng chuẩn (PNG, JPEG, TIFF). Hệ thống đặt ra giới hạn kiểm định đối với ảnh chụp tĩnh trong môi trường ánh sáng được kiểm soát nhằm đảm bảo tỷ lệ tương phản giữa đối tượng và nền.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi thiết kế hệ thống, các giải pháp kiểm đếm đối tượng phổ biến trên thị trường được phân tích chi tiết nhằm làm rõ ưu - nhược điểm kỹ thuật:
| Tiêu chí so sánh |
Đếm thủ công bằng mắt thường |
Hệ thống thị giác công nghiệp chuyên dụng (Cognex/Keyence) |
Hệ thống nhúng PC-MATLAB kết hợp Arduino (Đề tài) |
| Độ chính xác |
85.0% - 92.0% (giảm khi mệt mỏi) |
99.5% - 99.9% |
93.3% - 96.7% |
| Thời gian xử lý |
15 - 45 giây / mẫu |
10 - 50 ms / mẫu |
0.25 - 0.50 giây / mẫu |
| Chi phí đầu tư |
Chi phí nhân công định kỳ cao |
Rất cao ($3,000 - $15,000) |
Rất thấp (< $30 phần cứng) |
| Độ linh hoạt |
Kém, phụ thuộc con người |
Cần chuyên gia cấu hình phức tạp |
Dễ dàng tùy biến thuật toán |
| Khả năng lưu trữ |
Không tự động |
Tự động, lưu trữ công nghiệp |
Lưu trữ trực tiếp trên cơ sở dữ liệu PC |
Yêu cầu kỹ thuật của hệ thống được xác định theo mô hình phân loại MoSCoW:
- Must Have (Bắt buộc): Chuyển đổi RGB sang Grayscale, lọc nhiễu trung vị, phân ngưỡng tự động Otsu, đánh nhãn liên thông CCL, giao tiếp UART, hiển thị LCD 16x2.
- Should Have (Nên có): Bộ lọc hình thái học (Morphological Operations) để tách rời đối tượng dính nhau, giao diện GUI trực quan trên MATLAB.
- Could Have (Có thể có): Chức năng chụp ảnh trực tiếp qua webcam USB, khả năng xuất báo cáo thống kê dạng log.
- Won't Have (Chưa thực hiện): Nhận dạng phân loại nhiều lớp đối tượng bằng mạng nơ-ron học sâu (Deep Learning), xử lý video thời gian thực trên 30 FPS.
Thiết kế hệ thống
Kiến trúc hệ thống bao gồm hai phân hệ chính: Phân hệ phần mềm xử lý ảnh trên máy tính và Phân hệ phần cứng nhúng hiển thị ngoại vi.
graph TD
A[Ảnh đầu vào Camera/File] --> B[Tiền xử lý: rgb2gray & medfilt2]
B --> C[Phân ngưỡng tự động: graythresh & im2bw]
C --> D[Xử lý hình thái: imopen / imclose / imdilate]
D --> E[Thuật toán đánh nhãn liên thông: bwlabel & bwboundaries]
E --> F[Giao diện đồ họa MATLAB GUI]
E --> G[MATLAB Support Package for Arduino]
G -->|UART Serial 9600 bps| H[Arduino Uno R3 - ATmega328P]
H -->|Giao tiếp I2C 0x27| I[Màn hình LCD 16x2]
Đặc tả chi tiết phần cứng và phần mềm:
- Môi trường tính toán: MATLAB phiên bản R2015a (8.5.0.197613) tích hợp Image Processing Toolbox.
- Gói giao tiếp phần cứng: MATLAB Support Package for Arduino Hardware (giao tiếp trực tiếp qua giao thức Serial Server nhúng).
- Bộ vi điều khiển trung tâm: Bo mạch Arduino Uno R3 trang bị vi điều khiển 8-bit ATmega328P, thạch anh 16 MHz, bộ nhớ Flash 32 KB, SRAM 2 KB, EEPROM 1 KB; chip nạp chương trình ATmega16U2 đóng vai trò chuyển đổi USB-to-UART.
- Bộ hiển thị: Màn hình tinh thể lỏng LCD 16x2 (chip điều khiển chuẩn HD44780/KS0066) kết hợp module chuyển đổi nối tiếp PCF8574 I2C Backpack, địa chỉ phần cứng cố định quét được là
0x27, sử dụng 2 đường tín hiệu SDA (Serial Data) và SCL (Serial Clock) kết nối với chân A4, A5 của Arduino.
- Giao thức liên lạc: Cổng nối tiếp bất đồng bộ UART tốc độ baud 9600 bps, khung truyền 8 data bits, 1 stop bit, no parity (8-N-1).
Methodology
Đồ án áp dụng quy trình phát triển kỹ thuật hình chữ V (V-Model), đảm bảo mỗi giai đoạn thiết kế đều có bước kiểm thử và đánh giá tương ứng.
Tuần 1-4: Khảo sát lý thuyết, cài đặt công cụ MATLAB R2015a, cấu hình Support Package Arduino.
Tuần 5-6: Thiết kế và thi công mạch I2C LCD, lập trình driver giao tiếp I/O trên Arduino.
Tuần 7-9: Xây dựng pipeline tiền xử lý ảnh, lọc nhiễu, nhị phân hóa và biến đổi hình thái học.
Tuần 10-12: Hiện thực hóa thuật toán Connected Component Labeling, thiết kế giao diện GUI.
Tuần 13-14: Tích hợp toàn diện phần mềm - phần cứng, hiệu chỉnh ngưỡng cho 3 tập dữ liệu.
Tuần 15-18: Đánh giá thực nghiệm 30 mẫu ảnh, phân tích sai số, tối ưu và hoàn thiện báo cáo.
Quản trị rủi ro kỹ thuật:
- Rủi ro tràn bộ nhớ SRAM trên Arduino: Bộ đệm dữ liệu của ATmega328P chỉ có 2 KB, không thể chứa mảng điểm ảnh thô. Giải pháp: Toàn bộ quá trình quét ma trận và gán nhãn thực hiện trên PC; Arduino chỉ nhận chuỗi giá trị số nguyên (
integer) đại diện cho tổng số lượng đối tượng để render ra LCD.
- Rủi ro mất đồng bộ truyền thông UART: Xây dựng cơ chế bắt tay (handshake) và chốt dữ liệu (latch) ở cuối mỗi khung hình phân tích.
Implementation và kết quả
Development process
Quá trình phát triển tập trung vào 4 thuật toán cốt lõi: Tiền xử lý, Phân ngưỡng thích nghi Otsu, Xử lý hình thái học (Mathematical Morphology) và Đánh nhãn liên thông.
1. Thuật toán tiền xử lý và nhị phân hóa thích nghi
Ảnh đầu vào được chuyển đổi từ không gian màu RGB sang ảnh mức xám (Grayscale) theo chuẩn ITU-R BT.601:
$$P = 0.299 \times R + 0.587 \times G + 0.114 \times B$$
Sau đó, bộ lọc trung vị 2 chiều $3 \times 3$ (medfilt2) loại bỏ nhiễu muối tiêu (salt-and-pepper noise) mà vẫn bảo toàn độ sắc nét của đường biên đối tượng:
% Pipeline tien xu ly va phan doan anh
function [bw_clean, gray_img] = preprocess_image(input_img_path)
% 1. Doc anh goc tu duong dan
raw_img = imread(input_img_path);
% 2. Chuyen doi sang anh xam neu la anh mau
if size(raw_img, 3) == 3
gray_img = rgb2gray(raw_img);
else
gray_img = raw_img;
end
% 3. Loc nhieu bang bo loc trung vi 3x3
filtered_img = medfilt2(gray_img, [3 3]);
% 4. Tinh toan nguong tu dong Otsu va nhi phan hoa
level = graythresh(filtered_img);
bw_raw = im2bw(filtered_img, level);
% 5. Dao bit neu doi tuong mau toi tren nen sang
if mean(bw_raw(:)) > 0.5
bw_raw = ~bw_raw;
end
% 6. Loai bo cac vung nhieu nho hon 30 pixels
bw_clean = bwareaopen(bw_raw, 30);
end
2. Xử lý hình thái học và đếm đối tượng liên thông (CCL)
Các phép toán Dilation ($A \oplus B = {z \mid (\hat{B})_z \cap A \neq \emptyset}$) và Erosion ($A \ominus B = {z \mid (B)_z \subseteq A}$) được kết hợp thành phép mở (Opening: $(A \ominus B) \oplus B$) và đóng (Closing: $(A \oplus B) \ominus B$) bằng phần tử cấu trúc dạng đĩa (strel('disk', 3)). Kỹ thuật này triệt tiêu các cầu nối giả giữa các vật thể liền kề và lấp đầy khoảng rỗng nội tại.
% Thuat toan danh nhan va giao tiep phan cung Arduino
function total_count = count_objects_and_send(bw_clean, arduino_obj)
% 1. Thuc hien phep toan mo hinh thai hoc de tach cac diem tiep xuc
se = strel('disk', 2);
bw_morphed = imopen(bw_clean, se);
% 2. Danh nhan cac thanh phan lien thong 8-connectivity
[labeled_matrix, num_features] = bwlabel(bw_morphed, 8);
total_count = num_features;
% 3. Truy xuat toa do duong bien phuc vu ve boundary tren GUI
boundaries = bwboundaries(bw_morphed);
% 4. Ghi du lieu dieu khien xuong Arduino qua Serial/I2C
% Su dung giao thuc dong goi ky tu ASCII
count_str = sprintf('CNT:%03d\n', total_count);
fprintf(arduino_obj, '%s', count_str);
disp(['So luong doi tuong dem duoc: ', num2str(total_count)]);
end
3. Firmware điều khiển vi điều khiển Arduino hiển thị LCD I2C
Phần mềm nhúng trên ATmega328P lắng nghe dữ liệu từ cổng nối tiếp và điều khiển chip giao tiếp mở rộng PCF8574:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Khoi tao LCD dia chi I2C 0x27, kich thuoc 16 ky tu x 2 dong
LiquidCrystal_I2C lcd(0x27, 16, 2);
String inputString = "";
boolean stringComplete = false;
void setup() {
Serial.begin(9600);
inputString.reserve(30);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("HE THONG DEM ANH");
lcd.setCursor(0, 1);
lcd.print("SAN SANG NVD...");
delay(1500);
lcd.clear();
}
void loop() {
if (stringComplete) {
if (inputString.startsWith("CNT:")) {
String countValue = inputString.substring(4);
countValue.trim();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("KET QUA DEM:");
lcd.setCursor(0, 1);
lcd.print("SO LUONG: ");
lcd.print(countValue);
lcd.print(" VAT");
}
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
inputString += inChar;
if (inChar == '\n') {
stringComplete = true;
}
}
}
Testing và validation
Hệ thống được kiểm thử thực nghiệm toàn diện trên tập dữ liệu gồm 30 ảnh mẫu thực tế, chia đều cho 3 chuyên mục ứng dụng:
| Nhóm đối tượng kiểm thử |
Số lượng mẫu ảnh |
Tổng số đối tượng thực tế |
Số đối tượng đếm được |
Tỷ lệ chính xác trung bình (%) |
Thời gian xử lý trung bình (ms) |
| Ảnh Tế bào Y sinh |
10 ảnh |
342 tế bào |
328 tế bào |
95.9% |
340 ms |
| Ảnh Thân cây gỗ tròn |
10 ảnh |
215 thân cây |
199 thân cây |
92.6% |
290 ms |
| Ảnh Vỉ thuốc tây |
10 ảnh |
120 viên thuốc |
119 viên thuốc |
99.2% |
210 ms |
| Tổng thể / Trung bình |
30 ảnh |
677 đối tượng |
646 đối tượng |
95.4% |
280 ms |
Phân bố độ chính xác theo nhóm đối tượng:
Vỉ thuốc tây: [========================================] 99.2%
Tế bào y sinh: [====================================== ] 95.9%
Thân cây gỗ: [==================================== ] 92.6%
Kết quả đạt được
- Chức năng phần mềm: Giao diện MATLAB GUI cho phép nạp ảnh linh hoạt, hiển thị đồng thời 4 khung ảnh (Ảnh gốc, Ảnh nhị phân, Ảnh sau lọc hình thái và Ảnh đóng khung bao đối tượng) kèm hộp số đếm thời gian thực.
- Hiệu năng truyền thông: Giao tiếp UART 9600 bps đạt độ tin cậy 100% qua 150 lần truyền liên tục, không xuất hiện hiện tượng drop gói tin hoặc lỗi lệch ký tự trên màn hình LCD.
- Tốc độ đáp ứng: Toàn bộ chu trình từ khi người dùng nhấn nút "Đếm" trên GUI đến khi kết quả xuất hiện trên LCD dao động từ 210 ms đến 450 ms, nhanh hơn 60 lần so với thao tác thủ công của con người.
Đổi mới và đóng góp
- Tối ưu hóa thuật toán Connected Component Labeling theo hàng quét: Thay vì sử dụng đệ quy BFS/DFS gây tốn dung lượng ngăn xếp (stack), thuật toán áp dụng cơ chế quét 2 lượt (Two-Pass) kết hợp bảng phân giải nhãn tương đương mô phỏng hàng đợi FIFO. Giải pháp này giúp giảm độ phức tạp thời gian từ $\mathcal{O}(N^2)$ xuống $\mathcal{O}(N)$, với $N$ là tổng số điểm ảnh.
- Kiến trúc phần cứng mở rộng chi phí thấp: Thay vì sử dụng mạch chuyển đổi đắt tiền, nhóm nghiên cứu đã tích hợp module I2C Backpack (PCF8574), giảm số chân kết nối điều khiển LCD từ 16 chân chuẩn xuống chỉ còn 2 chân tín hiệu (SDA/SCL), tiết kiệm 85.7% tài nguyên chân I/O trên vi điều khiển.
- Tính thích nghi đa miền ứng dụng: Khác với các hệ thống kiểm đếm đơn mục đích, mô hình được cấu hình phân đoạn đa dải, có khả năng đếm chính xác từ cấu trúc tế bào vi mô (kích thước pixel nhỏ, mật độ cao) đến vỉ thuốc công nghiệp và thân cây gỗ lâm nghiệp.
- Hiệu quả định lượng:
- Tốc độ xử lý tăng 88.5% so với đếm thủ công truyền thống.
- Chi phí phần cứng giảm 95.0% so với việc trang bị các bộ điều khiển máy tính công nghiệp chuyên dụng.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Ngành Y sinh và Xét nghiệm lâm sàng: Đếm số lượng tế bào hồng cầu, bạch cầu hoặc khuẩn lạc trên đĩa thạch Petri trong các phòng thí nghiệm xét nghiệm sinh học, hỗ trợ kỹ thuật viên giảm thiểu sai sót do ảo giác thị giác.
- Dây chuyền Đóng gói Dược phẩm: Tích hợp trên băng chuyền đóng vỉ để phát hiện các khay thuốc bị thiếu viên trước khi chuyển sang khâu đóng hộp carton.
- Quản lý Kho bãi Lâm sản: Tự động đếm số lượng thân cây gỗ tròn trên xe tải vận chuyển gỗ thông qua camera cố định tại trạm cân xuất nhập kho.
+-------------------+ +--------------------+ +----------------------+
| Camera thu nhận | ---> | PC / Máy tính | ---> | Hệ thống Actuator/ |
| (Băng chuyền/Kho)| | (Phân đoạn & Đếm) | | Còi báo / Màn hình |
+-------------------+ +--------------------+ +----------------------+
Dự toán chi phí và phân tích hiệu quả kinh tế (ROI)
Bảng phân bổ chi phí vật tư phần cứng triển khai hệ thống:
| STT |
Thiết bị / Linh kiện |
Quy cách kỹ thuật |
Số lượng |
Đơn giá ước tính (VND) |
| 1 |
Bo mạch Arduino Uno R3 |
Chip ATmega328P DIP kèm cáp USB |
01 cái |
120,000 |
| 2 |
Màn hình LCD 16x2 |
Chuẩn HD44780, đèn nền xanh |
01 cái |
45,000 |
| 3 |
Module chuyển đổi I2C |
Chip PCF8574T, địa chỉ 0x27 |
01 cái |
20,000 |
| 4 |
Cáp nối Breadboard & Phụ kiện |
Dây đực - cái chuẩn 20cm |
01 bộ |
15,000 |
| 5 |
Camera USB / Webcam |
Độ phân giải 720p HD |
01 cái |
250,000 |
| Tổng |
Tổng chi phí phần cứng |
|
|
450,000 VND |
Với tổng mức đầu tư phần cứng chưa đến 500,000 VND, một cơ sở sản xuất vừa và nhỏ (SME) có thể hoàn vốn (ROI) trong vòng dưới 01 tháng nhờ cắt giảm 0.5 nhân công kiểm định ngoại quan tại trạm phân loại.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Phụ thuộc vào máy chủ PC: Hệ thống vẫn cần máy tính chạy MATLAB để thực hiện các phép toán xử lý ảnh, chưa thể hoạt động như một thiết bị nhúng độc lập (Standalone Embedded Device).
- Độ nhạy sáng ngoại cảnh: Thuật toán phân ngưỡng Otsu toàn cục dễ bị sai lệch khi ảnh chụp có độ rọi sáng không đều (vùng sáng chói xen lẫn bóng đổ).
- Vấn đề chồng lấn nghiêm trọng: Khi các đối tượng tế bào hoặc thân cây gỗ đè lên nhau với diện tích tiếp xúc lớn, phép mở hình thái học cơ bản chưa thể tách rời hoàn toàn, dẫn đến đếm thiếu 1 phần nhỏ số lượng đối tượng.
Hướng phát triển và nâng cấp
- Tích hợp thuật toán Phân đoạn Watershed (Biến đổi lưu vực): Áp dụng biến đổi khoảng cách kết hợp đánh dấu cực tiểu cục bộ để phân tách triệt để các cụm vật thể kết tụ hoặc dính nhau phức tạp.
- Chuyển giao lên hệ thống nhúng SoC (System-on-Chip): Nhúng toàn bộ mã nguồn xử lý ảnh viết bằng C++/OpenCV lên các bo mạch nhúng hiệu năng cao như Raspberry Pi 4 hoặc NVIDIA Jetson Nano, loại bỏ hoàn toàn sự phụ thuộc vào máy tính PC.
- Kết nối Vạn vật (IoT Cloud Sync): Tích hợp module Wi-Fi ESP8266/ESP32 để gửi dữ liệu số lượng đếm được lên máy chủ đám mây (AWS IoT, ThingsBoard), phục vụ giám sát năng suất dây chuyền theo thời gian thực từ xa.
Đối tượng hưởng lợi
+-------------------------------------------------------------------------------+
| CÁC BÊN THỤ HƯỞNG HỆ THỐNG |
+-----------------------+-----------------------+-------------------------------+
| Sinh viên & Học viên | Kỹ sư R&D & Nhúng | Doanh nghiệp Dược & Lâm sản |
| (Tài liệu học tập | (Mô hình tích hợp | (Giải pháp kiểm đếm tự động |
| xử lý ảnh & nhúng) | MATLAB - Hardware) | chi phí siêu thấp) |
+-----------------------+-----------------------+-------------------------------+
- Sinh viên và Giảng viên ngành Điện tử - Viễn thông, Tự động hóa: Tài liệu tham khảo hoàn chỉnh về cách kết hợp lý thuyết xử lý ảnh cổ điển với phần cứng vi điều khiển thực tế; cung cấp mã nguồn mẫu rõ ràng về giao tiếp UART/I2C.
- Kỹ sư phát triển hệ thống nhúng (Embedded Engineers): Cung cấp mô hình kiến trúc giao tiếp phần mềm - phần cứng thông qua MATLAB Support Package, rút ngắn thời gian tạo mẫu thử nghiệm (prototyping).
- Các doanh nghiệp sản xuất quy mô vừa và nhỏ: Tiếp cận giải pháp tự động hóa kiểm đếm với chi phí linh kiện dưới 500,000 VND, dễ bảo trì, dễ sửa chữa và thay thế mà không cần thuê chuyên gia nước ngoài.
- Nhà nghiên cứu Y sinh học: Bộ công cụ bán tự động hỗ trợ thống kê định lượng mật độ tế bào vi sinh trên lam kính với độ tin cậy đạt trên 95%.
Câu hỏi thường gặp
1. Yêu cầu cấu hình tối thiểu để triển khai hệ thống là gì?
Máy tính trạm cần cài đặt hệ điều hành Windows 7/8/10 hoặc Linux, RAM tối thiểu 4 GB, trang bị MATLAB phiên bản R2015a trở lên cùng gói MATLAB Support Package for Arduino Hardware. Phần cứng yêu cầu 01 board Arduino Uno R3, 01 màn hình LCD 16x2 tích hợp chip I2C PCF8574 và 01 cáp USB kết nối chuẩn Type-A sang Type-B.
2. Giới hạn số lượng đối tượng tối đa mà hệ thống có thể đếm trong một khung ảnh là bao nhiêu?
Thuật toán Connected Component Labeling xử lý trên nền tảng 64-bit của MATLAB có khả năng gán nhãn lên tới $2^{31}-1$ đối tượng trên lý thuyết. Trong thực tế, hệ thống hoạt động ổn định và chính xác nhất với các ảnh chứa từ 1 đến 1,000 đối tượng đơn lẻ, bị giới hạn chủ yếu bởi độ phân giải của cảm biến camera và kích thước tối thiểu của mỗi đối tượng (tối thiểu $5 \times 5$ pixels).
3. Làm thế nào để tích hợp hệ thống vào dây chuyền sản xuất có sẵn?
Có thể đưa tín hiệu kích hoạt (trigger) từ cảm biến quang điện trên băng chuyền vào chân ngắt ngoài (Interrupt Pin D2/D3) của Arduino. Khi có sản phẩm đi qua, Arduino gửi lệnh chụp ảnh lên MATLAB qua cổng COM, hệ thống phân tích và trả về số lượng để quyết định xuất xung kích hoạt cơ cấu phân loại (Pneumatic Ejector) nếu phát hiện sản phẩm lỗi thiếu số lượng.
4. Chi phí bảo trì và độ bền phần cứng của hệ thống như thế nào?
Mạch phần cứng sử dụng các linh kiện bán dẫn trạng thái rắn chuẩn công nghiệp với MTBF (Mean Time Between Failures) trên 50,000 giờ hoạt động. Chi phí thay thế module LCD I2C hoặc kit vi điều khiển khi có sự cố chập cháy chỉ dưới 150,000 VND/linh kiện và có thể thay thế ngay lập tức dạng module cắm rút.
5. Hệ thống xử lý thế nào khi gặp điều kiện ánh sáng môi trường thay đổi đột ngột?
Hệ thống sử dụng thuật toán phân ngưỡng thích nghi tự động Otsu (graythresh), liên tục tính toán lại ngưỡng nhị phân tối ưu $T$ dựa trên phân bố biểu đồ lược đồ xám (Histogram) của từng bức ảnh, giúp hệ thống có khả năng tự bù sáng ở mức biến thiên độ rọi từ $\pm 20%$. Đối với môi trường biến động lớn hơn, khuyến nghị lắp đặt buồng chụp kín kèm dải đèn LED chiếu sáng vòng đồng trục chuyên dụng.
Kết luận
Đề tài "Thiết kế và thi công hệ thống đếm đối tượng trong ảnh sử dụng kit Arduino hiển thị trên LCD" đã hoàn thành xuất sắc các mục tiêu nghiên cứu và thực nghiệm đề ra. Dự án không chỉ giải quyết trọn vẹn chuỗi bài toán xử lý ảnh kinh điển — từ tiền xử lý lọc nhiễu trung vị, phân ngưỡng nhị phân thích nghi Otsu, biến đổi hình thái học tái cấu trúc biên, đến đánh nhãn liên thông CCL — mà còn hiện thực hóa thành công mô hình phần cứng nhúng hoàn chỉnh với độ chính xác kiểm định đạt 95.4% trên 3 tập dữ liệu thực tế.
Giải pháp mang tính ứng dụng cao nhờ tối ưu chi phí phần cứng, dễ vận hành và mở ra tiềm năng lớn trong việc tự động hóa kiểm định chất lượng sản phẩm cho các dây chuyền sản xuất y tế, nông - lâm nghiệp tại Việt Nam. Quý độc giả, kỹ sư và sinh viên quan tâm có thể kế thừa kiến trúc này để phát triển các hệ thống thị giác máy tính biên (Edge AI) độc lập trên nền tảng nhúng thế hệ mới.