Bối cảnh và vấn đề nghiên cứu

Trong các ngành công nghiệp sản xuất và nghiên cứu khoa học, hoạt động đếm số lượng đối tượng là một công việc phổ biến và đóng vai trò thiết yếu nhằm thu nhận dữ liệu định lượng, phân tích định tính cũng như theo dõi chuyển động. Thông thường, việc kiểm đếm được thực hiện trong nhiều môi trường khác nhau với các đối tượng có kích thước, hình dạng và số lượng đa dạng. Tuy nhiên, phương pháp đếm thủ công truyền thống bộc lộ nhiều hạn chế lớn như tốn nhiều thời gian, tiêu hao nhân lực và dễ phát sinh sai số do yếu tố chủ quan của con người. Để khắc phục những nhược điểm này, việc tự động hóa quá trình đếm thông qua kỹ thuật xử lý ảnh và thị giác máy tính trở thành một hướng tiếp cận quan trọng, giúp nâng cao độ chính xác và tiết kiệm chi phí vận hành.

Tại thời điểm thực hiện đề tài (năm 2017 - 2018), lĩnh vực xử lý ảnh tại Việt Nam đã có những bước tiến đáng kể nhưng phần lớn các giải pháp đếm đối tượng vẫn tập trung trên nền tảng phần cứng chuyên dụng, giá thành cao và chưa được ứng dụng rộng rãi. Hướng tiếp cận kết hợp giữa thuật toán xử lý ảnh trên phần mềm máy tính với các kit vi điều khiển mã nguồn mở chi phí thấp vẫn chưa được khai thác toàn diện. Xuất phát từ thực tiễn đó, nhóm tác giả đã thực hiệ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".

Mục tiêu tổng quát của đồ án là nghiên cứu, xây dựng một hệ thống đếm đối tượng tự động từ ảnh chụp camera, thực hiện các thuật toán xử lý và đánh nhãn đối tượng trên máy tính, sau đó truyền dữ liệu kết quả đếm xuống kit vi điều khiển Arduino Uno để điều khiển màn hình LCD hiển thị số lượng đối tượng. Đồng thời, đồ án xây dựng giao diện tương tác người dùng trực quan và lập tài liệu hướng dẫn vận hành hệ thống.

Để đạt được mục tiêu trên, tác giả đã xác định 6 nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Tìm hiểu cấu trúc và nguyên lý hoạt động của kit vi điều khiển Arduino Uno.
  2. Cài đặt các gói thư viện hỗ trợ phần cứng cho Arduino và thiết lập phương thức kết nối giữa Arduino với phần mềm MATLAB.
  3. Nghiên cứu các thuật toán cần thiết liên quan đến xử lý ảnh số và thuật toán đánh nhãn phục vụ đếm đối tượng.
  4. Xây dựng thuật toán tạo lập cơ sở dữ liệu và tiền xử lý ảnh đầu vào.
  5. Xây dựng hệ thống đếm đối tượng qua hình ảnh trên MATLAB, lập trình ứng dụng nhúng dữ liệu điều khiển trên kit Arduino.
  6. Thử nghiệm thực tế và đánh giá kết quả thực hiện của hệ thống trên các tập dữ liệu ảnh.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Các thuật toán xử lý ảnh số (biến đổi không gian màu, nhị phân hóa, lọc nhiễu, phép toán hình thái học, thuật toán đánh nhãn thành phần liên thông), kit vi điều khiển Arduino Uno R3, module I2C và màn hình LCD 16x2.
  • Phạm vi dữ liệu thực nghiệm: Tập dữ liệu gồm 30 ảnh tĩnh chụp từ camera điện thoại, phân chia đều thành 3 nhóm đối tượng: 10 ảnh tế bào (tế bào màu hồng, tế bào màu tím sạm), 10 ảnh cây gỗ (loại 1, loại 2) và 10 ảnh vỉ thuốc (thuốc loại 1, thuốc đen loại 2).
  • Phạm vi không gian và thời gian: Đề tài được thực hiện tại Bộ môn Điện tử Công nghiệp – Y Sinh, Khoa Điện – Điện tử, Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh; thời gian thực hiện từ ngày 25/09/2017 đến ngày 15/01/2018.

