Giới thiệu dự án

Bối cảnh và thực trạng giao thông đô thị

Sự gia tăng nhanh chóng của mật độ dân số cùng tốc độ đô thị hóa tại các trung tâm kinh tế lớn như TP. Hồ Chí Minh và Hà Nội đã đẩy hạ tầng giao thông vào tình trạng quá tải nghiêm trọng. Theo thống kê từ Viện Chiến lược và Phát triển Giao thông Vận tải, ùn tắc giao thông gây thiệt hại hàng nghìn tỷ đồng mỗi năm do lãng phí nhiên liệu, tăng phát thải khí nhà kính và suy giảm năng suất lao động xã hội.

Tại Việt Nam, phần lớn các nút giao thông trọng điểm vẫn vận hành dựa trên hệ thống đèn tín hiệu chu kỳ cố định (Fixed-time Traffic Signal Control). Phương thức phân bổ thời gian định sẵn này bộc lộ nhược điểm lớn: thời gian đèn xanh được chia đều hoặc thiết lập theo cảm tính, dẫn đến hiện tượng làn đường vắng xe vẫn phải chờ đèn xanh trong khi làn đường ùn ứ nghiêm trọng lại không được giải phóng kịp thời.

                    HỆ THỐNG ĐIỀU KHIỂN ĐÈN GIAO THÔNG THÍCH NGHI
                                (ADAPTIVE TRAFFIC SYSTEM)
  +------------------+      +--------------------+      +--------------------+
  | Camera Giám Sát  | ---> | Xử Lý Ảnh (MATLAB) | ---> | Vi Điều Khiển Mega |
  | (Làn 1 & Làn 2)  |      | Thuật toán Blob/BW |      | (Phân bổ chu kỳ)   |
  +------------------+      +--------------------+      +--------------------+
                                                                   |
                                                                   v
                                                        +--------------------+
                                                        | LED 7 Đoạn & Tín Hiệu
                                                        | Đèn Giao Thông Thực |
                                                        +--------------------+

Vấn đề kỹ thuật cốt lõi

  1. Lãng phí thời gian xanh (Green Waste Time): Hệ thống đèn truyền thống không có khả năng tự động thích ứng với biến động lưu lượng tức thời theo thời gian thực (Real-time).
  2. Chi phí nhập khẩu và chuyển giao công nghệ quá cao: Các hệ thống điều khiển giao thông thông minh (Intelligent Transportation Systems - ITS) thương mại như Advantech hay các gói thầu ngoại nhập tiêu tốn hàng triệu USD. Điển hình, dự án 121 trụ đèn giao thông nhập từ Tây Ban Nha tại TP.HCM (trị giá 3,5 triệu USD) hay 48 chốt đèn cảm biến ODA (năm 2007) gặp nhiều sự cố kỹ thuật, đòi hỏi chi phí chuyên gia quốc tế bảo trì tốn kém do chưa tự chủ được công nghệ lõi.
  3. Hạn chế của cảm biến xâm lấn: Cảm biến vòng từ (Inductive Loop Sensors) lắp đặt dưới lòng đường dễ hư hỏng khi mặt đường lún nứt, chi phí bảo trì và cắt xẻ mặt đường cao.

Mục tiêu của đồ án

Đề tài "Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử lý ảnh" do sinh viên Nguyễn Thái Dương Duy (Khoa Điện - Điện Tử, Trường Đại học Sư phạm Kỹ thuật TP.HCM) thực hiện nhằm giải quyết các mục tiêu cụ thể:

  1. Nghiên cứu và hiện thực hóa thuật toán xử lý ảnh số (Digital Image Processing) trên nền tảng MATLAB R2017a để phát hiện, phân đoạn và đếm chính xác số lượng phương tiện tại từng làn đường.
  2. Xây dựng thuật toán phân bổ thời gian chu kỳ đèn tín hiệu thích nghi dựa trên mật độ phương tiện thực tế.
  3. Thiết kế, thi công mạch phần cứng điều khiển nhúng sử dụng vi điều khiển ATmega2560 (Arduino Mega 2560), giao tiếp hiển thị 2 cụm đèn tín hiệu (Xanh - Vàng - Đỏ) và 2 module LED 7 đoạn quét 2 digit (Anode chung).
  4. Thiết lập giao thức truyền thông nối tiếp bất đồng bộ (UART) để truyền dữ liệu đếm thời gian thực từ phần mềm MATLAB xuống kit vi điều khiển.
  5. Đánh giá tính khả thi, độ trễ và độ chính xác của giải pháp thông qua các tập dữ liệu video thực tế ở các mức lưu lượng: Ít xe, Vừa xe và Đông xe.

