Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 81 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
81
Dung lượng
2,48 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - NGUYỄN THỊ THẢO NGUYỄN THỊ THẢO KỸ THUẬT ĐIỆN TỬ NGHIÊNCỨUPHÁTTRIỂNTHUẬTTOÁNĐOTỐCĐỘXEÔ TÔ LUẬN VĂN THẠC SĨ KỸ THUẬT CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ KHOÁ 2014B Hà Nội – 2016 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI NGUYỄN THỊ THẢO NGHIÊNCỨUPHÁTTRIỂNTHUẬTTOÁNĐOTỐCĐỘXEÔ TÔ Chuyên ngành : KỸ THUẬT ĐIỆN TỬ LUẬN VĂN THẠC SĨ KỸ THUẬT CHUYÊN NGÀNH: KỸ THUẬT ĐIỆN TỬ NGƯỜI HƯỚNG DẪN KHOA HỌC : PGS.TS. NGUYỄN TIẾN DŨNG Hà Nội – 2016 MỤC LỤC LỜI CAM ĐOAN I LỜI CẢM ƠN II DANH MỤC CÁC CHỮ VIẾT TẮT III MỤC LỤC HÌNH ẢNH IV MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP ĐOTỐCĐỘXEÔTÔ 1.1. Tổng quan về các phương pháp giám sát phương tiện giao thông 1.1.1. Thực trạng của hệ thống giao thông ở Việt Nam 1.1.2. Giải pháp hệ thống ITS ở phương Tây 1.1.3. Tổng quan về sự phát triển của hệ ITS 1.2. Hướng tiếp cận của luận văn 1.2.1. Phương pháp phát hiện chuyển động 1.2.2. Phương pháp đo tốc độ phương tiện 11 CHƯƠNG ỨNG DỤNG KĨ THUẬT XỬ LÝ ẢNH TRONG GIẢI QUYẾT BÀI TOÁN GIAO THÔNG 14 2.1. Sơ lược về lý thuyết xử lý ảnh 14 2.1.1. Đặt vấn đề 14 2.1.2. Khái niệm xử lý ảnh 14 2.2. Các giai đoạn xử lý ảnh 15 2.2.1. Thu nhận ảnh 15 2.2.2. Tiền xử lý 16 2.2.3. Phân đoạn ảnh 16 2.2.4. Biểu diễn ảnh 17 2.2.5. Nhận dạng và nội suy ảnh 17 2.2.6. Cơ sở tri thức 18 2.3. Một số ứng dụng phổ biến của xử lý ảnh trong giao thông 18 2.3.1. Nhận dạng biển số xe 18 2.3.2. Phát hiện, cảnh báo biển báo và đèn tín hiệu 19 2.3.3. Phát hiện, cảnh báo vật cản và dự báo tắc đường 20 2.4. Thuật toán áp dụng để phát hiện và theo dõi đối tượng 20 2.4.1. Thuật toán cực đại hóa kỳ vọng 20 2.4.2. Mô hình hỗn hợp Gaussian (GMM) trong xử lý ảnh 24 2.4.3. Nhận diện Blob 27 2.4.4. Ghi nhãn thành phần được kết nối 30 CHƯƠNG PHÁT HIỆN, PHÂN LOẠI VÀ ƯỚC LƯỢNG CHUYỂN ĐỘNG ĐỐI TƯỢNG ÔTÔ 32 3.1. Tìm hiểu về bộ công cụ xử lý ảnh và thị giác máy tính trong MATLAB 32 3.1.1. Bộ công cụ xử lý ảnh 32 3.1.2. Computer Vision Toolbox 36 3.2. Quy trình nghiên cứu về đếm và ước lượng vận tốc xe 44 3.2.1. Thu thập dữ liệu 45 3.2.2. Xử lý dữ liệu 47 3.3. Phân tích, đánh giá kết quả thuật toán đếm đối tượng và ước lượng tốc độ phương tiện 56 3.3.1. Quá trình mô phỏng 56 3.3.2. Đánh giá kết quả 57 KẾT LUẬN VÀ HƯỚNG PHÁTTRIỂN ĐỀ TÀI 62 TÀI LIỆU THAM KHẢO 63 LỜI CAM ĐOAN Tên tôi là: Nguyễn Thị Thảo Sinh ngày 10 tháng 10 năm 1990 Học viên lớp cao học Kỹ thuật Điện tử 2014B - Trường Đại học Bách Khoa Hà Nội. Xin cam đoan nội dung đề tài “Nghiên cứu phát triển thuật toán đo tốc độ xe ô tô” là do tôi tự tìm hiểu, nghiên cứu và thực hiện dưới sự hướng dẫn của thầy giáo PGS.TS. Nguyễn Tiến Dũng. Mọi trích dẫn và tài liệu tham khảo mà tôi sử dụng đều có ghi rõ nguồn gốc. Tôi xin hoàn toàn chịu trách nhiệm về lời cam đoan trên. Hà Nội, tháng 09 năm 2016 Học viên thực hiện Nguyễn Thị Thảo I LỜI CẢM ƠN Trước tiên, tôi xin bày tỏ lòng biết ơn tới PGS.TS. Nguyễn Tiến Dũng đã tận tình hướng dẫn, truyền đạt những kiến thức và kinh nghiệm quý báu giúp tôi hoàn thành Bản luận văn thạc sĩ này. Tôi xin gửi lời cảm ơn chân thành tới tập thể các thầy, cô giáo trong Viện Điện tử - Viễn thông, Trường Đại học Bách khoa Hà Nội đã tạo ra một môi trường tốt để tôi học tập và nghiên cứu. Tôi cũng xin cảm ơn các thầy cô trong Viện Đào tạo sau đại học đã quan tâm đến khóa học này, tạo điều kiện thuận lợi cho các học viên trong suốt quá trình học tập và thực hiện đề tài. Cuối cùng, tôi xin bày tỏ lòng biết ơn tới toàn thể gia đình, cảm ơn bạn bè và đồng nghiệp đã luôn cổ vũ, động viên tôi trong suốt thời gian qua. Tuy đã cố gắng hết sức, nhưng do thời gian và kiến thức còn hạn chế nên luận văn không tránh khỏi sai sót, tôi rất mong sự bổ sung, góp ý của các thầy cô. Nguyễn Thị Thảo II Học viên DANH MỤC CÁC CHỮ VIẾT TẮT CAMShift : Continuously Adaptive Mean Shift DoG : Difference of Gaussian DoH : Determinant of the Hessian EM : Expectation Maximization GMM : Gaussian Mixture Model HOG : Histogram of Oriented Gradient ITS : Intelligent Traffic System KLT : Kanade-Lucas-Tomasi LoG : Laplacian of the Gaussian III MỤC LỤC HÌNH ẢNH Trang Hình 1.1. Hình ảnh tắc đường tại Hà Nội .4 Hình 1.2. Trung tâm quản lý giao thông (TMS) ở Athens Hình 1.3. Hệ thống giám sát giao thông ở Hồng Kông Hình 1.4. Hệ thống giám sát giao thông sử dụng sóng radar Hình 1.5. Hệ thống giám sát giao thông đa làn bằng xử lý ảnh Hình 1.6. Ảnh đã được thực nghiệm ở trên 1 tuyến đường của Hà Nội (hầm Kim Liên) 12 Hình 2.1. Các giai đoạn xử lý ảnh 14 Hình 2.2. Quá trình thu nhận và số hóa ảnh thực 15 Hình 2.3. Ví dụ về quá trình thu ảnh giao thông 16 Hình 2.4. Quá trình phân đoạn frame ảnh từ video .17 Hình 2.5. Quá trình nhận dạng kí tự trên biển số xe .18 Hình 2.6. Ứng dụng xử lý ảnh trong nhận dạng biển số xe 19 Hình 2.7. Ứng dụng xử lý ảnh phát hiện đèn đỏ và biển báo giao thông .19 Hình 2.8. Ứng dụng xử lý ảnh phát hiện vật cản 20 Hình 2.9. Ứng dụng xử lý ảnh phát hiện và dự báo tắc đường 20 Hình 2.10. Ví dụ EM: Các thành phần hỗn hợp và dữ liệu .22 Hình 2.11. Hàm likehood của 2 giá trị trung bình của thành phần hỗn hợp θ1 và θ2 22 Hình 2.12. Quá trình nhận dạng blob .27 Hình 3.1. Ví dụ hiển thị video trong Matlab 33 Hình 3.2. Ví dụ nâng cao chất lượng ảnh mầu đa dải .34 Hình 3.3. Ví dụ phân tích ảnh phát hiện biên 34 Hình 3.4. Ví dụ tái cấu trúc ảnh dựa trên dữ liệu hình chiếu 35 Hình 3.5. Xác định độ tròn của các đối tượng trong ảnh 35 Hình 3.6. Phân đoạn ảnh sử dụng bộ lọc Gabor .36 IV Hình 3.7. Một vài ví dụ của ứng dụng thị giác máy .37 Hình 3.8. Đối chiếu các điểm tương đồng giữa 2 frame ảnh 38 Hình 3.9. Ghi nhận dựa trên thuộc tính được sử dụng để ổn định video 39 Hình 3.10. Ví dụ về phát hiện đối tượng chuyển động 40 Hình 3.11. Đối tượng được nhận dạng và theo dõi trong 2 frame ảnh 41 Hình 3.12. Ước lượng chuyển động của các xe được phát hiện 42 Hình 3.13. Xóa nhòe video trong Matlab .42 Hình 3.14. Quá trình hiển thị video khi xử lý .43 Hình 3.15. Quá trình thêm đồ họa vào video khi xử lý 44 Hình 3.16. Tổng quan về hệ giám sát giao thông sử dụng phần mềm Matlab .45 Hình 3.17. Phân tích vị trí khi cài đặt camera 45 Hình 3.18. Thiết lập góc hướng của camera 46 Hình 3.19. Lựa chọn không gian làm việc phù hợp cho camera .46 Hình 3.20. Xác định làn xe cần thiết 46 Hình 3.21. Lưu đồ quy trình xử lý video 47 Hình 3.22. Ảnh nền sau khi thực hiện trừ nền với GMM chưa qua lọc nhiễu 51 Hình 3.23. Ảnh nền sau khi xóa nhiễu 51 Hình 3.24. Đối tượng được phát hiện và đánh dấu bằng hình vuông bao quanh .53 Hình 3.25. Sơ đồ khối thuật toán đếm 54 Hình 3.26. Sơ đồ khối thuật toán ước lượng vận tốc xe 55 Hình 3.27. Hình ảnh thu được từ video 56 Hình 3.28. Phát hiện nền 56 Hình 3.29. Đếm đối tượng .57 Hình 3.30. Tính vận tốc chuyển động của xe 57 Hình 3.31: Giao diện thêm nhiễu vào video gốc 58 Hình 3.32. Ước lượng vận tốc xe trước và sau khi bổ sung nhiễu Gauss 58 Hình 3.33. Mô phỏng trên các video đầu vào khác nhau lấy từ camera tĩnh 59 Hình 3.34. Mô phỏng trên các video đầu vào khác nhau lấy từ camera động 60 V MỞ ĐẦU Tính cấp thiết vấn đề nghiêncứu Ở Việt Nam, vấn đề điều khiển các phương tiện giao thông khi xảy ra tắc nghẽn giao thông rất khó khăn và thường phải nhờ vào sự điều hành của cảnh sát giao thông. Tuy nhiên, số lượng cảnh sát giao thông vẫn còn rất hạn chế. Hơn thế nữa, do thiếu thốn trang thiết bị kỹ thuật, quá trình điều khiển giao thông không dễ dàng trong giờ cao điểm. Trong khi đó ở các nước phương tây, để giải quyết những vấn đề đó, một hệ thống theo dõi sử dụng camera không cần đến sự hiện diện của con người, được thiết lập ở ngã tư kiểm soát dòng xe và tình trạng giao thông. Giải pháp đó có thể tiết kiệm rất nhiều nguồn lực cũng như thuận tiện cho các trình điều khiển giao thông và cập nhật thông tin giao thông. Có thể nói giám sát online thông minh bằng hình ảnh cho phương tiện đường bộ là một phần quan trọng cho việc phát triển hệ thống giao thông thông minh. Căn cứ vào tình hình giao thông tại Việt Nam, trong đề tài nghiên cứu tác giả đề xuất một chương trình phát hiện và theo dõi vận tốc xe thông qua giám sát video trong đó sử dụng thuật toán phân mảnh và trừ nền ban đầu dựa trên hình thái ảnh để xác định các vùng nổi bật trong một chuỗi các frame của video. Vận tốc xe sẽ được tính toán và hiển thị trên video. Phần mềm theo dõi giao thông được xây dựng trên ngôn ngữ lập trình MATLAB. Chương trình thử nghiệm xử lý video đầu vào, phát hiện và đếm các phương tiện di chuyển. Đoạn video được ghi lại bởi các camera cố định, vì vậy chúng ta có thể bỏ qua các rung động và chuyển động không mong muốn. Điều đó có nghĩa là các camera cho chúng ta video với tiêu chuẩn đủ điều kiện. Nhiệm vụ của đề tài là xử lý video mẫu. Mục tiêu nghiêncứu luận văn Mục tiêu của đề tài là phát triển một hệ thống có thể đếm số lượng xe đi qua một điểm xác định, và cũng phân loại từng loại xe thông qua kích thước xe, ước lượng vận tốc chuyển động của xe. Ngoài ra, tác giả muốn phát triển hệ thống giám sát giao thông ngoài khả năng trên, còn phải xác định được hướng của chúng, và 1 Hình 3.31: Giao diện thêm nhiễu vào video gốc Sau đó sử dụng video đã thêm nhiễu để đánh giá sai số trong bài toán đếm và ước lượng tốc độ phương tiện. Kết quả cho thấy, mật độ nhiễu càng cao, video rất mờ, bị nhiễu rất nhiều và kết quả hiện thị càng sai số tăng so với video mẫu đã được tính toán trước đó, chương trình không đếm chính xác được. Cụ thể: tổng số xe đếm được là 4, khi bổ sung nhiễu Gauss 6% chương trình đếm được 5 xe, bổ sung nhiễu Gauss 8% chương trình đếm được 6 xe. Vận tốc của xe cũng thay đổi với sai lệch khoảng từ 2km/h đến 5km/h mỗi xe. Hình 3.32 Ước lượng vận tốcxe trước sau bổ sung nhiễu Gauss 58 Trường hợp 2: Kết với video đầu vào khác Trong đề tài này, tác giả đã lựa chọn mẫu video có chất lượng tốt nhất về độ sáng, độ ổn định, không có rung động, và tốc độ xe không quá cao. Do đó khi thực hiện với video với điều kiện xấu thì lỗi là không thể tránh khỏi. Ví dụ, với ô tô tốc độ chậm, chương trình có thể đếm chính xác số lượng xe, còn với xe chạy tốc độ cao, chương trình không thể đếm chính xác được, do đó việc tính toán vận tốc xe gặp khó khăn. Ở ví dụ khác, với 2 xe chạy gần nhau với cùng một vận tốc thì chương trình không thể phân biệt và sẽ tính 2 xe là 1. Cụ thể khi thực hiện mô phỏng trên video “Traffic3.mp4” thu được từ camera tĩnh. Kết quả mô phỏng đạt yêu cầu chính xác trên 92%. Chương trình đếm được số lượng xe cũng như ước lượng tốc độ chuyển động của các phương tiện “ảo”. Hình 3.33 Mô video đầu vào khác lấy từ camera tĩnh Thực hiện mô phỏng trên video “Traffic1.mp4”. Video này được thu từ camera động có nền thay đổi và chuyển động theo thời gian. Kết quả mô phỏng không đạt yêu cầu. Chương trình không đếm được đúng số lượng xe cũng như ước lượng tốc độ chuyển động của các phương tiện “ảo” 59 Hình 3.34 Mô video đầu vào khác lấy từ camera động Bảng dưới đây đánh giá kết quả thu được sau khi áp dụng thuật toán: Video đầu Định vào dạng Độ phân Tốc độ giải Số lượng Frame phương tiện Số lượng Độ phương tiện chính (fr/s) thực đếm được xác visiontraffic avi 640x360 29 6 6 100% traffic3 mp4 400x224 24 25 23 92% videotraffic mp4 854x480 25 49 82 60% Traffic1 mp4 1280x720 50 60 184 3% Như mục tiêu của luận văn đã đề ra, thì một phần của chương trình đã được thực hiện. Trong tương lai, tác giả mong muốn xây dựng được một hệ thống để có thể sử dụng trong thực tiễn. Mặc dù độ chính xác không cao, nhưng chương trình cũng phần nào đạt được kết quả dự kiến. Nhận xét dưới đây đánh giá chi tiết về những gì đã đạt được và những thiếu sót của chương trình. Ưu điểm - Có thể phát hiện những chiếc xe tối màu, thậm chí là màu xe tương tự với màu nền; - Xử lý với độ chính xác cao trong việc phát hiện vì sử dụng mô hình hỗn hợp Gaussian (GMM); 60 - Có khả năng theo dõi và phân loại xe từng làn trên đường cao tốc. Nhược điểm - Độ phân giải của camera càng cao thì càng chính xác. Tuy nhiên, độ phân giải cao sẽ phải xử lý rất nhiều dữ liệu, gây chậm hệ thống; - Các phương tiện đi quá gần nhau, gây nên nhận dạng phương tiện bị sai; - Góc đặt camera khiến các phương tiện nhận dạng được di chuyển sai số. Do vậy tác giả đề xuất phương pháp đo theo trọng tâm phương tiện. Như những nhận xét trên, thời gian xử lý các video là vấn đề lớn nhất của chương trình, chương trình chạy khá chậm dẫn đến hệ thống thời gian thực không thể thực hiện trong thực tiễn. Ngoài ra, tăng độ chính xác của thuật toán cũng là một phần quan trọng. Mặc dù vậy, tác giã cũng đã thực hiện một phần lớn của luận văn. Đó là điều kiện tiên quyết để hoàn thành các tác vụ còn lại của chương trình. Kết luận chương Trong chương 3, tác giả giới thiệu về tính năng của hai bộ công cụ Image Processing và Computer Vision trong phần mềm lập trình Matlab. Từ đó đưa ra hướng tiếp cận thuật toán xử lý bằng phần mềm Matlab. Sau đó trình bày lưu đồ thuật toán và chương trình mô phỏng sử dụng thị giác máy (Machine Vision) trên phần mềm Matlab. So sánh, đánh giá kết quả mô phỏng thuật toán xác định vận tốc phương tiện giao thông sau khi bổ sung nhiễu vào video gốc và so sánh, đánh giá dựa trên một số video đầu vào khác nhau thu được từ camera tĩnh và động. Từ đó đưa ra những ưu, nhược điểm của hệ thống. 61 KẾT LUẬN VÀ HƯỚNG PHÁTTRIỂN ĐỀ TÀI Đề tài nghiên cứu đã áp dụng thuật toán trừ nền và phân mảnh ảnh sử dụng toán tử hình thái, phát hiện nền và sử dụng GMM thích nghi. Hệ thống giám sát giao thông đã được xây dựng nhằm phát hiện, đếm và theo dõi đối tượng chuyển động đồng thời đưa ra vận tốc xe một cách khá hiệu quả. Video đưa vào chương trình ghi lại quá trình chuyển động của các đối tượng có vận tốc nhỏ nên độ ổn định của video cao. Khi thiết lập trên cao tốc vận tốc thực của các đối tượng có thế rất lớn. Ngoài ra, các yếu tố như thời tiết cũng có thể ảnh hưởng đến chất lượng video và làm kết quả của chương trình sai lệch. Điều này cần được thử nghiệm và phát triển thêm trong thời gian tới. Nhìn chung, đề tài đã hoàn thành cơ bản các mục tiêu đề ra và đưa ra sơ đồ thuật toán nhằm giám sát phương tiện giao thông. Từ những kết quả kể trên, chúng ta cần phải có thêm thời gian nghiên cứu để hoàn thiện sản phẩm. Việc giảm thời gian xử lý là điều đòi hỏi trước tiên khi phát triển đề tài, bởi vì tốc độ xử lý ảnh hưởng lớn đến kết quả chương trình và các phán quyết cho người dùng. Bên cạnh đó số lượng phương tiện trong video còn ít, nếu muốn giải quyết triệt để bài toán thực tế thì các video đưa vào xử lý cần phải đa dạng hơn, số lượng phương tiện nhiều hơn, tốc độ di chuyển nhanh hơn nữa. 62 TÀI LIỆU THAM KHẢO [1]. Naeem Abbas, Muhammad Tayyab, M.Tahir Qadri (2013), “Real Time Traffic Density Count using Image Processing”, International Journal of Computer Applications (0975 – 8887), Volume 83 – No 9. [2]. Ms.Pallavi Choudekar, Ms.Sayanti Banerjee, Prof.M.K.Muju, “Real time traffic light control using image processing”, Indian Journal of Computer Science and Engineering (IJCSE) [3]. M. Zervakis*, K. Kalaitzakis, V. Kastrinaki (2003), “A survey of video processing techniques for traffic applications”, Image and Vision Computing 21, pp. 359–381. [4]. Blake A, Ferrier NJ, Rowe SM (1994), “Real-time traffic monitoring”, in WACV94. [5]. Daily DJ, Pumrin S (2002), “Roadside Camera Motion Detection for Automated Speed Measurement”, in The IEEE 5th International Conference on Intelligent Transportation Systems, Singapore. [6]. Andrew Naftel, Alexandre Bernardino, José Melo, and José Santos-Victor (2006), “Detection and classification of highway lanes using vehicle motion trajectories”, IEEE Trans Intelligent Trans Syst., pp. 188-200. [7]. Zhaobin L, Jinxiang L, Caidong G, Maoxin S, Fangyong T, Jianping W (2009), “An Algorithm for Automatic Vehicle Speed Detection using Video Camera”, in Pro IEEE 4th Int Conference Comput Sci Educ. [8]. Fumio Yamazaki, Wen Liu, T. Thuy Vu (2008), “Vehicle Extraction And Speed Detection From Digital Aerial Images”, IEEE International Geoscience and Remote Sensing Symposium, pp. 1134-1137. [9]. Wen L, Fumio Y (2009), “Speed detection of moving vehicles from one scene of Quick Bird images”, Urban Remote Sensing Joint Event. 63 [10]. Shisong Zhu, Toshio Koga (2006), “Feature Point Tracking for Car Speed Measurement”, in The IEEE Asia Pacific Conference on Circuits and Systems (APCCAS 2006). [11]. Yu, X.-D., Duan, L.-Y, Tian, Q., E.F. (2002), “Highway traffic information extraction from skycam MPEG Video”, in Proc.IEEE 5th International Conf on Intelligent Transportation Sys. [12]. Pelegri, J., Alberola, J., Llario, V., E.F. (2002), “Vehicle detection and car speed monitoring systems using GMR magnetic sensors”, in Proc.IEEE 2002 28th Annual Conf Industrial Electronics Society. [13]. Li, Y., Yin, L., Jia, Y., Wang, M., E.F. (2008), “Vehicle speed measurement based on video images”, in Proc 3rd International Conf Innovative Computing Information and Control. [14]. He, Z., Liu, Y., Yu, H., Ye, X., E.F. (2008), “Optimized algorithms for traffic information collecting in an embedded system”, Congress on Image and Signal Processing, vol. Vo.4, pp. 220-223. [15]. B.D. Stewart, I. Reading, M.S. Thomson, T.D. Binnie, K.W. Dickinson, C.L. Wan (1994), “Adaptive lane finding in road traffic image analysis”, Proceedings of Seventh International Conference on Road Traffic Monitoring and Control, IEE, London. [16]. E.D. Dickmanns, V. Graefe (1988), Dynamic monocular machine vision, Machine vision and applications 1, pp. 223–240. [17]. C.L. Wan, K.W. Dickinson, T.D. Binnie (1994), “A cost-effective image sensor system for transport applications utilising a miniature CMOS single chip camera”, IFAC Transportation systems, Tianjin, Proceedings. [18]. M. Papageorgiou, Video sensors, Papageorgiou Markos (Ed.), Concise Encyclopedia of traffic and transportation systems, pp. 610–615. [19]. M. Bertozzi, A. Broggi, S. Castelluccio (1997), “A real-time oriented system for vehicle detection”, Journal of System Architecture 43, pp. 317–325. 64 [20] Can Nguyen Van, Huy Huynh Van, Tao Ngo Quoc (2014), “Car counting method using Gaussian Mixture Model and Optical Flow”, The 3rd Solid State Systems Symposium-VLSIs and Semiconductor Related Technologies & The 17th International Conference on Analog VLSI Circuits-Analog Signal and Information Processing Applications. Ho Chi Minh City, 10/2014. Proceeding, pages 192-198. [21] Elhabian S., El-Sayed K., Ahmed S. (2008), Moving Object Detection in Spatial Domain using Background Removal Techniques State-of-Art, Recent Patents on Computer Science, Volume 1, Number 1, pages 32-54. [22] Cristani M., Farenzena M., Bloisi D., Murino V. (2010), “Background Subtraction for Automated Multisensor Surveillance: A Comprehensive Review”, EURASIP Journal on Advances in Signal Processing, 24 pages, Volume 2010. [23]. Chris Stauffer, W.E.L Grimson, “Adaptive background mixture models for real-time tracking”, The Artificial Intelligence Laboratory Massachusetts Institute of Technology Cambridge, MA 02139. [24]. TS. Đỗ Năng Toàn, TS. Phạm Việt Bình (2007), Giáo trình môn học xử lý ảnh, Khoa Công nghệ thông tin - Đại học Thái Nguyên. [25]. Frank Dellaert (2002), “The Expectation Maximization Algorithm”, College of Computing, Georgia Institute of Technology Technical Report number GIT-GVU02-20. [26]. The Mathworks, Inc. (2015), Image Processing Toolbox User Guide. [27]. Richard Szeliski (2010), “Computer Vision: Algorithms and Applications”. [28]. https://en.wikipedia.org/wiki/Blob_detection [29]. https://en.wikipedia.org/wiki/Connected-component_labeling 65 Phụ lục Main code %============Clear Windows================ clc; % Clear the command window. clear all; % Clear workspace close all; % Close all figures (except those of imtool.) workspace; % Make sure the workspace panel is showing. %==============Input Video================ video_name = 'visiontraffic.avi'; % video name %==============Video Information=============== video_info = VideoReader(video_name); % Show information of video %===============Read Video File=============== videoReader = vision.VideoFileReader(video_name); %==============Set Parameters================= NumTrainingFrames = 100; line_pos = [160 185 600 185]; %[x1 y1 x2 y2] pixel_up = 180; % round((y1-5)/5) pixel_down = 190; % round((y2+5)/5) dif_x = 180; dif_y = 120; 66 lane_pix = 430; %==============Detect Foreground================ foregroundDetector = vision.ForegroundDetector('NumGaussians', 3, 'NumTrainingFrames', NumTrainingFrames); % detect foreground % with 50 training frames, 3 Gaussian models %==============Create blob of object============== blobAnalysis = vision.BlobAnalysis('BoundingBoxOutputPort', true, 'AreaOutputPort', false, 'CentroidOutputPort', false, 'MinimumBlobArea', 350); % return blob area % minimum blob in pixels is 350 %=============Insert box==================== shapeInserter = vision.ShapeInserter('BorderColor','White'); % allow insert shapes in image %=============Set up videoPlayer================ videoPlayer = vision.VideoPlayer('Name', 'Detected Cars'); videoPlayer.Position(3:4) = [video_info.Width,video_info.Height+50]; % videoPlayer2 = vision.VideoPlayer('Name', 'Foreground'); % videoPlayer2.Position(3:4) = [video_info.Width,video_info.Height+50]; %==============Morphological Filter================ 67 se = strel('square', 3); % morphological filter for noise removal %=============Counting Parameters=============== count = 0; count_car = 0; count_truck = 0; count_frame = -1; lane_1 = 0; lane_2 = 0; isVehicle=0; time_speed=0; speed=0; %==============Process total video============== while ~isDone(videoReader) frame = step(videoReader); % read the next video frame count_frame = count_frame + 1; % Detect the foreground in the current video frame foreground = step(foregroundDetector, frame); % Use morphological opening to remove noise in the foreground filteredForeground = imopen(foreground, se); % Detect the connected components with the specified minimum area, and % compute their bounding boxes bbox = step(blobAnalysis, filteredForeground); 68 % Draw bounding boxes around the detected cars result = insertShape(frame, 'Rectangle', bbox, 'Color', 'green'); % Display the Line where vehicles are counted % result = insertShape(result, 'Line', line_pos, 'Color', 'yellow'); % If the bbox is detected pos_lane_1 = [225 182 175 6]; pos_lane_2 = [410 182 175 6]; result = insertShape(result, 'FilledRectangle', pos_lane_1, 'Color', 'red'); pos_A = [310 185]; result = insertText(result, pos_A, 'A', 'BoxOpacity', 1, 'TextColor','black','BoxColor', 'yellow', 'FontSize', 20); result = insertShape(result, 'FilledRectangle', pos_lane_2, 'Color', 'red'); pos_B = [485 185]; result = insertText(result, pos_B, 'B', 'BoxOpacity', 1, 'TextColor','black','BoxColor', 'green', 'FontSize', 20); if (size(bbox) ~= 0) % Get size of the bbox sizebbox = size(bbox); % Run one by one bbox for k = 1: sizebbox(1) bot_bbox = bbox(k,2)+ bbox(k,4); % Get y of bottom bbox toa_do = bbox(k,2)+ bbox(k,4); % Divide by 5 x_right = bbox(k,1) + bbox(k,3)/2; 69 % % Position to display word: "Object" % pos = zeros(k,2); % pos = [bbox(k,1), bbox(k,2)]; % Top left of bbox % result = insertText(result, pos, 'Object', 'BoxOpacity', 1, % 'TextColor','black','BoxColor', 'yellow', 'FontSize', 9); % % % Center position of bbox, display a filled circle % pos2 = zeros(k,3); % pos2 = [bbox(k,1)+bbox(k,3)/2, bbox(k,2)+bbox(k,4)/2,4]; % result = insertShape(result, 'filledcircle', pos2, 'Color', 'red'); % Counted position is interval pixel from 180 to 190, % divide by 5 is 36 to 38 if ((toa_do > pixel_up)&&(toa_do