Cơ sở lý thuyết và phương pháp

Đề tài áp dụng nền tảng lý thuyết xử lý ảnh số kết hợp với kỹ thuật lập trình hệ thống nhúng, cụ thể gồm các mô hình và phương pháp sau:

1. Khung lý thuyết và mô hình xử lý ảnh

  • Biến đổi điểm ảnh và không gian màu: Ảnh chụp từ camera ở định dạng màu RGB 24-bit (mỗi kênh Red, Green, Blue chiếm 8-bit, biểu diễn khoảng 16,78 triệu màu) với dung lượng ma trận lớn được chuyển đổi sang ảnh mức xám (Grayscale) 8-bit nhằm giảm tải tính toán mà vẫn bảo toàn cấu trúc không gian của vật thể. Công thức chuyển đổi sử dụng: $$P = a \cdot C_r + b \cdot C_b + c \cdot C_g \quad \text{với } (a + b + c) \le 1$$
  • Phân tích lược đồ mức xám (Histogram): Đánh giá tần suất xuất hiện của các mức xám từ 0 đến 255 để xác định mức độ phân bổ ánh sáng, làm cơ sở phân đoạn vùng đối tượng và nền.
  • Thuật toán phân ngưỡng tự động Otsu: Xác định ngưỡng nhị phân hóa tối ưu $T$ để chuyển ảnh xám thành ảnh nhị phân (mức 0 và 1) thông qua quy trình lặp:
    • Bước 1: Khởi tạo ngưỡng $T_1 = \frac{0 + 255}{2} = 128$.
    • Bước 2: Phân tách tập điểm ảnh thành hai nhóm (Type 1 và Type 2).
    • Bước 3: Tính cường độ sáng trung bình $iAverage_1$ và $iAverage_2$ của hai nhóm.
    • Bước 4: Cập nhật ngưỡng mới $T_2 = \frac{iAverage_1 + iAverage_2}{2}$.
    • Bước 5: So sánh $|T_1 - T_2|$ với sai số $\Delta$; nếu thỏa mãn thì chọn $T = T_2$, ngược lại gán $T_1 = T_2$ và lặp lại quy trình.
  • Lọc nhiễu tuyến tính: Sử dụng bộ lọc trung bình không gian (Spatial Averaging Filter) để khử nhiễu cộng theo công thức: $$v(m,n) = \frac{1}{N_w} \sum_{k} \sum_{l} y(m-k, n-l)$$ Đồng thời, áp dụng bộ lọc đồng hình (Homomorphic Filter) trên miền logarit $\log(X(m,n)) = \log(X_0(m,n)) + \log(\eta(m,n))$ để khử nhiễu nhân do nguồn chiếu sáng không đồng đều.
  • Toán tử hình thái học (Mathematical Morphology): Ứng dụng các phép toán trên ảnh nhị phân với phần tử cấu trúc (Structuring Element) $B$:
    • Phép giãn nở (Dilation): $A \oplus B = {z \mid (B)_z \cap A \neq \emptyset}$, làm dày biên và nối liền khoảng trống nhỏ.
    • Phép xói mòn (Erosion): $A \ominus B = {z \mid (B)_z \subseteq A}$, thu hẹp biên và loại bỏ các nhiễu điểm nhỏ.
    • Phép mở (Opening): $A \circ B = (A \ominus B) \oplus B$, loại bỏ chi tiết thừa và tách rời các liên kết mảnh.
    • Phép đóng (Closing): $A \bullet B = (A \oplus B) \ominus B$, làm trơn biên và lấp kín các lỗ rỗng bên trong đối tượng.
  • Thuật toán đánh nhãn thành phần liên thông (Connected Component Labeling): Xử lý ảnh theo từng dòng quét (line-by-line) từ trái sang phải, từ trên xuống dưới nhằm tối ưu hóa bộ nhớ RAM. Thuật toán so sánh pixel hiện tại (Pixel_focus) với pixel phía trên (Pixel_up lưu trong bộ đệm FIFO) và pixel phía trước (Pixel_pre). Các trường hợp xung đột nhãn được cập nhật giá trị tương đương trong bảng RAM (ưu tiên gán nhãn có chỉ số nhỏ hơn). Đến cuối mỗi khung hình (frame), số lượng vật thể được xác định bằng tổng số nhãn phân biệt có địa chỉ ô nhớ trùng với giá trị lưu trữ trong RAM.
