Bối cảnh và vấn đề nghiên cứu
Sự phát triển nhanh chóng của nền kinh tế và tốc độ đô thị hóa kéo theo nhu cầu đi lại, vận chuyển gia tăng, dẫn đến tình trạng ùn tắc giao thông nghiêm trọng tại các đô thị lớn. Ùn tắc giao thông gây thiệt hại trực tiếp đến nền kinh tế, làm giảm năng suất lao động và phát sinh chi phí xã hội. Nguyên nhân chính bắt nguồn từ việc cơ sở hạ tầng chưa đáp ứng kịp nhu cầu thực tế, kết hợp với việc định thời gian cho các chu kỳ đèn tín hiệu tại các nút giao hiện nay còn mang tính cố định, chưa linh hoạt theo mật độ phương tiện thực tế theo từng thời điểm.
Các giải pháp truyền thống như phân luồng thủ công bằng cảnh sát giao thông hoặc lập trình bộ điều khiển theo khung giờ cố định chỉ mang tính tương đối và tiêu tốn nhân lực. Tại các nước phát triển, hệ thống camera giám sát kết hợp giải thuật thông minh (như điều khiển mờ) đã được ứng dụng nhưng chi phí đầu tư rất lớn; ví dụ các hệ thống thương mại của Advantech sử dụng máy tính công nghiệp có giá lên đến hàng tỷ đồng cho mỗi nút giao. Tại Việt Nam, nhiều dự án nhập khẩu hệ thống đèn tín hiệu ngoại nhập (như dự án 121 trụ đèn giao thông của Tây Ban Nha trị giá 3,5 triệu USD hay 48 chốt đèn gắn cảm biến năm 2007) gặp nhiều sự cố kỹ thuật sau thời gian ngắn vận hành và phụ thuộc vào chuyên gia nước ngoài để khắc phục. Do đó, việc nghiên cứu làm chủ công nghệ, thiết kế hệ thống điều khiển tín hiệu đèn giao thông thích nghi dựa trên công nghệ xử lý ảnh với chi phí hợp lý là yêu cầu cấp thiết.
Mục tiêu nghiên cứu
Mục tiêu tổng quát của đề tài là xây dựng hệ thống tự động phát hiện, đếm số lượng phương tiện giao thông trên các làn đường thông qua xử lý ảnh thu nhận từ camera, từ đó gửi dữ liệu điều khiển xuống vi điều khiển để tự động phân bổ chu kỳ thời gian đèn xanh linh hoạt theo lưu lượng thực tế của từng tuyến đường tại nút giao.
Nhiệm vụ nghiên cứu
Đề tài xác định 8 nội dung nhiệm vụ cụ thể:
- Tìm hiểu nguyên lý hoạt động và cấu trúc phần cứng của kit Arduino Mega 2560.
- Tìm hiểu môi trường lập trình và các công cụ xử lý dữ liệu của phần mềm MATLAB.
- Cài đặt các thư viện hỗ trợ và thiết lập phương thức truyền thông giữa MATLAB và Arduino.
- Nghiên cứu các thuật toán phát hiện phương tiện giao thông và nguyên lý điều khiển đèn giao thông thực tế.
- Xây dựng quy trình tiền xử lý và trích xuất đặc trưng ảnh đầu vào.
- Thiết kế thuật toán đếm phương tiện và lập trình giao diện người dùng (GUI) trên MATLAB để mô phỏng thu thập và truyền dữ liệu.
- Lập trình chương trình điều khiển tín hiệu đèn và hiển thị thời gian trên kit Arduino Mega 2560.
- Lắp ráp mô hình thực nghiệm, chạy thử và đánh giá độ chính xác của toàn hệ thống.
Đố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ố (trừ nền, nhị phân hóa, phép toán hình thái học, gán nhãn thành phần liên thông), kit vi điều khiển ATmega2560, module hiển thị LED 7 đoạn và hệ thống đèn LED tín hiệu.
- Phạm vi không gian: Mô hình thử nghiệm giao lộ 2 tuyến đường (Làn 1 và Làn 2). Do giới hạn thực tế không thể lắp đặt camera trực tiếp lên trụ đèn ngoài đường phố, dữ liệu đầu vào được thu thập bằng cách quay video thực tế tại các tuyến đường đô thị bằng điện thoại thông minh ở góc nhìn từ trên cao.
- Phạm vi dữ liệu: Bộ dữ liệu gồm 6 video mẫu được ghi nhận vào ban ngày trong điều kiện ánh sáng và thời tiết tốt (2 video lưu lượng ít xe, 2 video lưu lượng vừa xe, 2 video lưu lượng đông xe).
Cơ sở lý thuyết và phương pháp
Khung lý thuyết xử lý ảnh số
Đề tài vận dụng quy trình xử lý ảnh số tiêu chuẩn gồm các giai đoạn: Thu nhận ảnh $\rightarrow$ Tiền xử lý $\rightarrow$ Phân đoạn ảnh $\rightarrow$ Biểu diễn và mô tả $\rightarrow$ Nhận dạng và đếm đối tượng.
- Chuyển đổi không gian màu: Ảnh màu RGB 24-bit ($1280 \times 720 \times 24$ bits) được chuyển đổi sang ảnh mức xám 8-bit (256 mức xám từ 0 đến 255) nhằm giảm tải khối lượng tính toán qua công thức:
$$P = 0.2989 \times R + 0.5870 \times G + 0.1140 \times B$$
- Cải thiện độ tương phản: Sử dụng hàm
imadjust() để giãn dải mức xám dựa trên lược đồ xám (histogram), làm nổi bật biên dạng phương tiện so với nền đường.
- Nhị phân hóa ảnh: Ứng dụng phương pháp xác định ngưỡng tự động Otsu qua hàm
graythresh() để chuyển đổi ảnh xám thành ảnh nhị phân với ngưỡng $T$:
$$g(x,y) = \begin{cases} 1 & \text{nếu } f(x,y) \ge T \ 0 & \text{nếu } f(x,y) < T \end{cases}$$
- Khử nhiễu: Khảo sát các mô hình nhiễu cộng ($X_{qs} = X_{gốc} + \eta$), nhiễu nhân ($X_{qs} = X_{gốc} \times \eta$) và nhiễu xung; ứng dụng bộ lọc trung bình không gian tuyến tính và lọc trung vị phi tuyến:
$$v(m,n) = \text{median} { y(m-k, n-l) \mid (k,l) \in W }$$
- Hình thái học và đếm đối tượng: Kết hợp phép giãn nở (
imdilate) và xói mòn (imerode) với phần tử cấu trúc (strel) để lấp đầy các khoảng trống bên trong đối tượng xe, dùng hàm bwareaopen() loại bỏ các đốm nhiễu kích thước nhỏ, sau đó áp dụng hàm gán nhãn thành phần liên thông 4-hướng (bwlabel) để xác định số lượng xe độc lập.
Cơ sở phần cứng và truyền thông
- Vi điều khiển trung tâm: Kit Arduino Mega 2560 sử dụng vi điều khiển ATmega2560 (tần số 16 MHz, 54 chân Digital I/O, 16 chân Analog, bộ nhớ Flash 256 KB, SRAM 8 KB, EEPROM 4 KB).
- Chuẩn giao tiếp UART: Truyền nhận dữ liệu bất đồng bộ giữa máy tính (MATLAB) và Arduino qua giao thức nối tiếp nối tiếp chuẩn TTL (chân RX0 - D0 và TX0 - D1), đồng bộ tốc độ baud.
- Khối hiển thị: 2 Module LED 7 đoạn 2 chữ số loại Anode chung (điện áp làm việc 2.2V, dòng cấp 10mA) quét đoạn để đếm lùi thời gian; 6 LED đơn sắc (2 đỏ, 2 vàng, 2 xanh lục) mô phỏng trạng thái đèn tín hiệu.
Thiết kế và thi công hệ thống
Kiến trúc tổng thể hệ thống
Hệ thống gồm 4 khối chức năng chính hoạt động theo vòng lặp khép kín:
- Khối thu nhận và xử lý ảnh (PC/MATLAB): Tiếp nhận luồng video, thực hiện thuật toán trừ nền giữa khung hình chuẩn không có xe và khung hình hiện tại có xe, thực hiện chuỗi xử lý hình thái học và đếm số đối tượng.
- Khối truyền thông: Đóng gói kết quả đếm xe thành các byte dữ liệu và truyền qua cổng COM ảo (UART) xuống kit vi điều khiển.
- Khối xử lý trung tâm (Arduino Mega 2560): Giải mã số lượng xe từ cổng nối tiếp, tính toán và thiết lập khoảng thời gian sáng của đèn xanh cho từng làn tương ứng, điều khiển chu kỳ đèn vàng và đèn đỏ.
- Khối hiển thị ngoại vi: Hiển thị thời gian đếm lùi trên LED 7 đoạn và trạng thái đóng/mở làn trên hệ thống LED tín hiệu tại sa bàn ngã tư.
Thông số kỹ thuật linh kiện phần cứng
| Linh kiện / Thiết bị |
Thông số kỹ thuật chính |
Vai trò trong hệ thống |
| Arduino Mega 2560 |
ATmega2560, 16 MHz, 5V DC, 54 I/O Digital |
Bộ điều khiển trung tâm, định thời gian |
| LED 7 đoạn 2 digit |
Loại Anode chung, $V_F = 2.2\text{V}$, $I = 10\text{mA}$ |
Hiển thị thời gian đếm lùi đèn xanh/đỏ |
| LED đơn Đỏ / Vàng |
Kích thước 5mm, $V_F = 1.8\text{V} - 2.2\text{V}$, $I \approx 10 - 20\text{mA}$ |
Tín hiệu dừng xe và chuyển trạng thái |
| LED đơn Xanh lục |
Kích thước 5mm, $V_F = 3.0\text{V} - 3.2\text{V}$, $I \approx 20\text{mA}$ |
Tín hiệu cho phép phương tiện lưu thông |
| Điện trở hạn dòng |
$220,\Omega - 330,\Omega$ ($1/4\text{W}$) |
Bảo vệ LED 7 đoạn và LED đơn |
| Máy tính cá nhân |
Cài đặt MATLAB R2017a |
Xử lý ảnh đầu vào và giao diện điều khiển |
Nội dung chính theo từng chương
Chương 1: Tổng quan
Chương 1 trình bày bối cảnh thực tiễn về vấn nạn ùn tắc giao thông tại các đô thị Việt Nam; chỉ rõ những hạn chế của hệ thống đèn tín hiệu chu kỳ cố định và các sự cố tốn kém từ các dự án nhập khẩu công nghệ nước ngoài. Tác giả xác định mục tiêu thiết kế hệ thống điều khiển thích nghi qua xử lý ảnh, liệt kê 8 nhiệm vụ nghiên cứu cụ thể, xác định phạm vi giới hạn của đề tài (sử dụng 6 video quay thực tế mô phỏng 2 làn đường tại giao lộ) và tóm tắt cấu trúc 6 chương của báo cáo tốt nghiệp.
Chương 2: Cơ sở lý thuyết
Chương 2 cung cấp nền tảng lý thuyết chi tiết về:
- Lịch sử và các bước cơ bản trong xử lý ảnh số.
- Ngôn ngữ và môi trường tính toán ma trận MATLAB.
- Nền tảng phần cứng Arduino Mega 2560, sơ đồ chân vi điều khiển ATmega2560, cấu trúc bộ nhớ Flash/SRAM/EEPROM và giao thức UART.
- Nguyên lý cấu tạo và phương pháp giải mã hiển thị LED 7 đoạn Anode chung.
- Các giải thuật xử lý ảnh đầu vào: công thức biến đổi ảnh xám, biểu đồ lược đồ xám, giải thuật tách ngưỡng nhị phân Otsu, các bộ lọc làm trơn nhiễu tuyến tính và phi tuyến (lọc trung bình, lọc thông thấp, lọc đồng hình, lọc trung vị).
- Các hàm chuyên dụng trong MATLAB Image Processing Toolbox:
imread, imshow, imagesc, rgb2gray, imadjust, graythresh, imbinarize, imdilate, imerode, bwareaopen, bwlabel.
Chương 3: Tính toán và thiết kế
Chương 3 tập trung vào thiết kế kỹ thuật của hệ thống:
- Thiết lập sơ đồ khối tổng quát gồm 4 khối chức năng và mô tả chi tiết nhiệm vụ từng khối.
- Xây dựng sơ đồ nguyên lý ghép nối giữa Arduino Mega 2560 với 2 cụm LED 7 đoạn 2 chữ số (sử dụng phương pháp quét LED tiết kiệm chân) và 6 LED tín hiệu giao thông đơn sắc.
- Tính toán điện áp, dòng điện làm việc và lựa chọn giá trị điện trở hạn dòng phù hợp cho các LED tín hiệu và thanh LED 7 đoạn nhằm đảm bảo vi điều khiển hoạt động ổn định trong giới hạn dòng tối đa 30mA/chân.
- Thiết kế layout mạch và sơ đồ nguyên lý toàn mạch trên sa bàn mô hình ngã tư.
Chương 4: Thi công hệ thống
Chương 4 mô tả quy trình hiện thực hóa phần cứng và phần mềm:
- Thi công phần cứng: Gia công bo mạch, hàn chân linh kiện, lắp ráp sa bàn mô hình đèn giao thông ngã tư hoàn chỉnh.
- Lập trình giao diện điều khiển (GUI) trên MATLAB: Thiết kế giao diện cho phép người vận hành nạp video từ 2 làn đường, quan sát ảnh gốc, ảnh sau xử lý nhị phân/hình thái học, theo dõi số lượng xe đếm được theo thời gian thực và lựa chọn chế độ tự động hoặc điều khiển bằng tay.
- Lập trình vi điều khiển Arduino: Xây dựng thuật toán nhận dữ liệu nối tiếp, giải mã chuỗi ký tự số lượng xe, thuật toán định thời đếm lùi và điều khiển trạng thái các ngõ ra Digital kích hoạt đèn.
- Biên soạn tài liệu hướng dẫn: Quy trình vận hành hệ thống từ khởi động cổng kết nối COM, nạp video dữ liệu đến chạy tự động.
Chương 5: Kết quả, nhận xét và đánh giá
Chương 5 công bố kết quả thực nghiệm toàn diện của hệ thống qua các kịch bản lưu lượng khác nhau:
- Thử nghiệm nhận dạng và đếm phương tiện trên giao diện MATLAB và sa bàn thực tế với 3 mức độ lưu lượng: ít xe, vừa xe và đông xe trên cả 2 làn đường.
- Đánh giá khả năng tự động điều chỉnh thời gian đèn xanh: làn đường có mật độ xe cao hơn được hệ thống tự động cấp thời gian đèn xanh dài hơn và ngược lại.
- Thử nghiệm tính năng can thiệp điều khiển bằng tay trên giao diện người dùng thành công, cho phép ép chu kỳ đèn theo ý muốn của người giám sát.
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: hoàn thiện trọn vẹn mô hình phần cứng và giải thuật xử lý ảnh, hệ thống vận hành đồng bộ và ổn định. Đồng thời, chương này chỉ ra các hạn chế tồn tại (xử lý phụ thuộc vào điều kiện ánh sáng ngoài trời, video đầu vào quay thủ công) và định hướng nâng cấp hệ thống trong tương lai.
Kết quả và đóng góp
Kết quả kỹ thuật đạt được
- Về thuật toán xử lý ảnh: Xây dựng thành công chuỗi xử lý tự động từ ảnh video sang ảnh xám, nhị phân hóa, khử nhiễu kích thước nhỏ và phân đoạn gán nhãn đối tượng bằng
bwlabel, nhận diện chính xác các phương tiện lưu thông trên khung hình.
- Về giao diện giám sát: Lập trình hoàn chỉnh phần mềm GUI trên MATLAB hiển thị trực quan các bước xử lý ảnh, số lượng xe đếm được của từng làn và trạng thái kết nối phần cứng.
- Về phần cứng điều khiển: Thi công hoàn chỉnh mô hình sa bàn giao lộ với kit Arduino Mega 2560, hiển thị chính xác số giây đếm lùi trên 2 module LED 7 đoạn 2 digit và chuyển đổi trạng thái nhịp nhàng giữa các cụm LED đơn xanh - vàng - đỏ.
- Về quy luật điều khiển thích nghi: Hệ thống chứng minh được tính đúng đắn của giải thuật: thời gian chu kỳ đèn xanh được phân bổ tỷ lệ thuận với số lượng phương tiện đếm được trên mỗi làn đường (bảng quy đổi số giây đèn xanh theo mật độ phương tiện thực nghiệm).
Đóng góp thực tiễn của đề tài
- Đưa ra giải pháp kỹ thuật có chi phí chế tạo thấp, tận dụng các linh kiện nhúng phổ thông (Arduino Mega 2560) kết hợp máy tính xử lý ảnh để giải quyết bài toán giao thông thích nghi thay vì các hệ thống máy tính công nghiệp ngoại nhập đắt tiền.
- Cung cấp quy trình thiết kế và mã nguồn tích hợp hoàn chỉnh giữa MATLAB và Arduino qua giao tiếp UART, làm tài liệu tham khảo cho các bài toán điều khiển nhúng dựa trên thị giác máy tính.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài
- Dữ liệu đầu vào sử dụng các đoạn video ghi hình sẵn bằng điện thoại di động trong điều kiện ban ngày có thời tiết thuận lợi, chưa được kết nối trực tiếp với camera giám sát chuyên dụng lắp đặt cố định tại hiện trường.
- Thuật toán trừ nền và phân đoạn ngưỡng cố định dễ bị ảnh hưởng bởi sự thay đổi đột ngột của điều kiện môi trường như bóng râm cây cối, ánh sáng mặt trời phản chiếu mạnh, thời tiết mưa hoặc ban đêm.
- Mô hình thử nghiệm mới dừng lại ở giao lộ đơn giản gồm 2 làn đường giao nhau, chưa mở rộng cho các nút giao phức tạp có nhiều nhánh rẽ hoặc làn đường ưu tiên.
Hướng nghiên cứu tiếp theo
- Nâng cấp thuật toán xử lý ảnh bằng các mô hình học máy hoặc học sâu (Deep Learning) để cải thiện độ chính xác nhận diện phương tiện trong điều kiện ban đêm, thời tiết xấu hoặc khi các phương tiện che khuất nhau.
- Tích hợp camera IP truyền dữ liệu trực tiếp theo thời gian thực về máy tính xử lý.
- Mở rộng mạng lưới điều khiển cho ngã tư 4 làn đường có làn rẽ trái/phải riêng biệt và kết nối các nút giao thông liền kề thành mạng lưới điều tiết thông minh đồng bộ.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho:
- Sinh viên ngành Kỹ thuật Điện tử - Viễn thông, Tự động hóa, Kỹ thuật Máy tính và Cơ điện tử: Cung cấp tài liệu thực hành chi tiết về cách thức giao tiếp nối tiếp giữa MATLAB và Arduino qua UART, cách điều khiển quét LED 7 đoạn 2 digit và tính toán thiết kế phần cứng vi điều khiển.
- Người nghiên cứu các đề tài về Thị giác máy tính và Giao thông thông minh: Cung cấp hướng dẫn từng bước về việc ứng dụng các hàm xử lý ảnh cơ bản trong MATLAB (Image Processing Toolbox) cho bài toán đếm đối tượng di động và xây dựng giao diện GUI giám sát.
Câu hỏi thường gặp
1. Kit điều khiển trung tâm được sử dụng trong đồ án có những thông số phần cứng nào đáng chú ý?
Đồ án sử dụng board Arduino Mega 2560 tích hợp vi điều khiển ATmega2560 chạy ở tần số dao động 16 MHz, điện áp hoạt động 5V DC. Board cung cấp 54 chân Digital I/O (trong đó có 15 chân hỗ trợ điều chế độ rộng xung PWM), 16 chân Analog, 4 bộ truyền thông phần cứng UART, bộ nhớ Flash 256 KB, SRAM 8 KB và EEPROM 4 KB.
2. Công thức và hàm nào được sử dụng trong MATLAB để chuyển đổi ảnh màu RGB sang ảnh xám?
Để chuyển đổi ảnh màu 24-bit sang ảnh mức xám 8-bit, MATLAB sử dụng hàm rgb2gray() với công thức tính trọng số cường độ sáng:
$$P = 0.2989 \times R + 0.5870 \times G + 0.1140 \times B$$
trong đó $R, G, B$ lần lượt là giá trị mức màu của các kênh đỏ, xanh lục và xanh lam.
3. Quy trình xử lý hình thái học để đếm phương tiện sau khi nhị phân hóa ảnh gồm những bước nào?
Sau khi nhị phân hóa ảnh bằng hàm imbinarize() kết hợp ngưỡng tự động từ graythresh(), quy trình gồm:
- Dùng hàm
imdilate() để giãn nở, hàn gắn các điểm ảnh đứt đoạn của phương tiện.
- Lấp các lỗ trống bên trong đối tượng.
- Dùng hàm
imerode() để xói mòn, tách rời các đối tượng dính nhau.
- Dùng hàm
bwareaopen() để xóa các vùng đốm nhiễu có kích thước pixel nhỏ hơn ngưỡng quy định.
- Dùng hàm
bwlabel() gán nhãn các thành phần liên thông để đếm tổng số lượng xe độc lập.
4. Dữ liệu từ phần mềm MATLAB được truyền xuống kit Arduino bằng phương thức nào?
Dữ liệu số lượng phương tiện sau khi xử lý trên MATLAB được gửi xuống Arduino Mega 2560 thông qua chuẩn truyền thông nối tiếp bất đồng bộ UART (Universal Asynchronous Receiver - Transmitter) qua cổng COM ảo, kết nối trực tiếp vào các chân D0 (RX) và D1 (TX) của vi điều khiển với mức điện áp chuẩn TTL.
5. Nguyên lý phân bổ thời gian đèn tín hiệu giao thông của hệ thống hoạt động như thế nào?
Hệ thống so sánh số lượng xe đếm được giữa 2 làn đường tại giao lộ. Tuyến đường nào có lưu lượng xe phát hiện qua camera lớn hơn sẽ được hệ thống phân bổ thời gian sáng của chu kỳ đèn xanh tiếp theo dài hơn, trong khi tuyến đường có mật độ xe ít hơn sẽ nhận chu kỳ đèn xanh ngắn hơn nhằm tối ưu hóa lưu lượng thoát xe và giảm thiểu ùn tắc.
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" của tác giả Đỗ Xuân Vui đã hoàn thành đầy đủ các mục tiêu thiết kế cả về phần mềm xử lý lẫn sa bàn phần cứng thực nghiệm. Nghiên cứu đã kết hợp thành công công cụ xử lý ảnh số trên MATLAB với vi điều khiển Arduino Mega 2560 để tự động điều chỉnh chu kỳ đèn xanh linh hoạt theo mật độ phương tiện thực tế. Kết quả thử nghiệm trên 6 tập video mẫu chứng minh tính khả thi của giải pháp trong việc nâng cao hiệu quả điều tiết giao thông đô thị với chi phí triển khai tiết kiệm.