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

Ùn tắc giao thông tại các đô thị lớn như Thành phố Hồ Chí Minh và Hà Nội là vấn đề cấp bách, gây thiệt hại kinh tế - xã hội nghiêm trọng và gia tăng ô nhiễm môi trường. Việc điều tiết giao thông truyền thống dựa trên các chu kỳ đèn tín hiệu cố định hoặc phân luồng thủ công bộc lộ nhiều hạn chế về tính linh hoạt, tiêu tốn nhân lực và không phản ánh chính xác mật độ phương tiện biến động theo thời gian thực. Trong khi đó, việc nhập khẩu các hệ thống đèn tín hiệu thông minh từ nước ngoài đòi hỏi chi phí đầu tư rất lớn nhưng hiệu quả vận hành thực tế tại Việt Nam chưa đạt kỳ vọng do khó khăn trong việc làm chủ công nghệ và bảo trì thiết bị (chẳng hạn dự án lắp đặt 121 trụ đèn giao thông nhập từ Tây Ban Nha trị giá 3,5 triệu USD hay hệ thống 48 chốt đèn cảm biến ODA năm 2007 đều gặp sự cố kỹ thuật phức tạp trong quá trình khai thác).

Từ thực tiễn đó, đề tài đồ án tốt nghiệp "Ứng dụng xử lý ảnh điều khiển đèn giao thông tại nút giao thông" (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) được thực hiện nhằm xây dựng giải pháp tự động điều tiết thời gian chu kỳ đèn dựa trên mật độ phương tiện thực tế thông qua kỹ thuật thị giác máy tính.

Mục tiêu và các nhiệm vụ nghiên cứu cụ thể được xác định bao gồm:

  1. Tìm hiểu và làm chủ công cụ lập trình MATLAB, vi điều khiển Arduino Mega 2560, giao thức truyền thông nối tiếp giữa MATLAB và Arduino.
  2. Nghiên cứu các thuật toán phát hiện, phân đoạn và đếm đối tượng phương tiện giao thông từ dữ liệu hình ảnh.
  3. Xây dựng quy trình tiền xử lý, nâng cao chất lượng ảnh và trích xuất dữ liệu lưu lượng xe từ luồng video đầu vào.
  4. Thiết kế giao diện điều khiển đồ họa trên máy tính để thu thập dữ liệu, giám sát mật độ và truyền dữ liệu điều khiển xuống phần cứng.
  5. Thiết kế và thi công mô hình phần cứng ngã tư giao thông hoàn chỉnh gồm khối điều khiển vi xử lý, khối hiển thị LED 7 đoạn và LED đơn sắc.
  6. Thử nghiệm, thu thập số liệu thực nghiệm và đánh giá độ chính xác của hệ thống trong các kịch bản lưu lượng phương tiện khác nhau.

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

  • Đối tượng nghiên cứu: Phương pháp xử lý ảnh số nhận dạng phương tiện giao thông và giải thuật điều khiển phân bổ thời gian chu kỳ đèn tín hiệu giao thông thích nghi.
  • Phạm vi thực nghiệm: Do điều kiện lắp đặt camera cố định trên cao tại các giao lộ thực tế gặp nhiều rào cản kỹ thuật, nhóm tác giả tiến hành thu thập dữ liệu bằng cách quay 4 đoạn video thực tế tại hai làn đường bằng điện thoại thông minh (trong điều kiện thời tiết ban ngày, đủ ánh sáng; gồm 2 video lưu lượng ít/vừa và 2 video lưu lượng đông xe) để nhúng vào phần mềm MATLAB mô phỏng luồng dữ liệu camera; phần cứng thực nghiệm được triển khai trên mô hình ngã tư kích thước $45\text{ cm} \times 45\text{ cm}$.

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

Đồ án kết hợp cơ sở lý thuyết xử lý tín hiệu số, thị giác máy tính và kỹ thuật vi điều khiển nhúng để xây dựng hệ thống điều khiển giao thông vòng lặp kín.