Hàm MATLAB Chức năng xử lý
rgb2gray Chuyển đổi ảnh màu RGB sang ảnh mức xám
graythresh Tính toán ngưỡng toàn cục theo thuật toán Otsu
im2bw Chuyển ảnh xám sang ảnh nhị phân dựa trên ngưỡng
medfilt2 Lọc trung vị 2 chiều khử nhiễu muối tiêu
bwareaopen Loại bỏ các vùng đối tượng nhỏ hơn ngưỡng diện tích chỉ định
imdilate / imerode Thực hiện phép toán giãn nở / xói mòn hình thái học
imopen / imclose Thực hiện phép toán mở / đóng hình thái học
bwlabel Đánh nhãn các thành phần liên thông trong ảnh nhị phân
bwboundaries Xác định đường bao biên giới của đối tượng và lỗ rỗng

2. Phương pháp nghiên cứu thực tế

  • Phương pháp phân tích - tổng hợp tài liệu chuyên ngành về thị giác máy tính và vi điều khiển.
  • Phương pháp thiết kế hệ thống kỹ thuật: Xây dựng cấu trúc phần cứng và lưu đồ thuật toán xử lý dữ liệu.
  • Phương pháp thực nghiệm - kiểm chứng: Thu thập mẫu ảnh thực tế, lập trình giao diện GUI trên MATLAB, chạy kiểm thử đếm trên 30 ảnh và đối chiếu độ chính xác hiển thị trên LCD 16x2.

Thiết kế và triển khai

Hệ thống được thiết kế theo mô hình kết hợp xử lý trên máy tính (PC/Laptop) và điều khiển hiển thị phần cứng (Arduino - LCD).

1. Kiến trúc hệ thống

Quy trình hoạt động của hệ thống trải qua 5 giai đoạn liên hoàn:

  1. Khối lấy ảnh đầu vào: Tiếp nhận ảnh tĩnh từ camera (định dạng PNG, JPEG...).
  2. Khối xử lý hình ảnh đầu vào: Cắt vùng quan tâm (ROI), chuyển đổi sang ảnh xám bằng rgb2gray, nhị phân hóa theo ngưỡng Otsu và lọc sạch nhiễu biên bằng các phép toán hình thái học.
  3. Khối phân đoạn hình ảnh: Tách biệt hoàn toàn các vùng đối tượng cần đếm khỏi nền.
  4. Khối đếm đối tượng: Áp dụng thuật toán đánh nhãn liên thông để xác định chính xác số lượng đối tượng độc lập.
  5. Khối xuất kết quả và điều khiển: Hiển thị số đếm lên giao diện GUI trên máy tính, đồng thời truyền dữ liệu qua cổng giao tiếp nối tiếp xuống kit Arduino Uno để hiển thị lên màn hình LCD 16x2.

2. Thiết kế phần cứng và thông số kỹ thuật

Thành phần Đặc tính kỹ thuật Chức năng trong hệ thống
Kit Arduino Uno R3 Vi điều khiển ATmega328P họ 8-bit, xung nhịp 16 MHz, bộ nhớ Flash 32KB (0.5KB cho bootloader), 2KB SRAM, 1KB EEPROM; 14 chân Digital I/O (6 chân PWM), 6 chân Analog 10-bit; chip ATmega16U2 làm cầu chuyển đổi USB-to-UART. Tiếp nhận dữ liệu số đếm từ phần mềm MATLAB qua cổng COM/Serial và điều khiển màn hình LCD.
Màn hình LCD 16x2 Kích thước hiển thị 2 dòng, mỗi dòng 16 ký tự; ma trận điểm 5x8 chấm; điện áp hoạt động 5V. Hiển thị trực quan kết quả số lượng đối tượng đếm được.
Module I2C Chip chuyển đổi giao tiếp nối tiếp I2C cho LCD; sử dụng 2 đường tín hiệu SDA và SCL; địa chỉ thiết bị quét được là 0x27. Tiết kiệm chân vi điều khiển, giảm số dây kết nối LCD từ 16 chân xuống còn 4 chân (VCC, GND, SDA, SCL).
Máy tính (PC/Laptop) Cài đặt hệ điều hành và môi trường tính toán số MATLAB 2015a; tích hợp MATLAB Support Package for Arduino Hardware. Thu nhận ảnh, xử lý thuật toán ảnh, cung cấp giao diện tương tác và cấp nguồn cho phần cứng qua USB.