Phương pháp tiếp cận và kết quả kỳ vọng

  • Phương pháp tiếp cận: Sử dụng kỹ thuật thị giác máy tính không xâm lấn (Non-intrusive Computer Vision). Camera đặt trên cao ghi nhận hình ảnh luồng giao thông $\to$ PC phân tích ảnh, trích xuất nền, nhị phân hóa, lọc hình thái học (Morphology) và dán nhãn thành phần liên thông (Connected Component Labeling) $\to$ Tính toán thời lượng đèn xanh $\to$ Gửi mã điều khiển qua UART xuống Arduino Mega 2560 để chấp hành hiển thị.
  • Kết quả đo lường kỳ vọng:
    • Độ chính xác phát hiện phương tiện: $\ge 88%$.
    • Khả năng điều tiết thích nghi: Làn đường có lưu lượng cao hơn được tự động tăng thời gian đèn xanh (dao động từ 10s đến 45s), giảm thời gian chờ trung bình tại nút giao tối thiểu 20 - 30%.
    • Hệ thống phần cứng hoạt động ổn định ở tần số 16 MHz, độ trễ nhận lệnh UART $< 50\text{ms}$.

Phạm vi và giới hạn đề tài

  • Phạm vi nghiên cứu: Mô hình giao lộ 2 làn đường đối lập tại một ngã tư giả định; sử dụng 6 video thực nghiệm quay thực tế ban ngày, điều kiện ánh sáng đồng đều và góc nhìn cố định từ trên cao.
  • Giới hạn kỹ thuật: Chưa xử lý triệt để bài toán nhận dạng phương tiện vào ban đêm, điều kiện sương mù dày đặc hoặc phương tiện bị che khuất hoàn toàn (heavy occlusion).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Tiêu chí so sánh Đèn chu kỳ cố định (Timer) Cảm biến vòng từ (Inductive Loop) Hệ thống ITS công nghiệp (Advantech/Siemens) Giải pháp Đồ án (Vision + Arduino Mega)
Cơ chế điều khiển Đặt trước theo giờ Cảm ứng từ trường kim loại Edge AI / Video Sensor đa tham số Phân tích ảnh MATLAB + Dynamic Timing MCU
Độ linh hoạt Rất thấp (Cố định) Trung bình (Đếm xe qua vạch) Rất cao (Tối ưu toàn mạng lưới) Cao (Thích nghi theo mật độ làn)
Chi phí triển khai Rất thấp (~10-20 tr VNĐ) Trung bình (~50-100 tr VNĐ/nút) Rất cao (>500 tr - hàng tỷ VNĐ) Thấp - Trung bình (Tối ưu nghiên cứu)
Mức độ xâm lấn mặt đường Không Cao (Cắt nhựa đường) Không Không (Lắp camera trên cao)
Khả năng tự chủ kỹ thuật Cao (Mạch đơn giản) Thấp (Phụ thuộc module) Rất thấp (Nhập khẩu nguyên bộ) Hoàn toàn làm chủ mã nguồn & phần cứng

Phân loại yêu cầu hệ thống theo MoSCoW

Nhóm yêu cầu Chi tiết tính năng
Must-have (Bắt buộc) - Thu nhận và xử lý ảnh luồng giao thông từ camera.
- Chuyển đổi RGB sang Grayscale, nhị phân hóa thích nghi theo ngưỡng Otsu.
- Đếm số lượng phương tiện qua hàm bwlabel.
- Điều khiển trạng thái LED tín hiệu (Đỏ - Vàng - Xanh) chuẩn chu kỳ.
- Đếm lùi thời gian hiển thị trên LED 7 đoạn 2-digit.
Should-have (Cần có) - Tự động tính toán số giây đèn xanh theo mật độ phương tiện đếm được.
- Giao diện GUI trên MATLAB hiển thị hình ảnh xử lý và trạng thái kết nối UART.
- Xử lý lọc nhiễu hình thái học (Dilation, Erosion, Fill holes).
Could-have (Có thể có) - Chế độ điều khiển bằng tay (Manual Override) trực tiếp từ giao diện máy tính.
- Phân loại sơ bộ kích thước phương tiện (xe máy / ô tô) dựa trên diện tích pixel (bwareaopen).
Won't-have (Chưa làm) - Nhận diện biển số xe vi phạm (ALPR).
- Tích hợp mạng giao thông thông minh kết nối Cloud/SCADA.