Khung lý thuyết và mô hình tính toán

  • Mô hình biểu diễn và chuyển đổi không gian màu: Ảnh màu RGB đầu vào (24-bit/pixel) được chuyển đổi sang ảnh mức xám (Grayscale 8-bit/pixel) nhằm giảm dung lượng tính toán từ $1280 \times 720 \times 24\text{ bit}$ xuống ma trận đơn kênh theo mô hình tổ hợp tuyến tính: $$P = a \cdot C_r + b \cdot C_g + c \cdot C_b \quad (a + b + c \le 1)$$ Hệ thống sử dụng hàm chuẩn rgb2gray() trong MATLAB để chuẩn hóa các hệ số trọng số mức xám.
  • Phương pháp nhị phân hóa và phân đoạn ảnh: Sử dụng thuật toán xác định ngưỡng tự động Otsu qua hàm graythresh() kết hợp hàm imbinarize() / im2bw() để tách biệt vùng đối tượng chuyển động khỏi nền ảnh thông qua kỹ thuật trừ nền (Background Subtraction).
  • Lý thuyết hình thái học ảnh (Morphological Operations): Ứng dụng các phép toán dãn nở (Dilation), xói mòn (Erosion), lấp lỗ trống cấu trúc và hàm bwareaopen() nhằm loại bỏ các đốm nhiễu nhỏ, kết nối các vùng biên rời rạc của phương tiện. Thuật toán dán nhãn thành phần liên thông (Connected Component Labeling) được dùng để đếm số lượng xe độc lập.
  • Lý thuyết lọc và nâng cao chất lượng ảnh:
    • Lọc tuyến tính: Lọc trung bình không gian (Spatial Averaging Filter) theo mặt nạ ma trận $3 \times 3$ với công thức $v(m,n) = \frac{1}{N_w}\sum_{(k,l)\in W} y(m-k, n-l)$ để triệt tiêu nhiễu cộng Gauss có phương sai $\sigma^2_n$; lọc thông thấp; lọc đồng hình (Homomorphic Filter) giải quyết bài toán nhiễu nhân $\log(X_{qs}) = \log(X_{gốc}) + \log(\eta)$.
    • Lọc phi tuyến: Lọc trung vị (Median Filter) $V(m,n) = \text{Median}{y(m-k, n-l)}$ với cửa sổ kích thước lẻ ($3 \times 3, 5 \times 5, 7 \times 7$) nhằm làm trơn nhiễu xung mà vẫn bảo toàn độ sắc nét của đường biên đối tượng.

Phương pháp nghiên cứu và công cụ thực nghiệm

  • Phương pháp phân tích - thiết kế hệ thống: Phân rã hệ thống thành các khối chức năng độc lập (ảnh đầu vào, xử lý trung tâm, điều khiển vi xử lý, hiển thị và nguồn cấp).
  • Phương pháp thực nghiệm mô hình: Lập trình xử lý hình ảnh trên nền tảng MATLAB R2017a kết nối với bo mạch nhúng Arduino Mega 2560 thông qua giao thức truyền thông nối tiếp bất đồng bộ UART (chuẩn mức logic TTL, 8-bit dữ liệu, 1 bit Start, 1 bit Stop).
  • Nguồn dữ liệu: Các video ghi hình lưu lượng giao thông thực tế tại các tuyến đường đô thị vào ban ngày, được phân chia theo các cấp độ mật độ xe.

Thiết kế và triển khai

Hệ thống được thiết kế theo kiến trúc phân tán gồm hai tầng: tầng xử lý tính toán mức cao trên máy tính (PC/MATLAB) và tầng điều khiển - chấp hành mức thấp bằng vi điều khiển (Arduino Mega 2560).

[Camera / Video Input] 
                      [4 Module LED 7 Đoạn 2-Digit]                    [12 LED Đơn Sắc Xanh/Đỏ/Vàng]