3. Quy trình triển khai phần mềm và giao diện

  • Kết nối MATLAB - Arduino: Cài đặt gói hỗ trợ Hardware Support Package for Arduino trên MATLAB 2015a. Thiết lập giao tiếp I2C trên Arduino với địa chỉ 0x27 của màn hình LCD thông qua chương trình I2C Scanner.
  • Xây dựng giao diện đồ họa (GUI): Nhóm tác giả thiết kế giao diện điều khiển trung tâm gồm màn hình chọn đối tượng (Tế bào, Cây gỗ, Vỉ thuốc). Khi chọn loại đối tượng, giao diện hiển thị ảnh gốc, ảnh sau xử lý nhị phân/hình thái học, khung hiển thị kết quả số lượng đếm và nút gửi dữ liệu xuống Arduino.

Nội dung chính theo từng chương

CHƯƠNG 1: TỔNG QUAN

Chương 1 trình bày lý do chọn đề tài dựa trên nhu cầu tự động hóa khâu kiểm đếm số lượng trong sản xuất công nghiệp và y sinh học. Tác giả phân tích những hạn chế của phương pháp đếm thủ công và đánh giá tiềm năng của việc ứng dụng xử lý ảnh kết hợp vi điều khiển mở. Chương này xác định rõ mục tiêu nghiên cứu, 6 nội dung nhiệm vụ cần triển khai, phạm vi dữ liệu thử nghiệm gồm 30 ảnh (tế bào, thân cây, viên thuốc) và phác thảo cấu trúc tổng thể 6 chương của đồ án tốt nghiệp.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

Chương 2 cung cấp toàn bộ nền tảng lý thuyết chuyên sâu về xử lý ảnh, phần cứng nhúng và phần mềm ứng dụng:

  • Tổng quan về phần mềm MATLAB, cấu trúc hệ thống gồm ngôn ngữ lập trình mảng, môi trường làm việc Workspace, thư viện hàm toán học và các Toolbox chuyên dụng.
  • Lịch sử hình thành và phát triển của nền tảng Arduino từ viện IDII (Ý), phân tích cấu tạo phần cứng Arduino Uno R3, vi điều khiển ATmega328P và cấu tạo 16 chân của LCD 16x2.
  • Nguyên lý giao tiếp I2C với 2 đường truyền tín hiệu SCL (xung nhịp) và SDA (dữ liệu), xác định địa chỉ 0x27 cho module điều khiển LCD.
  • Lý thuyết chi tiết các bước xử lý ảnh: biến đổi ảnh màu sang ảnh xám, biểu đồ mức xám Histogram, thuật toán phân ngưỡng tự động Otsu, các bộ lọc tuyến tính (lọc trung bình, lọc đồng hình), các phép toán hình thái học (Dilation, Erosion, Opening, Closing) và thuật toán đánh nhãn dòng quét kết hợp bộ nhớ RAM và bộ đệm FIFO.
  • Bảng tổng hợp các hàm xử lý ảnh chuẩn trong thư viện Image Processing Toolbox của MATLAB.

CHƯƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ

Chương 3 tập trung vào thiết kế hệ thống và cấu hình phần cứng:

  • Xây dựng sơ đồ khối chức năng của hệ thống gồm 5 khối: Khối nhận ảnh đầu vào, Khối xử lý ảnh đầu vào, Khối phân đoạn hình ảnh, Khối đếm đối tượng và Khối xuất kết quả - ứng dụng.
  • Phân tích chi tiết sơ đồ nguyên lý mạch Arduino Uno R3: cấu trúc 3 khối bộ nhớ của ATmega328P (32KB Flash, 2KB SRAM, 1KB EEPROM), hệ thống các cổng Digital I/O (PORTB, PORTC, PORTD), các chân PWM, ngắt ngoài, khối biến đổi tương tự - số ADC 10-bit và chip cầu ATmega16U2 phục vụ nạp code qua cổng COM ảo.
  • Hướng dẫn chi tiết các bước cài đặt gói Support Package Installer cho Arduino trên MATLAB, quy trình đăng nhập tài khoản MathWorks, thiết lập và kiểm tra kết nối I2C giữa Arduino và LCD 16x2.