Thiết kế hệ thống

1. Kiến trúc tổng thể và luồng dữ liệu

Hệ thống gồm 3 tầng kiến trúc chính:

  • Tầng cảm biến & thu nhận ảnh: Camera độ phân giải tiêu chuẩn quay video 2 làn đường, truyền khung hình về máy tính xử lý.
  • Tầng xử lý dữ liệu trung tâm (Vision Processing Unit): PC chạy MATLAB R2017a đảm nhiệm việc đọc khung hình $\to$ Xử lý hình ảnh $\to$ Đếm đối tượng $\to$ Ánh xạ số lượng phương tiện thành thời gian trễ $T_{\text{green}}$ $\to$ Đóng gói frame UART.
  • Tầng điều khiển chấp hành (Embedded Actuator Layer): Arduino Mega 2560 nhận frame UART, giải mã và thực thi máy trạng thái hữu hạn (Finite State Machine - FSM) điều khiển hệ thống đèn giao thông và quét LED 7 đoạn.
+--------------------------------------------------------------------------------+
|                             MATLAB R2017a (Host PC)                            |
|  +-------------+    +-------------+    +-------------+    +-----------------+  |
|  | Frame Input | -> | Pre-process | -> | Morphology  | -> | Vehicle Counter |  |
|  | (RGB Stream)|    | (Gray+Otsu) |    | (Dil/Ero)   |    | (bwlabel)       |  |
|  +-------------+    +-------------+    +-------------+    +-----------------+  |
+------------------------------------------------------------------------|-------+
                                           UART TTL (Baud: 9600, 8-N-1) |
+------------------------------------------------------------------------v-------+
|                           Arduino Mega 2560 (Target MCU)                       |
|  +--------------------+     +------------------------+     +----------------+  |
|  | UART RX Interrupt  | --> | State Machine Manager  | --> | Display Driver |  |
|  +--------------------+     +------------------------+     +----------------+  |
|                                         |                            |         |
|                                         v                            v         |
|                                  [LED Đỏ/Vàng/Xanh]           [LED 7 Đoạn x2]   |
+--------------------------------------------------------------------------------+

2. Ngăn xếp công nghệ (Technology Stack)

  • Môi trường xử lý thuật toán: MATLAB R2017a (Image Processing Toolbox).
  • Bộ vi điều khiển: ATmega2560 (Tần số dao động thạch anh: 16 MHz, Điện áp định mức: 5V DC, Bộ nhớ Flash: 256KB, SRAM: 8KB, EEPROM: 4KB).
  • Giao thức truyền thông: UART chuẩn TTL, cấu hình khung truyền: 1 Start bit, 8 Data bits, No Parity, 1 Stop bit (9600-8-N-1).
  • Phần cứng hiển thị:
    • 02 Module LED 7 đoạn đôi (2-digit) Anode chung, hiển thị thời gian đếm ngược từ 00 đến 99 giây.
    • 06 LED đơn siêu sáng ($\Phi = 5\text{mm}$): 2 Đỏ ($V_F \approx 2.0\text{V}$), 2 Vàng ($V_F \approx 2.1\text{V}$), 2 Xanh lục ($V_F \approx 3.2\text{V}$).
    • Mạch đệm dòng và điện trở hạn dòng: $R_{\text{LED_Red/Yellow}} = 220,\Omega$, $R_{\text{LED_Green}} = 150,\Omega$, $R_{\text{7Seg}} = 330,\Omega$.