Kiến trúc các khối chức năng

  1. Khối thu nhận và xử lý ảnh (PC - MATLAB R2017a): Chịu trách nhiệm trích xuất khung hình từ video (định dạng PNG), thực hiện chuỗi tiền xử lý (chuyển xám $\rightarrow$ nhị phân hóa $\rightarrow$ lọc hình thái học $\rightarrow$ dán nhãn đếm đối tượng), sau đó căn cứ vào số lượng xe đếm được trên từng làn để tra cứu bảng quy định thời gian xanh và đóng gói khung dữ liệu gửi xuống cổng nối tiếp.
  2. Khối điều khiển trung tâm (Arduino Mega 2560): Sử dụng vi điều khiển ATmega2560 (tần số dao động 16 MHz, bộ nhớ Flash 256 KB, SRAM 8 KB, EEPROM 4 KB), nhận các tham số thời gian chu kỳ từ MATLAB qua cổng phần cứng UART (D0 - RX, D1 - TX), thực thi bộ đếm lùi thời gian và xuất tín hiệu điều khiển trạng thái các cổng I/O.
  3. Khối hiển thị: Gồm 4 module LED 7 đoạn loại 2 digit anode chung (sử dụng phương pháp quét LED hiển thị đếm ngược số giây từ 00 đến 99) và 12 LED đơn sắc đường kính chuẩn (màu xanh, đỏ, vàng) biểu thị tín hiệu phân luồng tại 4 nhánh ngã tư.
  4. Khối nguồn và bảo vệ mạch: Sử dụng Adapter ngoài $9\text{V} - 1\text{A}$ cấp qua giắc DC, hạ áp qua IC ổn áp tích hợp AMS1117 xuống $5\text{V}$ ổn định cung cấp cho toàn bộ hệ thống; các LED đơn và chân phân đoạn của LED 7 đoạn đều được mắc nối tiếp điện trở hạn dòng $330,\Omega$ để duy trì dòng định mức khoảng $10\text{ mA} - 20\text{ mA}$.
Linh kiện Số lượng Điện áp định mức (VDC) Dòng điện định mức (mA) Tổng dòng tiêu thụ (mA)
Board Arduino Mega 2560 1 5 30 30
Module LED 7 đoạn 2 digit 4 5 10 40
LED đơn (Xanh, Đỏ, Vàng) 12 5 10 120
Tổng cộng toàn mạch — 5 — 190 mA

Thuật toán điều phối thời gian chu kỳ đèn

Thời gian đèn xanh cho từng làn đường được hệ thống tự động điều chỉnh linh hoạt theo số lượng phương tiện thực tế phát hiện được. Thời gian đèn đỏ của một làn được tính toán bằng tổng thời gian đèn xanh của làn đối diện cộng với 3 giây chuyển tiếp của đèn vàng: $$\text{Thời gian đèn đỏ} = \text{Thời gian đèn xanh (làn đối diện)} + 3\text{ giây (đèn vàng)}$$

Số lượng phương tiện đếm được ($N$) Thời gian đèn xanh tương ứng ($T_{xanh}$)
$N < 2\text{ xe}$ $25\text{ giây}$
$2 < N \le 4\text{ xe}$ $27\text{ giây}$
$4 < N \le 7\text{ xe}$ $29\text{ giây}$
$7 < N \le 10\text{ xe}$ $35\text{ giây}$
$10 < N \le 13\text{ xe}$ $40\text{ giây}$
$13 < N \le 17\text{ xe}$ $45\text{ giây}$
$N > 17\text{ xe}$ $50\text{ giây}$

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

Chương 1: Tổng quan

Trình bày tính cấp thiết của đề tài trong bối cảnh ùn tắc giao thông đô thị gia tăng; phân tích thực trạng các dự án đèn tín hiệu nhập khẩu giá thành cao nhưng chưa tối ưu tại TP.HCM. Xác định mục tiêu chế tạo hệ thống tự động phân phối chu kỳ đèn thông qua xử lý ảnh, lập danh mục 8 nội dung công việc và giới hạn phạm vi mô phỏng hệ thống bằng video thực tế và mô hình ngã tư thu nhỏ.

Chương 2: Cơ sở lý thuyết