CHƯƠNG 4: THI CÔNG HỆ THỐNG

Chương 4 mô tả quá trình hiện thực hóa toàn bộ phần mềm và phần cứng:

  • Xây dựng lưu đồ giải thuật chính của hệ thống và các lưu đồ chương trình đếm chi tiết cho từng loại đối tượng (lưu đồ đếm tế bào, lưu đồ đếm thân cây, lưu đồ đếm vỉ thuốc).
  • Lập trình mã nguồn xử lý ảnh trên MATLAB, hiện thực hóa thuật toán đánh nhãn liên thông.
  • Thiết kế và hoàn thiện giao diện đồ họa người dùng (GUI) với các bảng điều khiển trực quan: màn hình chính, giao diện chọn loại đối tượng, giao diện hiển thị ảnh và kết quả số lượng đếm.
  • Đấu nối phần cứng thực tế giữa kit Arduino Uno R3, module I2C và LCD 16x2; kết nối cáp USB với máy tính.
  • Biên soạn tài liệu hướng dẫn sử dụng và quy trình thao tác từng bước trên giao diện người dùng.

CHƯƠNG 5: KẾT QUẢ _ NHẬN XÉT _ ĐÁNH GIÁ

Chương 5 công bố kết quả thực nghiệm đạt được trên toàn bộ tập dữ liệu mẫu:

  • Thử nghiệm trên 10 ảnh tế bào: Hệ thống nhận dạng và đếm chính xác tế bào màu hồng và tế bào màu tím sạm.
  • Thử nghiệm trên 10 ảnh thân cây gỗ: Đếm thành công các bó cây thuộc loại 1 và loại 2.
  • Thử nghiệm trên 10 ảnh vỉ thuốc: Đếm chính xác số lượng viên thuốc thuộc loại 1 và thuốc đen loại 2.
  • Kiểm chứng kết quả hiển thị đồng bộ giữa giao diện GUI trên máy tính và màn hình LCD 16x2 thông qua kit Arduino.
  • Phân tích các nguyên nhân gây sai số, chỉ rõ sự ảnh hưởng của cường độ ánh sáng môi trường chụp và sự chênh lệch màu sắc giữa đối tượng với phông nền.

CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương 6 tổng kết các kết quả đạt được đối chiếu với mục tiêu ban đầu, xác nhận hệ thống hoạt động ổn định, thuật toán đếm có hiệu suất cao và dữ liệu được nhúng chính xác xuống phần cứng. Đồng thời, tác giả chỉ ra các mặt hạn chế còn tồn tại và đề xuất các hướng mở rộng nghiên cứu trong tương lai.

Kết quả và đóng góp

1. Kết quả thực nghiệm

Hệ thống đã được thử nghiệm thực tế trên toàn bộ 30 mẫu ảnh chụp từ camera, kết quả đạt được cụ thể như sau:

Nhóm đối tượng Số lượng ảnh thử nghiệm Các phân loại cụ thể Kết quả kiểm thử
Ảnh tế bào 10 ảnh Tế bào màu hồng, tế bào màu tím sạm Đếm chính xác số lượng tế bào trên cả 2 nhóm màu; hiển thị kết quả lên LCD thành công.
Ảnh cây gỗ 10 ảnh Thân cây loại 1, thân cây loại 2 Phân đoạn và đếm đúng số lượng thân cây; dữ liệu truyền xuống Arduino ổn định.
Ảnh vỉ thuốc 10 ảnh Thuốc loại 1, thuốc đen loại 2 Tách biệt các viên thuốc khỏi vỉ, đếm chính xác số viên và hiển thị lên màn hình LCD.

Tất cả các kết quả đếm từ MATLAB đều được nhúng và truyền thành công qua giao tiếp Serial xuống vi điều khiển Arduino Uno R3, từ đó điều khiển module I2C hiển thị chuỗi ký tự số đếm lên màn hình LCD 16x2 theo đúng thời gian thực của tác vụ.