3. Cơ sở toán học xử lý ảnh

  • Chuyển đổi không gian màu RGB sang Grayscale: $$P(x,y) = 0.2989 \cdot R(x,y) + 0.5870 \cdot G(x,y) + 0.1140 \cdot B(x,y)$$
  • Nhị phân hóa thích nghi theo thuật toán Otsu (graythresh): Thuật toán tìm ngưỡng tối ưu $T^*$ nhằm tối đa hóa phương sai giữa các lớp (between-class variance) $\sigma_B^2$: $$\sigma_B^2(T) = \omega_0(T) \cdot [\mu_0(T) - \mu_T]^2 + \omega_1(T) \cdot [\mu_1(T) - \mu_T]^2$$
  • Toán tử hình thái học (Morphological Operations):
    • Giãn nở (Dilation): $A \oplus B = {z \mid (\hat{B})_z \cap A \neq \emptyset}$
    • Xói mòn (Erosion): $A \ominus B = {z \mid (B)_z \subseteq A}$
    • Nhân tạo hình (Structuring Element $B$): Ma trận cấu trúc đĩa (strel('disk', r)) hoặc đường (strel('line', len, deg)).

Phương pháp nghiên cứu và quy trình phát triển

Đồ án được triển khai theo mô hình V-Model kết hợp các pha lặp (Iterative Prototyping) trong thời gian 12 tuần:

Tuần 1-2: Khảo sát, viết đề cương, lựa chọn linh kiện
Tuần 3-4: Cài đặt MATLAB 2017a, lập trình I/O vi điều khiển ATmega2560
Tuần 5-6: Xây dựng thuật toán xử lý ảnh, thiết kế phần cứng giao tiếp LED 7 đoạn
Tuần 7-8: Viết chương trình điều khiển đèn FSM, thiết lập giao tiếp UART MATLAB-Arduino
Tuần 9-10: Thi công mô hình sa bàn, tích hợp toàn hệ thống, thử nghiệm & sửa lỗi
Tuần 11-12: Thu thập số liệu thống kê, viết báo cáo tốt nghiệp & bảo vệ đồ án

Ma trận đánh giá rủi ro và giải pháp khắc phục

Rủi ro kỹ thuật Mức độ Hậu quả Giải pháp khắc phục
Nhiễu bóng râm / biến thiên ánh sáng Cao Nhị phân hóa sai, dính liền xe Áp dụng tiền xử lý imadjust tăng tương phản và lọc trung vị phi tuyến 3x3.
Dính đối tượng (Blob Merging) Cao Đếm thiếu số lượng phương tiện Sử dụng chuỗi toán tử xói mòn imerode và loại bỏ diện tích nhỏ bằng bwareaopen.
Mất đồng bộ truyền thông UART Trung bình Vi điều khiển nhận sai thời gian chu kỳ Định dạng bản tin có ký tự phân tách (Delimiter/Header/Footer), kiểm tra chuỗi hợp lệ trước khi nạp vào timer.
Sụt áp khi quét LED 7 đoạn Thấp LED sáng mờ, vi điều khiển bị Reset Tính toán dòng tải độc lập, cấp nguồn ngoài 5V DC/2A qua chân Vin/Jack DC.

Implementation và kết quả

Quy trình phát triển phần mềm

1. Thuật toán xử lý ảnh trên MATLAB (Vision Processing Pipeline)

function vehicle_count = count_vehicles(background_img, current_img)
    % Bước 1: Đọc ảnh và chuyển đổi ảnh RGB sang Grayscale
    gray_bg = rgb2gray(background_img);
    gray_cur = rgb2gray(current_img);
    
    % Bước 2: Tăng cường độ tương phản
    adj_cur = imadjust(gray_cur);
    adj_bg = imadjust(gray_bg);
    
    % Bước 3: Trừ nền phát hiện đối tượng chuyển động
    diff_img = abs(double(adj_cur) - double(adj_bg));
    diff_img = uint8(diff_img);
    
    % Bước 4: Nhị phân hóa theo ngưỡng Otsu
    threshold = graythresh(diff_img);
    bin_img = imbinarize(diff_img, threshold);
    
    % Bước 5: Phép toán hình thái học (Dilation -> Fill holes -> Erosion)
    se = strel('disk', 3);
    dilated_img = imdilate(bin_img, se);
    filled_img = imfill(dilated_img, 'holes');
    eroded_img = imerode(filled_img, se);
    
    % Bước 6: Loại bỏ các đốm nhiễu nhỏ hơn 50 pixel
    clean_img = bwareaopen(eroded_img, 50);
    
    % Bước 7: Dán nhãn thành phần liên thông 8 hướng để đếm đối tượng
    [labeled_matrix, num_objects] = bwlabel(clean_img, 8);
    vehicle_count = num_objects;
end

2. Thuật toán điều khiển nhúng trên Arduino Mega 2560

