MỤC LỤC MỞ ĐẦU 3 1. Lý do chọn đề tài. 3 2. Mục tiêu và nhiệm vụ nghiên cứu. 4 3. Đối tượng và phạm vi nghiên cứu. 4 4. Phương pháp nghiên cứu. 5 5. Kết quả dự kiến. 5 6. Ý nghĩa khoa học và thực tiễn của luận văn. 6 7. Bố cục của bài báo cáo. 6 8. Danh mục hình vẽ. 6 PHẦN 1. CÁC THUẬT TOÁN XÁC ĐỊNH VẬN TỐC CỦA XE CỘ DÙNG XỬ LÝ ẢNH 8 1.1. Tìm hiểu chung về xử lý ảnh. 8 1.2. Tiền xử lý Video 9 1.3. Các thuật toán xác định vận tốc xe cộ dùng xử lý ảnh 11 1.3.1. Bài toán xác định vận tốc đối tượng chuyển động 11 1.3.1.1. Xác định vận tốc dựa vào phương pháp luồng quang học (optical flow). 11 1.3.1.2. Xác định vận tốc dựa trên phương pháp trừ nền và phân mảnh vùng ảnh. 13 1.3.2. Sử dụng thuật toán Lucas – Kanade để tính vận tốc đối tượng chuyển động. 13 1.3.3. Phương pháp hiệu chỉnh camera để xác định vận tốc 17 1.3.3.1. Mô tả chương trình. 17 1.3.3.2 Xây dựng thuật toán phát hiện và dò vết dối tượng chuyển động. 17 1.3.3.3. Xây dựng thuật toán xác định vận tốc đối tượng chuyển động. 18 1.3.4. Phương pháp camera stereo cho xác định vận tốc đối tượng chuyển động. 21 1.3.4.1. Mô tả phương pháp. 21 1.3.4.2. Tổng quan về Stereo 21 1.3.4.3. Khoảng cách trên trục Y 22 1.3.4.4. Khoảng cách trên trục X 22 1.3.4.5. Tính toán vận tốc 22 KẾT LUẬN PHẦN 1 23 PHẦN 2. THỰC THI CÁC THUẬT TOÁN XỬ LÝ ẢNH CÓ SẴN DÙNG THƯ VIỆN MÃ NGUỒN MỞ OPENCV. 24 2.1. Tìm hiểu chung về thư viện mã nguồn mở OpenCV. 24 2.1.1. OpenCV là gì? 24 2.1.2. Vì sao lựa chọn OpenCV? 25 2.1.3. Cấu trúc và nội dung OpenCV như thế nào? 26 2.2. Cài đặt OpenCV 27 2.2.1. Cài đặt cơ bản 27 2.2.2. Tùy chỉnh khi cài đặt Windows 27 2.2.3. Sau khi cài đặt 28 2.3. Thực thi các thuật toán xử lý ảnh có sẵn dùng thư viện mã nguồn mở OpenCV 28 2.3.1. Đọc và ghi ảnh 28 2.3.2. Live Video nhập vào 29 2.3.3. Chuyển đổi Color 31 2.3.4. OpenCV Iplimage 33 2.3.5. Truy cập giá trị Pixel 33 2.4. Face Detection 35 2.4.1. Background and Preliminaries 35 2.4.2. Thực hiện nhận diện khuôn mặt, từng bước 36 2.4.3. Nhận dạng khuôn mặt 38 2.4.3.1. Introduction PCA 38 2.4.3.2. Mathematics of PCA 39 2.4.4. Giải thuật phân nhóm khuôn mặt 42 KẾT LUẬN PHẦN 2 43 PHẦN III. ĐÁNH GIÁ THỰC NGHIỆM 44 3.1. Công thức đánh giá thực nghiệm 44 3.2. Cơ sở dữ liệu thực nghiệm 46 3.2.1. YouTube action dataset 46 3.2.2. UCF Sports Action Dataset 48 3.2.3. Highway Traffic Clustering Database 48 3.2.3. Face dataset 49 3.2.4. Walk dataset 49 TÀI LIỆU THAM KHẢO 53 MỞ ĐẦU 1. Lý do chọn đề tài. Với sự phát triển nhanh chóng của các loại máy móc hiện đại như máy ảnh số, máy quay số, máy vi tính, điện thoại di động … thì lượng thông tin con người thu được dưới dạng hình ảnh là khá lớn. Để lượng thông tin này trở nên có ích hơn con người cần có các thao tác để tiến hành xử lý nó và từ đó tạo điều kiện cho sự phát triển không ngừng của các kỹ thuật xử lý hình ảnh. Xử lý ảnh là một trong những công nghệ được ứng dụng rộng rãi hiện nay trong nhiều lĩnh vực của đời sống xã hội. Không chỉ dừng lại ở việc xử lý những vết nhèo, tái chế và phục hồi các ảnh cũ, ngày nay công nghệ xử lý ảnh đã mang lại những tiến bộ vượt bậc như nhận dạng vân tay, nhận dạng khuôn mặt, nhận dạng đối tượng …v.v khi nó kết hợp với lĩnh vực trí tuệ nhân tạo. Thị giác máy là một lĩnh vực đã và đang rất phát triển. Khái niệm xử lý ảnh và thị giác máy – Computer vision có liên quan tới nhiều ngành học và hướng nghiên cứu khác nhau. Từ những năm 1970 khi mà năng lực tính toán của máy tính ngày càng trở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được những tập dữ liệu lớn như các hình ảnh, các đoạn phim thì khái niệm và kỹ thuật về thị giác máy ngày càng được nhắc đến và nghiên cứu nhiều hơn cho tới ngày nay. Thị giác máy bao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích tạo ra một hệ thống nhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu đa chiều. Việc kết hợp giữa thị giác máy với các kỹ thuật khác như công nghệ thông tin, truyền thông, điện tử, điều khiển tự động, cơ khí… cho chúng ta rất nhiều ứng dụng trong đời sống hàng ngày cũng như trong khoa học, an ninh, quân sự… Ngày nay, ứng dụng của thị giác máy đã trở nên rất rộng lớn và đa dạng, len lỏi vào mọi lĩnh vực từ quân sự, khoa học, vũ trụ, cho đến y học, sản xuất, và tự động hóa tòa nhà… Mà trong lĩnh vực giao thông việc ứng dụng xử lý ảnh cùng các phương pháp xác định vận tốc xe cộ là vô cùng cần thiết tạo tiền đề cho việc xử lý các vi phạm giao thông giúp cho việc quản lý giao thông trong tương lai được tốt hơn. Xuất phát từ nhu cầu thực tế, em xin mạnh dạn chọn đề tài: “Nghiên cứu so sánh các phương pháp xác định vận tốc của xe cộ dùng xử lý ảnh” (Comparative study of vehicle speed estimation methods using image processing ). 2. Mục tiêu và nhiệm vụ nghiên cứu. Mục đích của đề tài nhằm nghiên cứu các thuật toán phát hiện và theo vết, từ đó tính toán vận tốc của đối tượng chuyển động từ dữ liệu video, làm cơ sở để xây dựng hệ thống xác định vận tốc của đối tượng tham gia giao thông. + Xác định đối tượng giao thông đang chuyển động. + Dò vết và ước lượng vận tốc sử dụng phương pháp optical flow, phương pháp trừ nền và phân mảnh vùng ảnh. + Sử dụng thuật toán Lucas – Kanade để tính vận tốc đối tượng chuyển động. + Tạo tiền đề cho việc xác định vận tốc của các đối tượng vi phạm, làm bằng chứng cho việc xử lý vi phạm, góp phần nâng cao ý thức chấp hành tham gia giao thông của người dân. + Thực thi các thuật tóan xử lý ảnh có sẵn dùng sử dụng OpenCV. + So sánh về độ phức tạp, độ chính xác và thời gian thực hiện. Bên cạnh đó đề tài còn mong muốn giúp cho mọi người có một cái nhìn toàn diện hơn về vai trò và khả năng ứng dụng của công nghệ xử lý ảnh vào trong thực tế của đời sống xã hội. 3. Đối tượng và phạm vi nghiên cứu. Đối tượng nghiên cứu: Trong báo cáo này, dữ liệu được xử lý là các đoạn video có sẵn được quay từ một camera tĩnh ghi lại với chuẩn AVI (Audio Video Interleave). Phạm vi nghiên cứu: Phạm vi nghiên cứu của đề tài liên quan đến lĩnh vực xử lý ảnh số và thực thi các thuật toán xử lý ảnh thông qua việc sử dụng OpenCV. 4. Phương pháp nghiên cứu. • Phương pháp nghiên cứu lý thuyết + Tìm hiểu phương pháp trừ nền (background subtraction) để phát hiện chuyển động + Tìm hiểu phương pháp phân mảnh vùng(region based segmentation) để dò vết đối tượng. + Tìm hiểu phương pháp xác định vận tốc của đối tượng chuyển động sử dụng camera calibration. + Tìm hiểu cách thực thi các thuật toán xử lý ảnh dùng OpenCV. • Phương pháp nghiên cứu thực nghiệm + Tiến hành phân tích và cài đặt: thuật toán trừ nền để phát hiện chuyển động, thuật toán phát hiện và theo vết đối tượng chuyển động từ dữ liệu video, từ đó xác định vận tốc của đối tượng chuyển động. + So sánh và đánh giá kết quả đạt được. 5. Kết quả dự kiến. Nắm vững và cài đặt thành công các thuật toán: phát hiện chuyển động bằng phương pháp trừ nền, truy vết đối tượng bằng phương pháp phân mảnh vùng (region based segmentation), từ đó xây dựng hành công chương trình xác định vận tốc đối tượng chuyển động. Thực thi được các thuật toán xử lý ảnh có sẵn dùng thư viện mã nguồn mở OpenCV. Tạo được bảng so sánh kết quả, độ chính xác của các phương pháp phát hiện và theo vết đối tượng chuyển động dựa trên tập các video có sẵn. So sánh về độ phức tạp, độ chính xác và thời gian thực hiện của các thuật toán xác định vận tốc đối tượng chuyển động. 6. Ý nghĩa khoa học và thực tiễn của luận văn. • Về mặt lý thuyết + Ứng dụng thành công công nghệ xử lý ảnh vào trong thực tế. + Tạo tiền đề cho những nghiên cứu tiếp theo trong tương lai. • Về mặt thực tiễn Giúp giảm công sức, tăng hiệu quả trong việc xác định đối tượng vi phạm tốc độ khi tham gia giao thông (qua hầm,cầu…). 7. Bố cục của bài báo cáo. Phần 1. Các thuật toán xác định vận tốc của xe cộ dùng xử lý ảnh Phần 2. Thực thi các thuật toán xử lý ảnh có sẵn dùng thư viện mã nguồn mở OpenCV Phần 3. So sánh về độ phức tạp, độ chính xác và thời gian thực hiện 8. Danh mục hình vẽ. Hình Nội dung Trang Hình 1 Quá trình xử lý ảnh Hình 2 Các bước cơ bản trong một hệ thống xử lý ảnh. Hình 3 Kết quả sau khi tiền xử lí video Hình 4 Frames mức 0 Hình 5 Frames mức 1 Hình 6 Frames mức 2 Hình 7 Optical flow mức 0 Hình 8 Sơ đồ quy chiếu từ video sang thực tế Hình 9 Hướng chuyển động nhìn từ trên xuống Hình 10 Hệ thống chuẩn của hai camera với độ dài tiêu cự f và khoảng cách Hình 11 Quá trình phát triển của OpenCV Hình 12 Cấu trúc của OpenCV PHẦN 1. CÁC THUẬT TOÁN XÁC ĐỊNH VẬN TỐC CỦA XE CỘ DÙNG XỬ LÝ ẢNH 1.1. Tìm hiểu chung về xử lý ảnh. Khoảng hơn mười năm trở lại đây, phần cứng máy tính và các thiết bị liên quan đã có sự tiến bộ vượt bậc về tốc độ tính toán, dung lượng chứa, khả năng xử lý v.v.. và giá cả đã giảm đến mức máy tính và các thiết bị liên quan đến xử lý ảnh đã không còn là thiết bị chuyên dụng nữa. Khái niệm ảnh số đã trở nên thông dụng với hầu hết mọi người trong xã hội và việc thu nhận ảnh số bằng các thiết bị cá nhân hay chuyên dụng cùng với việc đưa vào máy tính xử lý đã trở nên đơn giản. Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai trò quan trọng nhất. Những năm trở lại đây với sự phát triển của phần cứng máy tính, xử lý ảnh và đồ hoạ đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống. Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tương tác người máy. Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho ra kết quả mong muốn. Kết quả đầu ra của một quá trình xử lý ảnh có thể là một ảnh “tốt hơn” hoặc một kết luận. Hình 1. Quá trình xử lý ảnh Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c1, c2,..., cn). Do đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều. Hình 2. Các bước cơ bản trong một hệ thống xử lý ảnh. Hình 2 đã biểu diễn sơ đồ tổng quát của một hệ thống xử lý ảnh: Khối thu nhận ảnh: có nhiệm vụ tiếp nhận ảnh đầu vào. Khối tiền xử lý: có nhiệm vụ xử lý nâng cao chất lượng ảnh như giảm nhiễu, phân vùng, tìm biên v.v… Khối trích chọn đặc điểm: có nhiệm vụ trích chọn các đặc trưng quan trọng của các bức ảnh đã được tiền xử lý để sử dụng trong hệ quyết định. 1.2. Tiền xử lý Video Với quá trình tiền xử lý video, sử dụng thuật toán : thuật toán tích chập (convolution) nhằm lọc bớt các tín hiệu không gần với các đường viền (edge), tức là làm nổi rõ các đường viền của vật thể, giúp xác định vật thể tốt hơn. Tích chập (convolution) là một phép toán quan trọng biểu diễn cho các hệ thống rời rạc tuyến tính, trong xử lý ảnh, nó cho phép làm được nhiều thứ: như tính toán các dẫn xuất, phát hiện cạnh, làm mờ… Tất cả những việc trên được thực hiện với một “hạt nhân chập” (convolution kernel). Hạt nhân chập là một ma trận nhỏ, trong đó có một giá trị được gọi là “điểm neo” (anchor point). Điểm neo được dùng để xác định vị trí tính toán của hạt nhân chập với ảnh. Để thực hiện tích chập thì hạt nhân chập sẽ trượt qua các điểm của ảnh và thực hiện phép tích chập. Theo công thức:
Trang 1MỤC LỤC
MỞ ĐẦU 3
1 Lý do chọn đề tài 3
2 Mục tiêu và nhiệm vụ nghiên cứu 4
3 Đối tượng và phạm vi nghiên cứu 4
4 Phương pháp nghiên cứu 5
5 Kết quả dự kiến 5
6 Ý nghĩa khoa học và thực tiễn của luận văn 6
7 Bố cục của bài báo cáo 6
8 Danh mục hình vẽ 6
PHẦN 1 CÁC THUẬT TOÁN XÁC ĐỊNH VẬN TỐC CỦA XE CỘ DÙNG XỬ LÝ ẢNH 8
1.1 Tìm hiểu chung về xử lý ảnh 8
1.2 Tiền xử lý Video 9
1.3 Các thuật toán xác định vận tốc xe cộ dùng xử lý ảnh 11
1.3.1 Bài toán xác định vận tốc đối tượng chuyển động 11
1.3.1.1 Xác định vận tốc dựa vào phương pháp luồng quang học (optical flow) 11
1.3.1.2 Xác định vận tốc dựa trên phương pháp trừ nền và phân mảnh vùng ảnh.13 1.3.2 Sử dụng thuật toán Lucas – Kanade để tính vận tốc đối tượng chuyển động. .13
1.3.3 Phương pháp hiệu chỉnh camera để xác định vận tốc 17
1.3.3.1 Mô tả chương trình 17
1.3.3.2 Xây dựng thuật toán phát hiện và dò vết dối tượng chuyển động 17
1.3.3.3 Xây dựng thuật toán xác định vận tốc đối tượng chuyển động 18
1.3.4 Phương pháp camera stereo cho xác định vận tốc đối tượng chuyển động 21
1.3.4.1 Mô tả phương pháp 21
1.3.4.2 Tổng quan về Stereo 21
Trang 21.3.4.3 Khoảng cách trên trục Y 22
1.3.4.4 Khoảng cách trên trục X 22
1.3.4.5 Tính toán vận tốc 22
KẾT LUẬN PHẦN 1 23
PHẦN 2 THỰC THI CÁC THUẬT TOÁN XỬ LÝ ẢNH CÓ SẴN DÙNG THƯ VIỆN MÃ NGUỒN MỞ OPENCV 24
2.1 Tìm hiểu chung về thư viện mã nguồn mở OpenCV 24
2.1.1 OpenCV là gì? 24
2.1.2 Vì sao lựa chọn OpenCV? 25
2.1.3 Cấu trúc và nội dung OpenCV như thế nào? 26
2.2 Cài đặt OpenCV 27
2.2.1 Cài đặt cơ bản 27
2.2.2 Tùy chỉnh khi cài đặt Windows 27
2.2.3 Sau khi cài đặt 28
2.3 Thực thi các thuật toán xử lý ảnh có sẵn dùng thư viện mã nguồn mở OpenCV .28
2.3.1 Đọc và ghi ảnh 28
2.3.2 Live Video nhập vào 29
2.3.3 Chuyển đổi Color 31
2.3.4 OpenCV Iplimage 33
2.3.5 Truy cập giá trị Pixel 33
2.4 Face Detection 35
2.4.1 Background and Preliminaries 35
2.4.2 Thực hiện nhận diện khuôn mặt, từng bước 36
2.4.3 Nhận dạng khuôn mặt 38
2.4.3.1 Introduction PCA 38
2.4.3.2 Mathematics of PCA 39
2.4.4 Giải thuật phân nhóm khuôn mặt 42
Trang 3KẾT LUẬN PHẦN 2 43
PHẦN III ĐÁNH GIÁ THỰC NGHIỆM 44
3.1 Công thức đánh giá thực nghiệm 44
3.2 Cơ sở dữ liệu thực nghiệm 46
3.2.1 YouTube action dataset 46
3.2.2 UCF Sports Action Dataset 48
3.2.3 Highway Traffic Clustering Database 48
3.2.3 Face dataset 49
3.2.4 Walk dataset 49
TÀI LIỆU THAM KHẢO 53
Trang 4MỞ ĐẦU
1 Lý do chọn đề tài.
Với sự phát triển nhanh chóng của các loại máy móc hiện đại như máy ảnh số,máy quay số, máy vi tính, điện thoại di động … thì lượng thông tin con người thuđược dưới dạng hình ảnh là khá lớn Để lượng thông tin này trở nên có ích hơn conngười cần có các thao tác để tiến hành xử lý nó và từ đó tạo điều kiện cho sự pháttriển không ngừng của các kỹ thuật xử lý hình ảnh Xử lý ảnh là một trong nhữngcông nghệ được ứng dụng rộng rãi hiện nay trong nhiều lĩnh vực của đời sống xãhội Không chỉ dừng lại ở việc xử lý những vết nhèo, tái chế và phục hồi các ảnh
cũ, ngày nay công nghệ xử lý ảnh đã mang lại những tiến bộ vượt bậc như nhậndạng vân tay, nhận dạng khuôn mặt, nhận dạng đối tượng …v.v khi nó kết hợp vớilĩnh vực trí tuệ nhân tạo
Thị giác máy là một lĩnh vực đã và đang rất phát triển Khái niệm xử lý ảnh vàthị giác máy – Computer vision có liên quan tới nhiều ngành học và hướng nghiêncứu khác nhau Từ những năm 1970 khi mà năng lực tính toán của máy tính ngàycàng trở nên mạnh mẽ hơn, các máy tính lúc này có thể xử lý được những tập dữliệu lớn như các hình ảnh, các đoạn phim thì khái niệm và kỹ thuật về thị giác máyngày càng được nhắc đến và nghiên cứu nhiều hơn cho tới ngày nay Thị giác máybao gồm lý thuyết và các kỹ thuật liên quan nhằm mục đích tạo ra một hệ thốngnhân tạo có thể tiếp nhận thông tin từ các hình ảnh thu được hoặc các tập dữ liệu đachiều Việc kết hợp giữa thị giác máy với các kỹ thuật khác như công nghệ thôngtin, truyền thông, điện tử, điều khiển tự động, cơ khí… cho chúng ta rất nhiều ứngdụng trong đời sống hàng ngày cũng như trong khoa học, an ninh, quân sự… Ngàynay, ứng dụng của thị giác máy đã trở nên rất rộng lớn và đa dạng, len lỏi vào mọilĩnh vực từ quân sự, khoa học, vũ trụ, cho đến y học, sản xuất, và tự động hóa tòanhà…
Trang 5Mà trong lĩnh vực giao thông việc ứng dụng xử lý ảnh cùng các phương phápxác định vận tốc xe cộ là vô cùng cần thiết tạo tiền đề cho việc xử lý các vi phạmgiao thông giúp cho việc quản lý giao thông trong tương lai được tốt hơn.
Xuất phát từ nhu cầu thực tế, em xin mạnh dạn chọn đề tài: “Nghiên cứu so sánh các phương pháp xác định vận tốc của xe cộ dùng xử lý ảnh”
(Comparative study of vehicle speed estimation methods using image processing )
2 Mục tiêu và nhiệm vụ nghiên cứu.
Mục đích của đề tài nhằm nghiên cứu các thuật toán phát hiện và theo vết, từ
đó tính toán vận tốc của đối tượng chuyển động từ dữ liệu video, làm cơ sở để xâydựng hệ thống xác định vận tốc của đối tượng tham gia giao thông
+ Xác định đối tượng giao thông đang chuyển động
+ Dò vết và ước lượng vận tốc sử dụng phương pháp optical flow, phươngpháp trừ nền và phân mảnh vùng ảnh
+ Sử dụng thuật toán Lucas – Kanade để tính vận tốc đối tượng chuyển động.+ Tạo tiền đề cho việc xác định vận tốc của các đối tượng vi phạm, làm bằngchứng cho việc xử lý vi phạm, góp phần nâng cao ý thức chấp hành tham giagiao thông của người dân
+ Thực thi các thuật tóan xử lý ảnh có sẵn dùng sử dụng OpenCV
+ So sánh về độ phức tạp, độ chính xác và thời gian thực hiện
Bên cạnh đó đề tài còn mong muốn giúp cho mọi người có một cái nhìn toàndiện hơn về vai trò và khả năng ứng dụng của công nghệ xử lý ảnh vào trong thực
tế của đời sống xã hội
3 Đối tượng và phạm vi nghiên cứu.
- Đối tượng nghiên cứu:
Trong báo cáo này, dữ liệu được xử lý là các đoạn video có sẵn được quay từmột camera tĩnh ghi lại với chuẩn AVI (Audio Video Interleave)
Trang 6- Phạm vi nghiên cứu:
Phạm vi nghiên cứu của đề tài liên quan đến lĩnh vực xử lý ảnh số và thực thicác thuật toán xử lý ảnh thông qua việc sử dụng OpenCV
4 Phương pháp nghiên cứu.
Phương pháp nghiên cứu lý thuyết
+ Tìm hiểu phương pháp trừ nền (background subtraction) để phát hiệnchuyển động
+ Tìm hiểu phương pháp phân mảnh vùng(region based segmentation) để dòvết đối tượng
+ Tìm hiểu phương pháp xác định vận tốc của đối tượng chuyển động sử dụngcamera calibration
+ Tìm hiểu cách thực thi các thuật toán xử lý ảnh dùng OpenCV
Phương pháp nghiên cứu thực nghiệm
+ Tiến hành phân tích và cài đặt: thuật toán trừ nền để phát hiện chuyển động,thuật toán phát hiện và theo vết đối tượng chuyển động từ dữ liệu video, từ đóxác định vận tốc của đối tượng chuyển động
+ So sánh và đánh giá kết quả đạt được
5 Kết quả dự kiến.
Nắm vững và cài đặt thành công các thuật toán: phát hiện chuyển động bằngphương pháp trừ nền, truy vết đối tượng bằng phương pháp phân mảnh vùng(region based segmentation), từ đó xây dựng hành công chương trình xác định vậntốc đối tượng chuyển động
Thực thi được các thuật toán xử lý ảnh có sẵn dùng thư viện mã nguồn mởOpenCV
Tạo được bảng so sánh kết quả, độ chính xác của các phương pháp phát hiện
và theo vết đối tượng chuyển động dựa trên tập các video có sẵn
Trang 7So sánh về độ phức tạp, độ chính xác và thời gian thực hiện của các thuật toánxác định vận tốc đối tượng chuyển động.
6 Ý nghĩa khoa học và thực tiễn của luận văn.
Về mặt lý thuyết
+ Ứng dụng thành công công nghệ xử lý ảnh vào trong thực tế
+ Tạo tiền đề cho những nghiên cứu tiếp theo trong tương lai
Về mặt thực tiễn
Giúp giảm công sức, tăng hiệu quả trong việc xác định đối tượng vi phạm tốc
độ khi tham gia giao thông (qua hầm,cầu…)
7 Bố cục của bài báo cáo.
Phần 1 Các thuật toán xác định vận tốc của xe cộ dùng xử lý ảnh
Phần 2 Thực thi các thuật toán xử lý ảnh có sẵn dùng thư viện mã nguồn mởOpenCV
Phần 3 So sánh về độ phức tạp, độ chính xác và thời gian thực hiện
8 Danh mục hình vẽ.
Hình 1 Quá trình xử lý ảnh
Hình 2 Các bước cơ bản trong một hệ thống xử lý ảnh
Hình 3 Kết quả sau khi tiền xử lí video
Hình 4 Frames mức 0
Hình 5 Frames mức 1
Hình 6 Frames mức 2
Hình 7 Optical flow mức 0
Hình 8 Sơ đồ quy chiếu từ video sang thực tế
Hình 9 Hướng chuyển động nhìn từ trên xuống
Hình 10 Hệ thống chuẩn của hai camera với độ dài tiêu cự f và
khoảng cách
Hình 11 Quá trình phát triển của OpenCV
Hình 12 Cấu trúc của OpenCV
Trang 8PHẦN 1 CÁC THUẬT TOÁN XÁC ĐỊNH VẬN TỐC CỦA XE CỘ DÙNG
XỬ LÝ ẢNH 1.1 Tìm hiểu chung về xử lý ảnh.
Khoảng hơn mười năm trở lại đây, phần cứng máy tính và các thiết bị liênquan đã có sự tiến bộ vượt bậc về tốc độ tính toán, dung lượng chứa, khả năng xử
lý v.v và giá cả đã giảm đến mức máy tính và các thiết bị liên quan đến xử lý ảnh
đã không còn là thiết bị chuyên dụng nữa Khái niệm ảnh số đã trở nên thông dụngvới hầu hết mọi người trong xã hội và việc thu nhận ảnh số bằng các thiết bị cánhân hay chuyên dụng cùng với việc đưa vào máy tính xử lý đã trở nên đơn giản.Con người thu nhận thông tin qua các giác quan, trong đó thị giác đóng vai tròquan trọng nhất Những năm trở lại đây với sự phát triển của phần cứng máy tính,
xử lý ảnh và đồ hoạ đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trongcuộc sống Xử lý ảnh và đồ hoạ đóng một vai trò quan trọng trong tương tác ngườimáy
Quá trình xử lý ảnh được xem như là quá trình thao tác ảnh đầu vào nhằm cho
ra kết quả mong muốn Kết quả đầu ra của một quá trình xử lý ảnh có thể là mộtảnh “tốt hơn” hoặc một kết luận
Hình 1 Quá trình xử lý ảnh
Ảnh có thể xem là tập hợp các điểm ảnh và mỗi điểm ảnh được xem như làđặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đốitượng trong không gian và nó có thể xem như một hàm n biến P(c1, c2, , cn) Do
đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều
Ảnh tốt hơnKết luận
Trang 9Hình 2 Các bước cơ bản trong một hệ thống xử lý ảnh.
Hình 2 đã biểu diễn sơ đồ tổng quát của một hệ thống xử lý ảnh:
Khối thu nhận ảnh: có nhiệm vụ tiếp nhận ảnh đầu vào
Khối tiền xử lý: có nhiệm vụ xử lý nâng cao chất lượng ảnh như giảm nhiễu,phân vùng, tìm biên v.v…
Khối trích chọn đặc điểm: có nhiệm vụ trích chọn các đặc trưng quan trọngcủa các bức ảnh đã được tiền xử lý để sử dụng trong hệ quyết định
1.2 Tiền xử lý Video
Với quá trình tiền xử lý video, sử dụng thuật toán : thuật toán tích chập(convolution) nhằm lọc bớt các tín hiệu không gần với các đường viền (edge), tức
là làm nổi rõ các đường viền của vật thể, giúp xác định vật thể tốt hơn
Tích chập (convolution) là một phép toán quan trọng biểu diễn cho các hệthống rời rạc tuyến tính, trong xử lý ảnh, nó cho phép làm được nhiều thứ: như tínhtoán các dẫn xuất, phát hiện cạnh, làm mờ… Tất cả những việc trên được thực hiệnvới một “hạt nhân chập” (convolution kernel) Hạt nhân chập là một ma trận nhỏ,
Hệ quyết định
Hậu xử lý
Đổi sánh rút
ra kết luận
Trang 10trong đó có một giá trị được gọi là “điểm neo” (anchor point) Điểm neo được dùng
để xác định vị trí tính toán của hạt nhân chập với ảnh Để thực hiện tích chập thì hạtnhân chập sẽ trượt qua các điểm của ảnh và thực hiện phép tích chập Theo côngthức: 𝑀𝑖−1 𝑀𝑗−1
𝐻(𝑥, 𝑦) = ∑
𝑖=0 ∑ 𝐼(𝑥 + 𝑖 − 𝑎𝑖, 𝑦 + 𝑗 − 𝑎𝑗)𝐺(𝑖, 𝑗)
𝑗=0 (2-1)
Trong đó, cường độ điểm ảnh là I(x,y), hạt nhân chập là G(i,j) (với 0<i<Mi-1
và 0<j<Mj-1) và điểm neo được xác định ở (ai,aj) trong hệ toạ độ của hạt nhân chập
Hình 3 Kết quả sau khi tiền xử lí video
Trang 111.3 Các thuật toán xác định vận tốc xe cộ dùng xử lý ảnh
1.3.1 Bài toán xác định vận tốc đối tượng chuyển động
Xác định vận tốc của đối tượng chuyển động qua camera là bước quan trọng trong phát triển các ứng dụng thị giác máy tính Nó có nhiều ứng dụng trong nhiều lĩnh vực như:
Giao thông vận tải
Hệ thống chăm sóc sức khỏe
Công nghiệp sản xuất tự động
Hiện nay có nhiều phương pháp xác định vận tốc đối tượng chuyển động qua camera Tuy nhiên, các phương pháp đều trải qua các bước chính sau:
Bước 1: Phát hiện và dò vết các đối tượng chuyển động
Bước 2: Xác định đối tượng chuyển động mục tiêu
Bước 3: Tính vận tốc của đối tượng mục tiêu
Có nhiều phương pháp được đưa ra để xác định vận tốc đối tượng chuyển động,tuy nhiên vấn đề này còn nhiều phức tạp cần nghiên cứu lâu dài Trong luận văn này, ta giới thiệu các phương pháp sau:
Phương pháp 1: Xác định vận tốc dựa vào phương pháp luồng quang học (optical flow)
Phương pháp 2: Xác định vận tốc dựa vào phương pháp trừ nền kết hợp với phân mảnh vùng
1.3.1.1 Xác định vận tốc dựa vào phương pháp luồng quang học (optical flow).
Phương pháp luồng quang học dùng để tính toán hướng của chuyển động của đối tượng và đo lường vận tốc của đối tượng đó
Phương pháp Optical flow thực hiện bằng cách sử dụng các vector có hướng của các đối tượng chuyển động theo thời gian để phát hiện các vùng chuyển động trong một ảnh
Trang 12Optical flow là khái niệm chỉ sự chuyển động tương đối của các điểm trên bề mặt một đối tượng, dưới góc quan sát của một điểm mốc (mắt, camera…) Sự chuyển động của các vật thể (mà thực tế có thể coi là sự chuyển động của các điểm trên bề mặt của vật thể ấy) trong không gian 3 chiều, khi được chiếu lên một mặt phẳng quan sát 2D được gọi là motion field Nói chung, mục đích của các phương pháp optical flow estimation là để xác định (xấp xỉ) motion field từ một tập các frame ảnh thay đổi theo thời gian, chúng được sử dụng rộng rãi trong các bài toán xác định chuyển động hoặc bám vết vật thể,…
Các bước chính để tính toán sự khác biệt luồng quang học:
Bước 1: Đo lường các đạo hàm cường độ theo không gian và thời gian
Bước 2: Tích hợp vận tốc chuẩn (normal) vào trong vận tốc toàn thể
Các điều kiện ràng buộc của phương pháp:
Tất cả các đối tượng trong cảnh là cố định, không có thay đổi về hình dạng
Đối tượng chuyển động trong mặt phẳng (2D), nghĩa là tọa độ (OZ) là hằng số
Ưu điểm của phương pháp là:
Đơn giản, số lượng tính toán ít
Tính toán trong các điều kiện của thuật toán đem lại kết quả tính vận tốc với
độ chính xác cao, và tỉ lệ sai số thấp
Nhược điểm của phương pháp:
Không thích hợp trong tính toán vận tốc trong môi trường bên ngoài, và các đối tượng có hình dạng bất kì
Phương pháp chỉ cho kết quả tốt khi đối tượng chuyển động trong mặt
phẳng, còn khi đối tượng chuyển động theo chiều sâu,phương pháp ít có tác dụng
1.3.1.2 Xác định vận tốc dựa trên phương pháp trừ nền và phân mảnh vùng ảnh.
Phương pháp dùng để xác định vận tốc của đối tượng chuyển động thông qua đoạn video dựa trên hai kĩ thuật là trừ nền và phân mảnh vùng
Trang 13Các điều kiện ràng buộc của phương pháp:
Nền không được thay đổi
Đối tượng chuyển động trong mặt phẳng không theo chiều sâu
Các đối tượng không chồng lên nhau
Ưu điểm của phương pháp:
Xác định được vận tốc nhiều đối tượng một lúc
Đơn giản, ít lỗi và hiệu quả đối với đối tượng bất kỳ
Nhược điểm của phương pháp:
Phương pháp ít hiệu quả đối với đối tượng chuyển động theo chiều sâu
Chưa xác định được đối tượng khi nhiều đối tượng chuyển động chồng lên nhau
Tính vận tốc trung bình chưa quy đổi tọa độ thực nên độ chính xác chưa cao
Đánh giá và kết luận
Từ kết quả nghiên cứu trên, ta nhận thấy rằng các phương pháp xác định vận tốc có độ chính xác khá cao, đơn giản dễ áp dụng Tuy nhiên,các phương pháp còn nhiều hạn chế như:
Chỉ xác định được vận tốc khi đối tượng chuyển động trong mặt phẳng
Độ chính xác giảm khi đối tượng chuyển động theo quỹ đạo phức tạp…
1.3.2 Sử dụng thuật toán Lucas – Kanade để tính vận tốc đối tượng chuyển động.
Lucas – Kanade là một kĩ thuật xác định optical flow và dựa vào đó ta có thể
sử dụng để tính toán vận tốc của đối tượng chuyển động Lucas – Kanade có độ chính xác chấp nhận được của thuật toán là khá cao cũng như tính ưu việt về thời gian tương đối lớn
Thuật toán Lucas – Kanade
Trang 14Thuật toán Lucas – Kanade là một thuật toán dùng để tính ước lượng chuyển động dựa trên sự khác nhau của 2 frame liên tiếp trong một chuỗi frame Thuật toán Lucas – Kanade dựa trên một số điều kiện sau:
• Cường độ sáng của pixel không đổi theo thời gian
• Chuyển động nhỏ
• Các pixel lân cận cũng chuyển động cùng vận tốc Thuật toán Lucas – Kanade gồm 2 bước:
Bước 1: Xây dựng 1 tháp Gaussian của 2 frame liên tiếp
Bước này thực chất là thực hiện thuật toán resize ảnh theo công thức:
+ 𝐼𝐿−1(2x,2y-1) + 𝐼𝐿−1(2x,2y+1)) + + 𝐼𝐿−1(2x+1,2y-1) + 𝐼𝐿−1(2x-1,2y+1) + 𝐼𝐿−1(2x+1,2y+1)]
Trong đó I (x,y) là giá trị của pixel tại tọa độ (x,y), quy ước ảnh gốc là ảnh mức 0
𝐼0, các ảnh sau mỗi lần resize là 𝐼1, 𝐼2, 𝐼3… Hình 4, 5, 6 thể hiện ảnh khi đã được resize ở mức 0,1 và 2
Hình 4 Frames mức 0
Hình 5 Frames mức 1
Trang 15Hình 6 Frames mức 2
Bước 2: Xác định vector vận tốc tại mỗi mức
Vector vận tốc tại mức L : 𝑑𝐿 phải làm cực tiểu hàm bình phương lỗi:
Thành lập công thức tính vận tốc thật của xe:
Sơ đồ quy chiếu từ video sang thực tế sẽ giúp ta có cái nhìn trực quan hơn vềcông thức tính toán vận tốc thực tế của phương tiện giao thông (Hình 2-18) [1]
Trang 16Hình 8 Sơ đồ quy chiếu từ video sang thực tế
Xây dựng công thức liên hệ giữa vận tốc thực tế của một điểm chuyển động trên đường với số lượng pixel chuyển động qua 2 frame liên tiếp [1]:
Để có thể tính được vận tốc thật của xe, một yêu cầu cần thiết là phải xác định được kích thước của đường mà camera có thể quan sát được, ta gọi là
∆x = x1 – x2 (pixel)
∆y = y1 − y2 (pixel)
Ta có thể xác định được độ dịch chuyển thật của điểm trên mặt đất như sau:
∆ X = (x1-x2)* D1/320 (m)
∆Y = (y1 − y2) ∗ D2/240 (m)
Độ di chuyển của xe trên thực tế:
Trang 17 Đây là độ dịch chuyển của xe qua 2 frame liên tiếp, do đó, để tính vận tốc di chuyển của xe, ta nhân độ di chuyển với tốc độ frame R (fps)
1.3.3.2 Xây dựng thuật toán phát hiện và dò vết dối tượng chuyển động
a Mô tả thuật toán.
Để dò vết mọi đối tượng ta kết hợp của hai phương pháp trừ nền (backgroundextraction) và phân mảnh vùng (region based segmentation), đây là bước quantrọng nhất của bài toán
Đầu tiên tại mỗi khung hình, tiền cảnh được tách ra khỏi nền bằng phươngpháp ảnh tham chiếu [12] Sau đó, dựa trên tiền cảnh lấy được ta sẽ xác định cácthành phần liên kết (connected components), ước lượng diện tích các vùng ảnh, tìmdiện tích vùng lớn nhất, và cuối cùng là trả về tọa độ trung tâm của vùng đó
b Thuật toán xử lý
Đầu vào: Dữ liệu từ camera quan sát hoặc từ video được thu lại
Đầu ra: Tọa độ trọng tâm của đối tượng chuyển động
Thuật toán xử lý được trình bày như sau:
for i=0 to (totalFrame-1) do
a Đọc frame[i]
Trang 18b Lấy ảnh tham chiếu, rImg.
c Cập nhập frame[i] bằng phương pháp trừ nền ảnh tham chiếu rImg
d Tại mỗi frame[i]:
Xác định các thành phần liên kết bằng phương pháp gánnhãn
Tính toán diện tích của từng vùng liên kết
Xóa bỏ các đối tượng nhỏ hơn giá trị ngưỡng (threshhold)
e Tạo cấu trúc hình thái các thành phần, i.e ; Gắn cấu trúc hình cácthành phần như sau:
Khoảng cách giữa hai trọng tâm P ( ) và Q ( ) hệ tọa độ 3D:
( 2.1 )
Thuật toán xác định vận tốc của đối tượng chuyển động mục tiêu
Đầu vào: Dữ liệu từ camera quan sát hoặc từ video được thu lại
Đầu ra: vận tốc của đối tượng chuyển động mục tiêu
Trang 19 Thuật toán xử lý được trình bày như sau:
1 Xác định các tham số bên trong, bên ngoài bằng kĩ thuật hiệu chỉnhcamera
2 Đọc file video
3 Xử lý file để lấy thông tin cần thiết từ đoạn video
4 Tìm tham số tuần suất Frame của đoạn video RF
5 Tính tổng số thời gian và thời gian từng frame:
6 Xác định quãng đường Di của đối tượng giữa khung thứ i và khungthứ (i+1) trong thế giới thực bằng cách sử dụng hàm truy vết đối tượng, vàphương pháp tính khoảng cách
7 Tính vận tốc giữa khung Fi và Fi+1 như sau :
8 Lặp bước 6, 7 để xác định tất cả vận tốc giữa các khung hình
9 Tính toán vận tốc trung bình của đối tượng trong đoạn video nhưsau:
10 Kết thúc
Kết quả
Hiệu chỉnh Camera (Camera calibration) :
Khoảng cách tiêu điểm (Focal Length):
Điểm chính ảnh (Principal point)
Trang 20 Độ lệch (Skew): Angleof pixel axes Degrees
Sai sốđiểmảnh (Pixel error):
Vận tốc di chuyển: Tiến hành thử nghiệm trên camera có tốc độ 30 khung hình trên giây, và kích thước khung hình như sau 640 X 480 Kết quả thống kê như sau:
Vận tốc tính toán v’(cm/s)
Trang 21Hình 9 Hướng chuyển động nhìn từ trên xuống
1.3.4.2 Tổng quan về Stereo
Stereo vision là kĩ thuật sử dụng hai hay nhiều camera hoặc một camerachuyển động để đo lường khoảng cách Thiết lập đơn giản nhất (cấu hình kinhđiển) sử dụng hai máy ảnh phẳng đặt cách nhau một khoảng cách theo chiều ngangbiết trước (xem ảnh 2.4)
Hình 10 Hệ thống chuẩn của hai camera với độ dài tiêu cự f và khoảng cách
cơ sở T
Khoảng cách theo chiều ngang giữa hai camera có tọa độ pi và pr được gọi là
độ lệch và nó cho phép tính toán độ sâu hoặc khoảng cách Zp của điểm 3D P từcamera
Trang 22trái Đối tượng này sau đó được sử dụng là mẫu để tìm một đối tượng khớp bên ảnhbên phải Điều đó hoàn toàn thực hiện được bởi vì ảnh của cùng một đối tượngtrong khung nhìn bên trái và bên phải là rất tương đồng khi sử dụng mô hình stereocamera kinh điển trong báo cáo
(2.3)
Trang 23KẾT LUẬN PHẦN 1
Trong phần 1 đã hoàn thành được việc tìm hiểu các phần lý thuyết đã đặt ranhư: tìm hiểu được các thuật toán về phát hiện chuyển động bằng phương pháp trừnền: Frame Differrence, Running Gausian Average và Codebook, tìm hiểu đượcphương pháp các phương pháp camera calibration, tìm hiểu được các phương pháptheo vết region based segmentation, tìm hiểu được cách thức xác định vận tốc đốitượng chuyển động
Việc nghiên cứu và xây dựng xong các thuật toán xây dựng vận tốc đối tượngchuyển động sẽ tạo cơ sở để thực thi các thuật toán này trong phần 2 với việc sửdụng OpenCV
Trang 24PHẦN 2 THỰC THI CÁC THUẬT TOÁN XỬ LÝ ẢNH CÓ SẴN DÙNG
THƯ VIỆN MÃ NGUỒN MỞ OPENCV.
2.1 Tìm hiểu chung về thư viện mã nguồn mở OpenCV.
Dự án về OpenCV được khởi động từ những năm 1999, đến năm 2000 nóđược giới thiệu trong một hội nghị của IEEE về các vấn đề trong thị giác máy vànhận dạng, tuy nhiên bản OpenCV 1.0 mãi tới tận năm 2006 mới chính thức đượccông bố và năm 2008 bản 1.1 (pre-release) mới được ra đời Tháng 10 năm 2009,bản OpenCV thế hệ thứ hai ra đời (thường gọi là phiên bản 2.x), phiên bản này cógiao diện của C++ (khác với phiên bản trước có giao diện của C) và có khá nhiềuđiểm khác biệt so với phiện bản thứ nhất
Thư viện OpenCV ban đầu được sự hỗ trợ từ Intel, sau đó được hỗ trợ bởWillow Garage, một phòng thí nghiệm chuyên nghiên cứu về công nghệ robot Chođến nay, OpenCV vẫn là thư viện mở, được phát triển bởi nguồn quỹ không lợinhuận (none -profit foundation) và được sự hưởng ứng rất lớn từ cộng đồng
Trang 25Trên thế giới còn một số thư viện như Emugu CV nhưng phát triển trên nềnC# OpenCV được phát triển trên nền C và C++ thì sẽ dễ dàng cho những ngườimới tiếp cận hơn Emugu CV.
2.1.2 Vì sao lựa chọn OpenCV?
Thị trường thị giác máy đang ngày càng mở rộng và lên tục phát triển.Thưviện tiêu chuẩn sẽ tạo ra các ứng dụng mới và các giải pháp xử lý dễ dàng hơn.Đặc biệt tối ưu khi sử dụng cấu trúc Intel Tạo ra các mẫu ứng dụng bằng các thưviện được cập nhật thường xuyên và thực hiện các thuật toán nặng như dò tìmkhuôn mặt Có rất nhiều công nghệ hiện đại và các công ty lớn sử dụng thư việnOpenCVtrongứng dụng của mình như : Intel, Microsoft, IBM, Siemens, Google…
và cáctrung tâm nghiên cứu như: Stanford, MIT, Cambridge, INRIA…
Hơn 14000 thành viên trên forum OpenCVyahoogroup.com với trung bìnhmộtngày có đến 10-20 thông điệp comment trao đổi hàng ngày.Điều đó khẳng địnhrằng OpenCV thực sự đã góp phần vô cùng lớn trong lĩnhvực thị giác máy
Hì
nh 11 Quá trình phát triển của OpenCV
Trang 262.1.3 Cấu trúc và nội dung OpenCV như thế nào?
Để hiểu OpenCV làm việc như thế nào chúng ta bắt đầu từ sự phân chia cấutrúc và nội dung của OpenCV ở 5 phần Cấu trúc của openCV được chia làm 5phần chính, 4 trong số đó được chỉ ra trong hình 2.2
Hình 12 Cấu trúc của OpenCV
Các chức năng của openCV tập trung vào thu thập ảnh, xử lí ảnh và các thuậttoán phân tích dữ liệu ảnh, bao gồm :
Truy xuất ảnh và phim : đọc ảnh số từ camera, từ file, ghi ảnh và
phim- Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết : ma trận,
vector,chuỗi, xâu và cây
Xử lí ảnh căn bản : các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi
màu, phóng to thu nhỏ, và hiệu chỉnh histograms
Xử lí cấu trúc: tìm viền, nhận chuyển động, thay đổi trong không gian 3D,đối
chiếu bản mẫu, xấp xỉ các đơn vị hình học cơ sở - mặt phẳng, đa giác, ellipse,đường thẳng