2. Đóng góp của đề tài

  • Giải pháp kỹ thuật kết hợp: Xây dựng thành công mô hình tích hợp giữa phần mềm xử lý ảnh mạnh mẽ (MATLAB) với phần cứng nhúng chi phí thấp (Arduino Uno R3) để giải quyết bài toán tự động hóa kiểm đếm.
  • Tối ưu hóa thuật toán: Hiện thực hóa thuật toán đánh nhãn thành phần liên thông theo dòng quét kết hợp bảng tra RAM và bộ đệm FIFO, giúp giải quyết triệt để bài toán hạn chế dung lượng bộ nhớ khi xử lý các đối tượng có hình dạng phức tạp.
  • Sản phẩm hoàn chỉnh: Cung cấp một giao diện người dùng GUI trực quan, dễ thao tác cùng bộ tài liệu hướng dẫn sử dụng chi tiết, có khả năng áp dụng cho nhiều nhóm đối tượng có đặc tính hình thái khác nhau (tế bào y sinh, thân cây nông nghiệp, vỉ thuốc dược phẩm).

Hạn chế và hướng nghiên cứu tiếp

1. Hạn chế của hệ thống

Căn cứ vào nội dung được nhóm tác giả trình bày trong văn bản:

  • Kết quả đếm của hệ thống còn phụ thuộc nhiều vào điều kiện môi trường chụp ảnh, cụ thể là sự phân bố không đồng đều của ánh sáng nền và độ tương phản màu sắc giữa đối tượng với nền, dẫn đến nguy cơ phát sinh sai số phân đoạn.
  • Dữ liệu đầu vào hiện tại là tập các ảnh tĩnh được chụp sẵn từ camera điện thoại rồi nạp vào máy tính, hệ thống chưa tích hợp module camera thu nhận ảnh và đếm trực tiếp theo thời gian thực tại hiện trường.
  • Hệ thống vẫn phụ thuộc vào máy tính để chạy thuật toán xử lý ảnh trên MATLAB, kit Arduino chỉ đóng vai trò nhận dữ liệu kết quả để hiển thị.

2. Hướng nghiên cứu tiếp

  • Nghiên cứu cải tiến thuật toán tiền xử lý và phân ngưỡng thích nghi để hệ thống hoạt động ổn định trong các điều kiện ánh sáng phức tạp và phông nền nhiễu.
  • Tích hợp trực tiếp module camera vào hệ thống phần cứng để tự động chụp ảnh hoặc xử lý trực tiếp trên luồng video (Real-time Video Processing).
  • Nghiên cứu chuyển đổi và nhúng toàn bộ thuật toán xử lý ảnh sang các board mạch nhúng có năng lực tính toán cao (như Raspberry Pi hoặc DSP) để hệ thống có thể hoạt động độc lập không cần máy tính.

Giá trị tham khảo

Đồ án tốt nghiệp là tài liệu tham khảo hữu ích cho các nhóm đối tượng sau:

  • Sinh viên ngành Kỹ thuật Điện tử - Truyền thông, Kỹ thuật Điều khiển & Tự động hóa, Kỹ thuật Y sinh và Công nghệ Thông tin: Tham khảo phương pháp xây dựng đồ án tốt nghiệp ứng dụng thị giác máy tính kết hợp hệ thống vi điều khiển.
  • Kỹ sư và người nghiên cứu phát triển hệ thống tự động hóa: Tham khảo giải pháp đếm sản phẩm tự động trong các dây chuyền phân loại dược phẩm, chế biến gỗ hoặc xét nghiệm y sinh.

Các nội dung có giá trị tham khảo chuyên sâu trong đồ án:

  • Quy trình tích hợp, cấu hình và truyền thông dữ liệu giữa phần mềm MATLAB với phần cứng Arduino qua gói Hardware Support Package.
  • Kỹ thuật lập trình giao tiếp I2C cho màn hình LCD 16x2 với địa chỉ quét 0x27.
  • Phương pháp phối hợp các hàm hình thái học (imopen, imclose, imdilate, imerode, bwareaopen) và thuật toán Otsu (graythresh) để tiền xử lý nhiều loại ảnh phức tạp.
  • Giải thuật đánh nhãn dòng quét sử dụng mô hình FIFO và quản lý xung đột nhãn trên bộ nhớ RAM.