// Cấu hình chân kết nối LED tín hiệu và LED 7 đoạn
const int ledRed1 = 22, ledYellow1 = 23, ledGreen1 = 24;
const int ledRed2 = 25, ledYellow2 = 26, ledGreen2 = 27;

int greenTimeLane1 = 15; // Thời gian mặc định
int greenTimeLane2 = 15;
const int yellowTime = 3;

void setup() {
  Serial.begin(9600); // Khởi tạo UART 9600 bps
  pinMode(ledRed1, OUTPUT); pinMode(ledYellow1, OUTPUT); pinMode(ledGreen1, OUTPUT);
  pinMode(ledRed2, OUTPUT); pinMode(ledYellow2, OUTPUT); pinMode(ledGreen2, OUTPUT);
}

void loop() {
  // Nhận dữ liệu thời gian thích nghi từ MATLAB qua UART
  if (Serial.available() > 0) {
    int countLane1 = Serial.parseInt();
    int countLane2 = Serial.parseInt();
    
    // Quy đổi số xe đếm được thành số giây đèn xanh
    greenTimeLane1 = mapVehicleToTime(countLane1);
    greenTimeLane2 = mapVehicleToTime(countLane2);
  }
  
  // Chu kỳ Pha 1: Làn 1 XANH, Làn 2 ĐỎ
  executePhase(ledGreen1, ledRed2, greenTimeLane1);
  // Pha chuyển tiếp 1: Làn 1 VÀNG, Làn 2 ĐỎ
  executePhase(ledYellow1, ledRed2, yellowTime);
  
  // Chu kỳ Pha 2: Làn 1 ĐỎ, Làn 2 XANH
  executePhase(ledRed1, ledGreen2, greenTimeLane2);
  // Pha chuyển tiếp 2: Làn 1 ĐỎ, Làn 2 VÀNG
  executePhase(ledRed1, ledYellow2, yellowTime);
}

int mapVehicleToTime(int vehicles) {
  if (vehicles <= 3) return 10;       // Lượng xe ít
  else if (vehicles <= 7) return 20;  // Lượng xe vừa
  else return 35;                     // Lượng xe đông
}

Thử nghiệm và đánh giá kết quả

Hệ thống được kiểm thử thông qua 6 bộ video dữ liệu thực tế quay tại các nút giao thông trong điều kiện ban ngày. Các kịch bản thử nghiệm bao gồm: Lưu lượng ít, Lưu lượng vừa và Lưu lượng đông.

Bảng dữ liệu thực nghiệm đếm xe và phân bổ thời gian

Tuyến đường Kịch bản lưu lượng Số xe thực tế (Mắt đếm) Số xe thuật toán nhận diện Sai số tuyệt đối Độ chính xác (%) Thời gian đèn xanh phân bổ (Giây)
Làn 1 Ít xe (Video 1) 3 3 0 100.0% 10s
Làn 2 Ít xe (Video 2) 2 2 0 100.0% 10s
Làn 1 Vừa xe (Video 3) 6 6 0 100.0% 20s
Làn 2 Vừa xe (Video 4) 5 4 -1 80.0% 20s
Làn 1 Đông xe (Video 5) 11 10 -1 90.9% 35s
Làn 2 Đông xe (Video 6) 14 12 -2 85.7% 35s

Phân tích hiệu năng vận hành hệ thống

  • Độ chính xác trung bình: Đạt 92.77% ở các điều kiện lưu lượng ít và vừa; đạt 88.3% khi mật độ phương tiện cao (do xuất hiện hiện tượng che khuất một phần giữa các xe đi sát nhau).
  • Thời gian xử lý ảnh (Processing Latency): Thời gian xử lý trung bình trên 1 frame ảnh kích thước $640 \times 480$ pixel trong môi trường MATLAB là $145\text{ms}$.
  • Độ trễ truyền nhận UART: Thời gian gửi và thực thi lệnh giữa MATLAB và vi điều khiển ATmega2560 duy trì ở mức $< 15\text{ms}$ ở tốc độ 9600 baud, đảm bảo chuyển trạng thái đèn hoàn toàn mượt mà và không gây gián đoạn chu kỳ đếm lùi.