Tổng hợp toàn diện kiến thức nền tảng về:

  • Quy trình xử lý ảnh tổng quát (thu nhận $\rightarrow$ tiền xử lý $\rightarrow$ phân đoạn $\rightarrow$ biểu diễn/mô tả $\rightarrow$ nhận dạng/nội suy).
  • Các phép toán xử lý ảnh trên MATLAB: chuyển đổi ảnh màu RGB sang ảnh xám qua công thức trọng số, nhị phân hóa với ngưỡng Otsu, các bộ lọc không gian tuyến tính (lọc trung bình, lọc thông thấp, lọc đồng hình) và phi tuyến (lọc trung vị).
  • Các phép toán hình thái học (dãn nở, xói mòn, lấp đầy lỗ trống, khử nhiễu kích thước nhỏ bwareaopen).
  • Cấu trúc phần cứng vi điều khiển ATmega2560, sơ đồ chân I/O, giao tiếp UART và cấu tạo, nguyên lý điều khiển quét của LED 7 đoạn đôi anode chung và LED đơn sắc.

Chương 3: Tính toán và thiết kế

Xây dựng sơ đồ khối chi tiết của toàn hệ thống; thiết kế sơ đồ nguyên lý kết nối vi điều khiển với các khối hiển thị và khối nguồn. Tính toán cân bằng điện áp và dòng điện tiêu thụ toàn mạch ($190\text{ mA}$ ở $5\text{VDC}$), lựa chọn giá trị điện trở hạn dòng $330,\Omega$ cho các LED. Thiết lập bảng quy tắc chuyển đổi từ mật độ số lượng xe sang thời lượng đèn xanh (từ 25 giây đến 50 giây) và thiết kế kết cấu cơ khí mô hình thực nghiệm $45\text{ cm} \times 45\text{ cm}$.

Chương 4: Thi công hệ thống

Trình bày quy trình chế tạo bo mạch, lắp ráp và đi dây phần cứng bên dưới mặt bàn mô hình. Xây dựng giao diện điều khiển và giám sát đồ họa (GUI) trên MATLAB cho phép người dùng quan sát hình ảnh camera, lựa chọn chế độ chạy tự động theo video hoặc chế độ điều khiển thủ công bằng tay (Manual). Lập trình thuật toán xử lý ảnh trên MATLAB, chương trình điều khiển quét LED và giao tiếp nhận khung dữ liệu UART trên Arduino IDE; biên soạn tài liệu hướng dẫn vận hành hệ thống.

Chương 5: Kết quả, nhận xét và đánh giá

Thực nghiệm vận hành toàn bộ hệ thống với các bộ dữ liệu video đầu vào ở 3 kịch bản: ít xe, xe vừa phải và đông xe trên cả 2 làn đường; kiểm tra hoạt động đồng bộ giữa giao diện máy tính và mô hình phần cứng; thử nghiệm chế độ điều khiển bằng tay và cơ chế bắt lỗi khi người dùng nhập dữ liệu không phải ký tự số.

Chương 6: Kết luận và hướng phát triển

Đánh giá mức độ hoàn thành nhiệm vụ theo mục tiêu đề ra; tổng kết các ưu điểm và mặt còn tồn tại của hệ thống; vạch ra các định hướng nghiên cứu nâng cao cho đề tài trong tương lai.


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

Kết quả thực nghiệm

  1. Thi công hoàn chỉnh mô hình phần cứng và giao diện: Chế tạo thành công sa bàn ngã tư kích thước $45\text{ cm} \times 45\text{ cm}$ với 4 trụ đèn giao thông hoạt động ổn định, kết nối thông suốt với giao diện giám sát MATLAB qua cổng UART.
  2. Khả năng tự động thích nghi chu kỳ đèn: Hệ thống đã tự động tính toán và điều tiết thời gian đèn xanh theo đúng thuật toán định trước:
    • Khi lượng xe trên làn ít ($< 2\text{ xe}$): thời gian đèn xanh cấp là $25\text{ giây}$.
    • Khi lượng xe tăng lên mức trung bình ($4 - 7\text{ xe}$): thời gian đèn xanh tăng lên $29\text{ giây}$.
    • Khi mật độ phương tiện đông ($> 17\text{ xe}$): thời gian đèn xanh tự động nới rộng lên mức tối đa $50\text{ giây}$, giúp giải tỏa áp lực phương tiện cho làn ưu tiên.
  3. Tính năng điều khiển linh hoạt và xử lý lỗi: Giao diện cho phép chuyển đổi mượt mà giữa chế độ tự động và chế độ điều khiển thời gian bằng tay; tích hợp hộp thoại cảnh báo lỗi khi người vận hành nhập chuỗi ký tự sai định dạng (không phải ký tự số).
