Xây dựng hệ thống giám sát và phân tích lưu lượng giao thông đường bộ
Bạn đang xem tài liệu "Xây dựng hệ thống giám sát và phân tích lưu lượng giao thông đường bộ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- xay_dung_he_thong_giam_sat_va_phan_tich_luu_luong_giao_thong.pdf
Nội dung text: Xây dựng hệ thống giám sát và phân tích lưu lượng giao thông đường bộ
- Dương Ngọc Pháp 185 Xây dựng hệ thống giám sát và phân tích lưu lượng giao thông đường bộ Dương Ngọc Pháp Khoa Công nghệ Thông tin và Truyền thông - Đại học Đà Nẵng dnphap@sict.udn.vn Tóm tắt. Bài báo tập trung phát triển mô hình mô phỏng hệ thống quan sát, đếm và phân tích lưu lượng các phương tiện giao thông đường bộ (cụ thể là các xe ô tô trên đường) trên thiết bị phần cứng để đưa ra các đánh giá giúp cho nhà quản lí có thể theo dõi tình hình giao thông tại trạm và từ xa thông qua Internet sử dụng ThingSpeak. Thuật toán giám sát lưu lượng được thực hiện sử dụng ngôn ngữ Matlab với công cụ Simulink nhằm triển khai mã nguồn ứng dụng chạy trực tiếp trên nền tảng phần cứng Raspberry Pi. Qua kết quả thử nghiệm cũng đưa ra một số đánh giá về tình hình giao thông tại trạm quan sát. Từ khóa: Raspberry Pi, thuật toán giám sát lưu lượng, ThingSpeak, Simulink, Matlab. 1 Giới thiệu Để xây dựng một mô hình IoT ứng dụng, bài báo mô tả việc triển khai sơ đồ khối sử dụng các thành phần gồm: - Raspberry Pi 3 mode B: kit nhúng sử dụng Vi xử lí mạnh mẽ ARM Cortex A53 quad- core 64-bit tốc độ 1.2GHz làm bộ xử lí trung tâm chạy thuật toán giám sát lưu lượng, kết nối internet thông qua Wifi. - Webcam Logitech HP Pro C920 1080P: kết hợp với giá đỡ đảm bảo ghi nhận hình ảnh tốc độ cao đáp ứng yêu cầu xử lí trích xuất đối tượng xe di chuyển, kết nối với Raspberry Pi 3 qua giao tiếp USB 3.0. - ThingSpeak [1]: lưu trữ dữ liệu trực tuyến phục vụ phân tích và mô phỏng các thông số về mẫu lưu lượng. Việc phân tích dữ liệu có thể được thực hiện tại hiện trường, tại trạm phân tích hoặc trên bộ lưu trữ dữ liệu trực tuyến. Như sơ đồ khối trình bày trong Hình 1, bài báo này phát triển thuật toán giám sát lưu lượng tại hiện trường, dữ liệu sau đó được gởi lên ThingSpeak để tiến hành phân tích, mô phỏng.
- 186 KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA 2018 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC Hình 1. Sơ đồ khối hệ thống. Theo sơ đồ khối hệ thống, USB webcam được gắn trên một chân đế vững chắc để có được góc nhìn tốt nhất đảm bảo chất lượng hình ảnh thu được, kết nối đến một trong bốn cổng USB của Raspberry Pi 3. Pi 3 kết nối với internet thông qua mạng không dây truyền dữ liệu lên ThingSpeak. Raspberry Pi 3 đóng vai trò xử lí thuật toán đếm lưu lượng xe, sau đó gởi dữ liệu lên cloud với thời gian cập nhật được lựa chọn là 15 giây theo tốc độ dữ liệu tối đa cho phép bởi ThingSpeak. 2 Phát triển thuật toán giám sát lưu lượng Để phát triển thuật toán giám sát lưu lượng, bài báo sử dụng công cụ Simulink với các công cụ Image Processing Toolbox, Computer Vision System Toolbox và Simulink Support Package cho phần cứng Raspberry Pi. Simulink là môi trường mô hình hóa có thể tự sinh mã nguồn chạy được trên bộ điều khiển nhúng Raspberry Pi 3 trong trường hợp này. Về cơ bản thuật toán sử dụng phương pháp dò tìm vùng khác nhau trong ảnh xám với khối phân tích Blob như [6] cho đối tượng cụ thể đặt ra, tuy nhiên để xử lí nhiễu trên các đối tượng có khoảng cách xa cần một số khối tiền xử lí. Sơ đồ mô hình thực hiện được mô tả như hình 2. Hình 2. Mô hình Simulink cho thuật toán giám sát lưu lượng.
- Dương Ngọc Pháp 187 Chế độ mở rộng ngoài của Simulink được sử dụng để phát triển thuật toán nhằm thu thập luồng video từ Raspberry Pi và có thể quan sát trên cửa sổ ngoài sử dụng khối hiển thị video SDL trong khi chạy chương trình, như ví dụ ở hình 3. Hình 3. Hình ảnh được trích xuất từ luồng video SDL. Từ sơ đồ mô hình, khối webcam bên trái sơ đồ kết nối đến Raspberry Pi để thu nhận video với khung hình đặt trước. Tiếp theo khối vision.ForegroundDetector ước lượng những điểm ảnh nền trước của các đối tượng được ghi nhận bởi luồng video và ước lượng nền sử dụng mô hình Gaussian [2] và tạo ra mặt nạ làm nổi bật đối tượng cần theo dõi, trong trường hợp này các xe ô tô đang chuyển động. Hình 4. Mặt nạ Foreground. Mặt nạ Foreground sau đó được xử lí sử dụng Median filter để loại bỏ nhiễu [3]. Tiếp theo sử dụng khối Blob Analysis [4] để xác định trọng tâm các đốm sáng ứng với vị trí của chiếc xe như hình 5.
- 188 KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA 2018 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC Hình 5. Mặt nạ Foreground sau khi được xử lí bởi Median filter. Cuối cùng, khối Car Density có nhiệm vụ xác định số lượng xe lưu thông theo mỗi hướng trong khung hình [5]. Dữ liệu về số lượng xe đi về mỗi hướng được gởi lên ThingSpeak lưu trữ ở các vùng khác nhau dành cho việc đánh giá mô phỏng. 3 Giới hạn của thuật toán giám sát lưu lượng Thuật toán thực hiện vai trò ước lượng vì không theo dõi từng đối tượng riêng lẻ. Mỗi khung hình sau 15 giây dùng để xử lí nhằm ước lượng mức độ lưu thông, trong khi thực tế có thể có ít hơn hoặc nhiều hơn số lượng xe ô tô di chuyển trong khoảng 15 giây lấy mẫu. Một số giới hạn khi sử dụng thuật toán như ở hình 2 như sau: a. Camera không có chức năng thu ảnh hồng ngoại nên hạn chế vào ban đêm. b. Nếu có tình trạng kẹt xe, ảnh nền có thể bị tính toán sai số lượng xe. c. Nếu có sự thay đổi về điều kiện ánh sáng, thuật toán mất vài giây để tự hiệu chỉnh. d. Thuật toán có thể không tính trường hợp một phần xe không nhận dạng. e. Chỉ hỗ trợ nhận dạng được phương tiện là xe ô tô có kiểu dáng tương đồng. 4 Công cụ thực hiện Sau khi phát triển thuật toán, phần cứng Raspberry Pi 3 được sử dụng để thực thi và chạy chương trình mà không cần kết nối trực tiếp với Simulink trên PC. Điều này được thực hiện bằng cách sử dụng công cụ Simulink Support Package. Với thuật toán giám sát lưu lượng phát triển trên nền tảng Raspberry Pi có thể tiến hành phân tích dữ liệu thô được gởi bởi Raspberry Pi lên ThingSpeak. Để đơn giản hóa việc truy xuất dữ liệu từ ThingSpeak, chúng ta có thể sử dụng hàm từ ThingSpeak Support Toolbox trong dữ liệu cua Matlab. 5 Kết quả thực nghiệm Để tiến hành thực nghiệm, hệ thống được đặt để thu nhận ảnh hiện trường với khoảng cách nằm trong dải từ 40 -> 50m, độ cao ứng với tầng 4 của tòa nhà để có góc quan sát tốt cho hình ảnh. Thời gian lấy mẫu là 15 giây, mỗi thao tác thực hiện của ThingSpeak đáp ứng chỉ 8000 mẫu dữ liệu, chương trình cho phép tạo ra các vòng lặp để ghép nối dữ liệu và các thông số về thời gian, lưu lượng sẽ được ấn định lần lượt vào các mảng lưu trữ. Dữ liệu thô thu được sẽ giúp thể hiện rõ sự biến động lưu lượng mặc dù rất khó để quan sát các mẫu riêng biệt. Để đánh giá lưu lượng trong mỗi ngày cần tiến hành giảm mẫu để loại bỏ những biến động trong thời gian ngắn. Việc sử dụng chức năng dò đỉnh sẽ giúp tìm được các điểm mật độ lưu lượng cao nhất và vẽ lên biểu đồ đánh giá như ở hình 6 đối với mật độ lưu lượng ngày giữa tuần và hình 7 đối với mật độ lưu lượng ngày cuối tuần. Quan sát biểu đồ có thể thấy được kết quả phân tích có sự khác nhau về mật độ và thời gian giữa hai ngày theo dõi. Dữ liệu thô sẽ làm khó phân biệt được các điểm lưu lượng, khoảng thời gian giữa các điểm hiển thị sẽ được chia tỉ lệ lớn hơn so với 15 giây. Để làm việc này, trong 24 giờ sẽ được chia thành các đoạn 30 phút và biểu đồ được vẽ bằng cách nối các đỉnh lưu lượng tại các thời điểm tương ứng.
- Dương Ngọc Pháp 189 Hình 6. Mật độ lưu lượng trong ngày giữa tuần. Hình 7. Mật độ lưu lượng trong ngày cuối tuần. 6 Kết luận Bài báo đã minh họa việc phát triển một thuật toán giám sát lưu lượng có thể triển khai trên nền tảng phần cứng Raspberry Pi và gởi dữ liệu lên ThingSpeak. Việc phân tích, giám sát sử dụng khối phân tích Blob cho phép thực hiện tại trạm để giảm chi phí xây dựng thực tế. Trên công cụ ThingSpeak được sử dụng, việc mô phỏng có thể được tùy chọn và cập nhật thường
- 190 KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA 2018 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC xuyên theo cấu hình. Trong hướng phát triển tiếp tục điều chỉnh các thuật toán tiền xử lý để khắc phục các hạn chế của thuật toán đồng thời tăng tốc độ xử lí cho bài toán thời gian thực. Tài liệu tham khảo 1. last visited July 30th, 2018. 2. Greggio, Nicola, et al.: "Fast estimation of Gaussian mixture models for image segmentation." Machine Vision and Applications 23.4: 773-789 (2012). 3. Reddy, Vikas, Conrad Sanderson, and Brian C. Lovell: "A low-complexity algorithm for static background estimation from cluttered image sequences in surveillance contexts." EURASIP Journal on Image and Video Processing (2011). 4. Patro, Badri Narayana: "Design and implementation of novel image segmentation and BLOB detection algorithm for real-time video surveillance using DaVinci processor." Advances in Computing, Communications and Informatics (ICACCI, 2014 International Conference on. IEEE (2014). 5. Royani, Tahere, Javad Haddadnia, and MohammadReza Pooshideh: "A simple method for calculating vehicle density in traffic images." Machine Vision and Image Processing (MVIP), 2010 6th Iranian. IEEE (2010). 6. Manasa, J., et al.: "Real time object counting using Raspberry pi." International Journal of Advanced Research in Computer and Communication Engineering 4.7: 540-544 (2015).