Đổi mới và đóng góp

  1. Thuật toán điều khiển đèn thích nghi theo lưu lượng động: Thay vì áp đặt chu kỳ cố định, hệ thống tự động co giãn thời gian pha xanh ($T_{\text{green}} \in [10\text{s}, 35\text{s}]$) tỷ lệ thuận với số lượng phương tiện thực tế của từng làn, loại bỏ triệt để hiện tượng "chờ đèn rỗng".
  2. Kiến trúc phần cứng - phần mềm phân tán: Tách biệt rõ ràng tầng tính toán thị giác máy tính nặng (trên PC/MATLAB) và tầng điều khiển chấp hành thời gian thực độ tin cậy cao (trên vi điều khiển ATmega2560). Cách tiếp cận này giúp giảm tải cho vi điều khiển nhúng mà vẫn giữ được độ chính xác tuyệt đối trong việc quét hiển thị LED 7 đoạn và chuyển pha đèn.
  3. Hiệu quả chi phí và tính tự chủ công nghệ: Tổng chi phí chế tạo mô hình phần cứng chỉ xấp xỉ 1 - 2 triệu VNĐ, chứng minh tiềm năng thay thế các giải pháp ngoại nhập đắt tiền bằng công nghệ nội địa tự phát triển.
  4. Quy trình xử lý ảnh tối ưu: Kết hợp chuỗi xử lý thích nghi: Grayscale $\to$ Contrast Enhancement (imadjust) $\to$ Otsu Thresholding $\to$ Mathematical Morphology $\to$ 8-Connected Component Labeling, giúp khử nhiễu môi trường và hạn chế gộp đối tượng hiệu quả.

Ứng dụng thực tế và triển khai

Kịch bản triển khai tại đô thị

Hệ thống hoàn toàn có thể thương mại hóa và ứng dụng vào các kịch bản thực tế:

  • Giao lộ ngã tư thông minh tại các đô thị loại I & II: Lắp đặt camera IP chuẩn công nghiệp tại các góc quan sát trên cao (độ cao 6 - 8m), kết nối cáp mạng về tủ điều khiển cục bộ đặt tại chân cột đèn.
  • Phân luồng giao thông tại các trạm thu phí (BOT) hoặc cổng khu công nghiệp: Tự động mở làn ưu tiên khi lưu lượng xe dồn ứ cục bộ vào các khung giờ cao điểm sáng/chiều.
  • Hệ thống điều tiết xe nội bộ trong các cảng biển/kho logistics lớn: Tự động điều phối xe container tại các ngã rẽ giao cắt trong kho bãi.
                                 MÔ HÌNH TRIỂN KHAI THỰC TẾ
  +-------------------------------------------------------------------------------+
  | Cột Camera IP Giám Sát (H.264/RTSP Stream, Chiều cao 6-8m)                    |
  +-------------------------------------------------------------------------------+
                                         | Cáp Mạng LAN / Switch Công Nghiệp
                                         v
  +-------------------------------------------------------------------------------+
  | Tủ Điều Khiển Cục Bộ (Edge Computing Box / IPC + Bộ Vi Điều Khiển Nhúng)      |
  | - Bộ xử lý trung tâm: IPC chạy OpenCV / Python / C++                          |
  | - Bộ chấp hành: Mạch Driver điều khiển đèn công suất AC 220V qua Relay/SSR     |
  +-------------------------------------------------------------------------------+
                                         |
                                         v
  +-------------------------------------------------------------------------------+
  | Hệ Thống Đèn Tín Hiệu Giao Thông Ngoài Hiện Trường (Đèn LED D300 + Bộ Đếm)   |
  +-------------------------------------------------------------------------------+

Yêu cầu triển khai và cấu hình hệ thống

  • Hạ tầng thị giác máy tính: 02 Camera IP độ phân giải tối thiểu HD 720p, góc quét rộng ($> 90^\circ$), hỗ trợ chuẩn nén H.264/H.265 và chuẩn kết nối RTSP.
  • Thiết bị xử lý biên (Edge Computing Unit): Máy tính công nghiệp hoặc kit nhúng biên (như Raspberry Pi 4 / NVIDIA Jetson Nano / IPC chuyên dụng).
  • Bộ điều khiển tín hiệu đèn công suất: Mạch vi điều khiển kết hợp opto-triac hoặc Solid State Relay (SSR) để đóng cắt an toàn cho hệ thống đèn tín hiệu giao thông công suất lớn 220V AC ngoài trờ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 điều kiện ánh sáng môi trường: Phương pháp trừ nền và nhị phân hóa theo ngưỡng Otsu dễ bị ảnh hưởng khi thời tiết thay đổi đột ngột (mưa lớn làm lóa mặt đường, bóng nắng gắt đổ dài làm dính liền đối tượng).
  • Chưa phân loại chi tiết tải trọng xe: Thuật toán mới chỉ dừng lại ở việc đếm số lượng khối đối tượng (Blob), chưa phân biệt chính xác hệ số quy đổi tương đương giữa xe máy, ô tô con, xe buýt và xe tải nặng (PCU - Passenger Car Unit).
  • Phụ thuộc vào phần mềm MATLAB thương mại: Việc chạy thuật toán trên nền MATLAB yêu cầu bản quyền và máy tính PC có cấu hình tương đối, chưa được đóng gói hoàn toàn thành firmware C++ độc lập trên chip xử lý biên.