Câu hỏi thường gặp

1. Bộ dữ liệu thực nghiệm được sử dụng để kiểm chứng hệ thống gồm những loại ảnh nào và có số lượng bao nhiêu?
Bộ dữ liệu thực nghiệm gồm 30 ảnh tĩnh chụp từ camera điện thoại, được chia đều thành 3 nhóm đối tượng: 10 ảnh tế bào (gồm tế bào màu hồng và tế bào màu tím sạm), 10 ảnh cây gỗ (cây loại 1 và cây loại 2) và 10 ảnh vỉ thuốc (thuốc loại 1 và thuốc đen loại 2).

2. Kit Arduino Uno R3 và màn hình LCD 16x2 trong đề tài có cấu hình và kết nối phần cứng như thế nào?
Arduino Uno R3 sử dụng vi điều khiển chính ATmega328P họ 8-bit (xung nhịp 16 MHz, bộ nhớ Flash 32KB, SRAM 2KB, EEPROM 1KB) và chip phụ ATmega16U2 làm cầu chuyển đổi USB-to-UART. Màn hình LCD 16x2 được kết nối với Arduino thông qua module chuyển đổi I2C với địa chỉ định danh là 0x27, sử dụng 2 đường tín hiệu SDA và SCL để nhận lệnh điều khiển hiển thị kết quả.

3. Thuật toán đánh nhãn giải quyết bài toán giới hạn bộ nhớ RAM khi đếm đối tượng như thế nào?
Thay vì lưu trữ toàn bộ khung hình, thuật toán xử lý tuần tự từng dòng quét (line-by-line) từ trên xuống dưới. Pixel hiện tại (Pixel_focus) được so sánh với pixel dòng trên (Pixel_up thông qua bộ đệm FIFO) và pixel phía trước (Pixel_pre). Khi phát hiện xung đột nhãn giữa các phần của cùng một đối tượng, thuật toán cập nhật giá trị tương đương về nhãn nhỏ nhất trong bảng RAM và sử dụng lại nhãn dư thừa bằng FIFO, giúp tối ưu hóa dung lượng bộ nhớ.

4. Ngưỡng nhị phân hóa ảnh được xác định tự động theo thuật toán nào trong đồ án?
Đồ án sử dụng thuật toán Otsu để tìm ngưỡng tự động $T$. Thuật toán khởi tạo ngưỡng $T_1 = 128$, phân chia ảnh thành 2 nhóm điểm ảnh, tính cường độ sáng trung bình $iAverage_1$ và $iAverage_2$, sau đó tính $T_2 = \frac{iAverage_1 + iAverage_2}{2}$ và lặp lại quá trình hiệu chỉnh cho đến khi độ chênh lệch giữa $T_1$ và $T_2$ nhỏ hơn hoặc bằng giá trị $\Delta$ cho trước.

5. Những yếu tố nào ảnh hưởng trực tiếp đến độ chính xác của phép đếm trong hệ thống?
Theo kết quả đánh giá của nhóm tác giả, độ chính xác của quá trình đếm phụ thuộc chủ yếu vào môi trường thu nhận ảnh, bao gồm sự đồng đều của cường độ ánh sáng nền và độ tương phản màu sắc giữa đối tượng cần đếm với phông nền xung quanh.

Kết luận

Đồ á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" của hai sinh viên Phan Thành Hưng và Trần Văn Thạch đã hoàn thành trọn vẹn các mục tiêu thiết kế và thi công đề ra. Hệ thống kết hợp thành công giữa các giải thuật xử lý ảnh số trên MATLAB (nhị phân hóa Otsu, lọc nhiễu, biến đổi hình thái học, đánh nhãn liên thông) với kit vi điều khiển Arduino Uno R3 và màn hình LCD 16x2 giao tiếp I2C. Kết quả kiểm nghiệm trên 30 mẫu ảnh tế bào, cây gỗ và vỉ thuốc chứng minh tính khả thi, độ chính xác và khả năng ứng dụng thực tiễn của giải pháp trong việc tự động hóa quá trình kiểm đếm đối tượng.