Tiêu chí Hệ thống đèn tín hiệu cố định truyền thống Hệ thống xử lý ảnh của đồ án
Cơ chế phân bổ thời gian Cố định theo chu kỳ cài đặt sẵn, không đổi theo mật độ Tự động thay đổi thời gian đèn xanh ($25\text{s} - 50\text{s}$) theo số xe thực tế
Dữ liệu đầu vào Không có (hoặc cảm biến từ đắt tiền, dễ hỏng) Hình ảnh trích xuất từ luồng video camera giao thông
Giao diện giám sát Không có giao diện tương tác trực quan Giao diện GUI trên PC hiển thị ảnh chụp, số xe đếm được, thời gian đếm lùi
Chi phí triển khai Hệ thống nhập ngoại có giá hàng tỉ đồng/chốt Sử dụng linh kiện thông dụng (Arduino Mega, LED, PC) với chi phí thấp

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

  • Làm chủ được quy trình kết hợp giữa thuật toán thị giác máy tính trên PC và phần cứng điều khiển nhúng vi điều khiển trong bài toán tự động hóa điều khiển giao thông đô thị.
  • Đề xuất giải pháp kỹ thuật có chi phí chế tạo thấp, dễ bảo trì, mở ra hướng ứng dụng tự chủ công nghệ điều khiển giao thông thông minh trong nước mà không phụ thuộc vào các giải pháp nhập khẩu đắt đỏ.

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

Hạn chế

  • Dữ liệu hình ảnh đầu vào mới chỉ được thử nghiệm trên các đoạn video quay bằng điện thoại di động trong điều kiện ban ngày, thời tiết tốt và đủ ánh sáng; chưa được thử nghiệm trực tiếp với camera gắn trên cao tại các giao lộ thực tế.
  • Thuật toán đếm phương tiện dựa trên kỹ thuật trừ nền và hình thái học có thể gặp sai số khi các phương tiện di chuyển quá sát nhau (bị dính chùm đối tượng) hoặc trong điều kiện môi trường phức tạp (ban đêm, trời mưa, bóng rổ của cây cối và nhà cửa).
  • Hệ thống xem các phương tiện giao thông là đồng nhất, chưa phân loại chi tiết kích thước giữa xe máy, ô tô con và xe buýt/xe tải để gán trọng số thời gian tối ưu hơn.

Hướng phát triển

  • Tích hợp camera IP độ phân giải cao ghi hình trực tiếp tại các cột đèn giao thông thực địa để truyền dữ liệu thời gian thực về máy chủ xử lý.
  • Nghiên cứu áp dụng các mô hình học sâu (Deep Learning) chuyên dụng cho phát hiện và phân loại đối tượng (như YOLO, SSD) để phân loại chính xác từng loại phương tiện và nâng cao độ chính xác nhận dạng trong điều kiện ban đêm, thiếu sáng hoặc thời tiết xấu.
  • Mở rộng mạng lưới kết nối đồng bộ nhiều nút giao thông liền kề theo mô hình "làn sóng xanh" (Green Wave) nhằm tối ưu hóa lưu lượng trên toàn trục đường đô thị.

Giá trị tham khảo

Đồ án là tài liệu tham khảo phù hợp cho sinh viên, học viên và kỹ sư thuộc các chuyên ngành Kỹ thuật Điện tử - Truyền thông, Kỹ thuật Điều khiển & Tự động hóa, Cơ điện tử và Công nghệ Thông tin.

Các nội dung có giá trị ứng dụng và tham khảo cao bao gồm:

  • Kỹ thuật lập trình và giao tiếp liên nền tảng: Phương pháp xây dựng giao diện GUI và thiết lập kênh truyền thông nối tiếp UART chuẩn TTL giữa phần mềm MATLAB và kit vi điều khiển Arduino Mega 2560.
  • Quy trình xử lý ảnh ứng dụng: Phương pháp chuẩn hóa ảnh, tách ngưỡng động Otsu, các giải thuật lọc nhiễu không gian và kỹ thuật hình thái học trong bài toán đếm đối tượng 2D.
  • Thiết kế mạch điều khiển hiển thị: Cách tính toán công suất nguồn, lựa chọn điện trở hạn dòng và sơ đồ quét đa hợp cho hệ thống nhiều module LED 7 đoạn đôi kết hợp LED đơn sắc.

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