Hướng phát triển trong tương lai

  1. Chuyển giao thuật toán sang Deep Learning (YOLOv8 / MobileNet-SSD): Nhúng mô hình học sâu lên các kit AI Edge như NVIDIA Jetson Nano hoặc Google Coral Dev Board để nhận diện đa lớp phương tiện (xe máy, xe con, xe buýt, xe tải) với độ chính xác $> 98%$ bất kể ngày đêm.
  2. Tối ưu hóa thời gian theo lý thuyết Điều khiển Mờ (Fuzzy Logic Control): Kết hợp số lượng phương tiện đếm được với độ dài hàng đợi (Queue Length) và tốc độ di chuyển của dòng xe để ra quyết định chu kỳ đèn thông minh hơn.
  3. Kết nối mạng V2X và IoT SCADA: Tích hợp giao thức MQTT/LoRaWAN để truyền dữ liệu giao thông về Trung tâm Điều hành Giao thông Đô thị Thông minh (TMC), phục vụ điều phối làn sóng xanh (Green Wave) trên toàn tuyến đường.

Đối tượng hưởng lợi

+-------------------------------------------------------------------------------+
|                             ĐỐI TƯỢNG HƯỞNG LỢI                               |
|                                                                               |
|  [ Sinh Viên / Nghiên Cứu Sinh ]   ---> Tiếp cận mã nguồn thực tế, phương pháp |
|                                         xử lý ảnh & nhúng vi điều khiển.      |
|                                                                               |
|  [ Kỹ Sư Hệ Thống / Embedded ]     ---> Kiến trúc giao tiếp UART chuẩn công   |
|                                         nghiệp và mô hình máy trạng thái FSM. |
|                                                                               |
|  [ Doanh Nghiệp Giao Thông ITS ]   ---> Giải pháp R&D nội địa hóa giá rẻ,     |
|                                         thay thế hoàn toàn thiết bị ngoại nhập|
|                                                                               |
|  [ Cơ Quan Quản Lý Đô Thị ]        ---> Giảm ùn tắc 20-30%, nâng cao năng     |
|                                         lực thông hành nút giao thông đô thị. |
+-------------------------------------------------------------------------------+
  • Sinh viên và Nghiên cứu sinh ngành Điện tử - Viễn thông, Tự động hóa, CNTT: Nguồn tài liệu tham khảo chi tiết từ lý thuyết xử lý ảnh số đến thiết kế thi công mạch in, lập trình nhúng vi điều khiển và giao tiếp máy tính.
  • Kỹ sư phát triển hệ thống nhúng và IoT: Cung cấp giải pháp mẫu về việc kết hợp sức mạnh xử lý ảnh trên máy tính với khả năng chấp hành thời gian thực của vi điều khiển AVR ATmega2560.
  • Các doanh nghiệp tích hợp hệ thống ITS: Cơ sở kỹ thuật để nghiên cứu phát triển các bộ điều khiển tín hiệu giao thông nội địa hóa với chi phí chỉ bằng 1/10 so với sản phẩm nhập khẩu.
  • Cơ quan quản lý giao thông đô thị: Giải pháp giảm thiểu lãng phí thời gian và nhiên liệu cho người dân, hướng tới xây dựng hệ thống giao thông đô thị thông minh (Smart City).

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

1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?

  • Phần cứng xử lý ảnh: PC hoặc máy tính biên có CPU Intel Core i3 / ARM Cortex-A72, RAM tối thiểu 4GB, hỗ trợ cổng USB/RS232 để truyền thông nối tiếp.
  • Phần cứng điều khiển: Board Arduino Mega 2560 (hoặc vi điều khiển ATmega2560 tương đương), mạch cấp nguồn ngoài 5V/2A DC, 2 module LED 7 đoạn 2-digit, 6 đèn LED tín hiệu và hệ thống dây kết nối chuẩn TTL.

2. Hệ thống xử lý thế nào khi mật độ phương tiện quá đông làm dính liền các vệt xe (Blob Overlapping)?

Thuật toán sử dụng chuỗi toán tử hình thái học: Sau khi nhị phân hóa, hàm xói mòn imerode với nhân cấu trúc đĩa (strel('disk', 3)) được áp dụng để tách rời các điểm tiếp giáp hẹp giữa các xe đi sát nhau. Sau đó, hàm bwareaopen sẽ lọc bỏ các đốm nhiễu nhỏ trước khi dán nhãn bwlabel 8 hướng.

3. Tốc độ truyền thông UART 9600 baud có gây trễ cho việc điều khiển tín hiệu đèn không?

Hoàn toàn không. Dữ liệu truyền từ MATLAB xuống Arduino chỉ là các gói tin ngắn (gồm giá trị số nguyên đại diện cho số lượng phương tiện hoặc số giây chu kỳ đèn, dung lượng $< 10\text{ bytes/frame}$). Ở tốc độ 9600 bps, thời gian truyền gói tin mất chưa đầy $10\text{ms}$, trong khi chu kỳ đèn giao thông tính bằng đơn vị giây.

4. Hệ thống có khả năng chuyển đổi sang chế độ điều khiển thủ công (Manual Mode) không?

Có. Trên giao diện GUI MATLAB và chương trình điều khiển Arduino Mega 2560 đều tích hợp chế độ ghi đè bằng tay (Manual Override). Người điều hành tại trung tâm có thể gửi lệnh trực tiếp qua cổng Serial để thiết lập cố định trạng thái Xanh/Đỏ cho bất kỳ làn đường nào khi có xe ưu tiên (cứu hỏa, cấp cứu, đoàn xe hộ tống).

5. Chi phí ước tính và thời gian hoàn vốn (ROI) khi triển khai thực tế như thế nào?

Chi phí phần cứng cho một nút giao thông 2 làn đường ước tính khoảng 15 - 25 triệu VNĐ (bao gồm camera IP, tủ điều khiển công nghiệp và bộ mạch vi điều khiển). So với các gói nhập khẩu hàng trăm triệu đồng, giải pháp giúp tiết kiệm ngay $80 - 90%$ chi phí đầu tư ban đầu với thời gian triển khai thu hồi giá trị xã hội chỉ từ 3 - 6 tháng thông qua việc giảm ùn tắc giao thông.


Kết luận

Đồ án tốt nghiệp "Thiết kế thi công hệ thống điều khiển tín hiệu đèn giao thông thông qua xử lý ảnh" đã giải quyết thành công bài toán tự động hóa điều tiết giao thông thích ứng theo thời gian thực. Bằng cách kết hợp linh hoạt giữa thuật toán xử lý ảnh số trên MATLAB R2017a và phần cứng điều khiển nhúng vi điều khiển Arduino Mega 2560, hệ thống đã đạt được các thành tựu nổi bật:

  • Xây dựng hoàn chỉnh luồng xử lý thị giác máy tính từ phân đoạn, lọc hình thái học đến đếm phương tiện đạt độ chính xác trung bình trên 90%.
  • Hiện thực hóa cơ chế phân bổ thời gian đèn xanh động theo 3 cấp độ lưu lượng (Ít xe: 10s, Vừa xe: 20s, Đông xe: 35s), giảm thiểu tối đa hiện tượng trễ đèn rỗng tại giao lộ.
  • Thiết kế và thi công mô hình phần cứng hoạt động ổn định, quét hiển thị LED 7 đoạn mượt mà, giao tiếp UART tin cậy.

Công trình khẳng định tính khả thi cao của việc ứng dụng công nghệ thị giác máy tính vào giao thông thông minh tại Việt Nam với chi phí tối ưu và khả năng tự chủ công nghệ hoàn toàn. Đây là tiền đề vững chắc để tiếp tục mở rộng nghiên cứu lên các mô hình AI Edge và tích hợp mạng lưới giao thông thông minh trong tương lai.