1. Hệ thống sử dụng thuật toán và các hàm nào trong MATLAB để phát hiện và đếm số lượng xe?
Hệ thống sử dụng phương pháp trừ nền giữa ảnh nền và ảnh có xe, chuyển đổi sang ảnh xám bằng hàm rgb2gray(), tìm ngưỡng tự động theo thuật toán Otsu bằng hàm graythresh(), nhị phân hóa bằng hàm im2bw()/imbinarize(), khử nhiễu và nối liền vùng bằng các phép dãn nở, xói mòn, xóa vùng nhỏ bằng hàm bwareaopen(), sau đó áp dụng thuật toán dán nhãn thành phần liên thông để đếm số lượng vật thể xe độc lập.

2. Bảng quy đổi thời gian đèn xanh theo số lượng xe được thiết lập cụ thể như thế nào?
Thời gian đèn xanh được chia thành 7 mức: dưới 2 xe là $25\text{s}$; từ 3 đến 4 xe là $27\text{s}$; từ 5 đến 7 xe là $29\text{s}$; từ 8 đến 10 xe là $35\text{s}$; từ 11 đến 13 xe là $40\text{s}$; từ 14 đến 17 xe là $45\text{s}$; và trên 17 xe là $50\text{s}$. Thời gian đèn đỏ của làn đối diện bằng thời gian đèn xanh cộng thêm 3 giây đèn vàng.

3. Phần cứng mô hình tiêu thụ tổng dòng điện bao nhiêu và sử dụng giải pháp cấp nguồn nào?
Tổng dòng điện tiêu thụ định mức của toàn mạch là $190\text{ mA}$ ở điện áp $5\text{VDC}$ (bao gồm Arduino Mega $30\text{ mA}$, 12 LED đơn $120\text{ mA}$ và 4 LED 7 đoạn đôi $40\text{ mA}$). Hệ thống sử dụng nguồn cấp ngoài là Adapter $9\text{V} - 1\text{A}$, hạ áp xuống $5\text{V}$ thông qua chip ổn áp AMS1117 tích hợp trên bo mạch.

4. Dữ liệu đầu vào của hệ thống trong đồ án được thu thập bằng cách nào?
Do điều kiện thực tế chưa thể gắn camera trực tiếp trên đỉnh cột đèn ngoài đường, nhóm tác giả đã thu thập dữ liệu bằng cách quay 4 đoạn video thực tế của 2 làn đường bằng điện thoại thông minh vào ban ngày trong điều kiện ánh sáng tốt, sau đó nhúng vào MATLAB để trích xuất ảnh định dạng PNG mô phỏng luồng dữ liệu camera thực tế.

5. Hệ thống xử lý thế nào khi người dùng nhập sai định dạng ở chế độ điều khiển bằng tay?
Khi người vận hành nhập dữ liệu ở dạng ký tự chữ hoặc ký hiệu không phải là số, giao diện điều khiển trên MATLAB sẽ kích hoạt cơ chế kiểm tra ngoại lệ, hiển thị hộp thoại cảnh báo lỗi và yêu cầu người dùng nhập lại dữ liệu dưới dạng số hợp lệ.


Kết luận

Đồ án tốt nghiệp đã thiết kế và thi công thành công mô hình hệ thống điều khiển đèn giao thông tự động thích nghi dựa trên công nghệ xử lý ảnh số kết hợp vi điều khiển Arduino Mega 2560. Hệ thống chứng minh khả năng tự động phân tích mật độ xe từ hình ảnh để phân bổ thời gian đèn xanh linh hoạt từ 25 đến 50 giây, góp phần nâng cao hiệu quả lưu thông so với các chu kỳ đèn cố định truyền thống. Mặc dù dữ liệu thực nghiệm còn giới hạn ở các đoạn video quay mô phỏng ban ngày, kết quả nghiên cứu đã tạo nền tảng thực nghiệm vững chắc cho hướng phát triển các hệ thống giao thông thông minh (ITS) tự chủ công nghệ với chi phí thấp trong tương lai.