Tải bản đầy đủ (.doc) (50 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.31 MB, 50 trang )

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
6. Ý nghĩa khoa học và thực tiễn của luận văn.............................................................5
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 .7
1.1. Tìm hiểu chung về xử lý ảnh...............................................................................7
1.2. Tiền xử lý Video....................................................................................................8
1.3. Các thuật toán xác định vận tốc xe cộ dùng xử lý ảnh.....................................10
1.3.1. Bài toán xác định vận tốc đối tượng chuyển động.........................................10
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).. .10
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. 11
1.3.2. Sử dụng thuật toán Lucas – Kanade để tính vận tốc đối tượng chuyển
động.............................................................................................................................12
1.3.3. Phương pháp hiệu chỉnh camera để xác định vận tốc....................................16
1.3.3.1. Mô tả chương trình......................................................................................16
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...............16
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..................17
1.3.4. Phương pháp camera stereo cho xác định vận tốc đối tượng chuyển động.. .19
1.3.4.1. Mô tả phương pháp.......................................................................................19
1.3.4.2. Tổng quan về Stereo......................................................................................20
1.3.4.3. Khoảng cách trên trục Y..............................................................................20
1.3.4.4. Khoảng cách trên trục X..............................................................................20
1.3.4.5. Tính toán vận tốc.........................................................................................21
KẾT LUẬN PHẦN 1....................................................................................................22
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................................................................................................23


2.1. Tìm hiểu chung về thư viện mã nguồn mở OpenCV........................................23
2.1.1. OpenCV là gì?.................................................................................................23
2.1.2. Vì sao lựa chọn OpenCV?.............................................................................24
2.1.3. Cấu trúc và nội dung OpenCV như thế nào?..................................................25
2.2. Cài đặt OpenCV..................................................................................................26
2.2.1. Cài đặt cơ bản..................................................................................................26
2.2.2. Tùy chỉnh khi cài đặt Windows......................................................................26
2.2.3. Sau khi cài đặt.................................................................................................27
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
......................................................................................................................................27
2.3.1. Đọc và ghi ảnh.................................................................................................27
2.4.4. Giải thuật phân nhóm khuôn mặt...................................................................40
KẾT LUẬN PHẦN 2....................................................................................................41
PHẦN III. ĐÁNH GIÁ THỰC NGHIỆM.......................................................................42
3.1. Công thức đánh giá thực nghiệm.......................................................................42
3.2.2. UCF Sports Action Dataset..............................................................................45
3.2.3. Highway Traffic Clustering Database.............................................................46
3.2.3. Face dataset......................................................................................................46
3.2.4. Walk dataset.....................................................................................................47
1


Kết quả thực nghiệm..................................................................................................47
Đánh giá thực nghiệm của chức năng theo dõi vật thể được chọn bởi người dùng: 47
Đánh giá thực nghiệm của chức năng theo dõi khuôn mặt:....................................49
Đánh giá thực nghiệm của chức năng theo dõi người đi bộ:...................................49
TÀI LIỆU THAM KHẢO.............................................................................................50

2



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à…

3



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:

4


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
5


+ Ứ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
Hình 1
Hình 2
Hình 3
Hình 4
Hình 5
Hình 6
Hình 7
Hình 8
Hình 9
Hình 10
Hình 11

Hình 12

Nội dung

Trang

Quá trình xử lý ảnh
Các bước cơ bản trong một hệ thống xử lý ảnh.
Kết quả sau khi tiền xử lí video
Frames mức 0
Frames mức 1
Frames mức 2
Optical flow mức 0
Sơ đồ quy chiếu từ video sang thực tế
Hướng chuyển động nhìn từ trên xuống
Hệ thống chuẩn của hai camera với độ dài tiêu cự f và
khoảng cách
Quá trình phát triển của OpenCV
Cấu trúc của OpenCV

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
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.
Ảnh tốt hơn
Ảnh

XỬ LÝ ẢNH
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.

7


Hệ quyết
định

Trích chọn
đặc điểm


Đổi sánh rút
ra kết luận
Hậu xử lý

Tiền xử lý

Lưu trữ
Thu nhận ảnh
(sanner,camera
sensor…)

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
8



để 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: ��−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
và 0chập.

Hình 3. Kết quả sau khi 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
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.
Optical 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ự
10


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.
Cá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:
11


+
+

+
+

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
Thuậ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
12


Bước này thực chất là thực hiện thuật toán resize ảnh theo công thức:
(2x,2y) +

1,2y) + ��−1(2x+1,2y)

+ ��−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

Hì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:
E(��)=E(��, ��)

Vector vận tốc tại mức 0 (ảnh gốc) được xác định theo công thức:
13


d=

Hình 7. Optical flow mức 0
Trong hình thể hiện optical flow (hay sự khác nhau giữa 2 frame) ở mức 0 của
các đối tượng dịch chuyển sang bên phải. Hướng các mũi tên trong hình là hướng
dịch chuyển của các điểm ảnh, optical flow ở ảnh gốc sẽ được tính dựa vào optical
flow ở các mức cao hơn.
• 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].

14


Actual

Video

(X1,Y2)

(x1,y1)

32 0

(x2,y2)

x 24

(X2,Y2)

0

D1

xD

2

Hì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à
(D1xD2).
+ Tại mỗi thời điểm, ta có các mảng chứa thông tin về toạ độ của các vật thể ở
frame trước và frame hiện tại, được lưu trữ trong các mảng.

+ Không mất tính tổng quát, ta xét 1 điểm của 1 vật thể ở hai frame liên tiếp. Ở
frame thứ nhất điểm có toạ độ (x1,y1), ở frame thứ hai là (x2,y2). Độ dịch chuyển
của điểm theo chiều x và y lần lượt 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ế:
+ Đâ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)
15


V = ∆D ∗ R (m/s) = 3.6 ∗ ∆D ∗ R (km/h)
1.3.3. Phương pháp hiệu chỉnh camera để xác định vận tốc
1.3.3.1. Mô tả chương trình.
Chương trình xác định vận tốc đối tượng chuyển động lấy dữ liệu từ đoạn
video quay lại từ một camera tĩnh, ghi lại với chuẩn AVI.
Sau khi có dữ liệu đầu vào chương trình sẽ xử lý đoạn video để lấy tất cả
khung hình. Từ mỗi khung hình có được, ta tiến hành tìm kiếm và truy vết đối
tượng dựa vào phương pháp trừ nền và phân mảnh vùng (region based
segmentation). Tiếp đó, ta xác định đối tượng chuyển động mục tiêu, tìm tọa độ
trung tâm của đối tượng, và quy đổi nó ra tọa độ thực dựa vào kĩ thuật hiệu chỉnh
camera (camera calibration).
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 (background
extraction) và phân mảnh vùng (region based segmentation), đây là bước quan
trọ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ương
pháp ảnh tham chiếu [12]. Sau đó, dựa trên tiền cảnh lấy được ta sẽ xác định các
thành phần liên kết (connected components), ước lượng diện tích các vùng ảnh, tìm
diệ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].
b. 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.
16


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án
nhã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ác
thành phần như sau:

f. Đóng ảnh nhị phân bởi cấu trúc hóa các thành phần.
g. Ước lượng các vùng ảnh.
h. Tìm vùng lớn nhất.
i. Xác định vị trí trung tâm (x, y) của vùng lớn nhất.
j. Trả về giá trị tọa độ x, y.
k. Kết thúc.
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.

• Phương pháp tính khoảng cách.
Khoảng cách Euclid (D) di chuyển bởi đối tượng giữa cặp khung hình liên tiếp
nhau được tính toán sau khi chiếu tọa độ trung tâm của đối tượng trong mỗi khung
hình qua tọa độ thực.
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.
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ỉnh
camera.
17


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à khung
thứ (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)

+ Độ lệch (Skew): Angleof pixel axes Degrees

18


+ 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:

Bảng so
tốc đo
vận tốc
1.3.4.

pháp
stereo cho
vận tốc

Vận tốc
đo lường
v(cm/s)

Vận tốc
tính toán
v’(cm/s)

Sai số
|v-v’|
(cm/s)

% sai số
sánh vận

18.90

18.59

0.31

1.6

18.71

18.424


0.288

1.54

25.82

26.096

0.276

1.06

26.69

26.58

0.109

0.412

24.62

24.54

0.0784

0.318

lường và

tính toán
Phương
camera
xác định
đối tượng

chuyển động.
1.3.4.1. Mô tả phương pháp.
Phương pháp sử dụng kĩ thuật hiệu chỉnh camera và camera stereo để xác định
vận tốc của đối tượng chuyển động.
Y-axis
P2
y
P1

x

X-axis

Stereo Camera

Hình 9. Hướng chuyển động nhìn từ trên xuống

19


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 camera
chuyể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 ngang

biết trước (xem ảnh 2.4).

Q
∆ZPQ
P
ZQ

Image planes

ZP

cl

f
Optical centers

pl

cr
pr

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 Z p của điểm 3D P từ
camera.
1.3.4.3. Khoảng cách trên trục Y
Mẫu so khớp cho tính toán độ lệch: Để ước lượng được độ lệch của đối tượng
trong cặp ảnh stereo, đầu tiên chúng ta cần phải truy vết đối tượng trong ảnh bên
trá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 ảnh

bê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ượng
trong 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 stereo
camera kinh điển trong báo cáo.
1.3.4.4. Khoảng cách trên trục X
Tính khoảng cách trên trục X giống như phương pháp tính khoảng cách trong
phương pháp hiệu chỉnh camera để xác định vận tốc.
20


1.3.4.5. Tính toán vận tốc
Sau khi có giá trị x và y, chúng ta tính toán khoảng cách giữa P1 và P2 sử
dụng công thức Pythagorean:

P1P2 = x2 +y2

(2. 2)

Cuối cùng, chúng ta có thể đo đạc vận tốc của đối tượng chuyển động trong
tọa độ thực bằng cách tính toán tổng khoảng cách P1 P2 trên số frame thu được trên
mỗi giây.
(2.3)

21


KẾ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 ra
như: 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 được
phương pháp các phương pháp camera calibration, tìm hiểu được các phương pháp

theo vết region based segmentation, tìm hiểu được cách thức xác định vận tốc đối
tượ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ượng
chuyể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.

22


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.
2.1. Tìm hiểu chung về thư viện mã nguồn mở OpenCV.
2.1.1. OpenCV là gì?
OpenCV (Open Source Computer Vision) là một thư viện mã nguồn mở về thị
giác máy với hơn 500 hàm và hơn 2500 các thuật toán đã được tối ưu về xử lý ảnh,
và các vấn đề liên quan tới thị giác máy. OpenCV được thiết kế một cách tối ưu, sử
dụng tối đa sức mạnh của các dòng chip đa lõi… để thực hiện các phép tính toán
trong thời gian thực, nghĩa là tốc độ đáp ứng của nó có thể đủ nhanh cho các ứng
dụng thông thường. OpenCV là thư viện được thiết kế để chạy trên nhiều nền tảng
khác nhau (cross-patform), nghĩa là nó có thể chạy trên hệ điều hành Window,
Linux, Mac, iOS … Việc sử dụng thư viện OpenCV tuân theo các quy định về sử
dụng phần mềm mã nguồn mở BSD do đó bạn có thể sử dụng thư viện này một
cách miễn phí cho cả mục đích phi thương mại lẫn thương mại.
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 được
cô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ợi
nhuận (none -profit foundation) và được sự hưởng ứng rất lớn từ cộng đồng.

23


Trên thế giới còn một số thư viện như Emugu CV nhưng phát triển trên nền
C# .OpenCV được phát triển trên nền C và C++ thì sẽ dễ dàng cho những người
mớ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ìm
khuô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ện
OpenCVtrongứ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ột
ngày có đến 10-20 thông điệp comment trao đổi hàng ngày.Điều đó khẳng định
rằng OpenCV thực sự đã góp phần vô cùng lớn trong lĩnhvực thị giác máy.


nh 11. Quá trình phát triển của OpenCV
24


2.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ấu

trúc và nội dung của OpenCV ở 5 phần. Cấu trúc của openCV được chia làm 5
phần chính, 4 trong số đó được chỉ ra trong hình 2.2.

CV
Xử lý ảnh và thuật toán

MLL
Thống kê và tập hợp

HighGUI
Giao diện, truy xuất

về thị giác máy

các công cụ xử lý

ảnh và video

CXCORE
Cấu trúc cơ sở và các thuật toán, hỗ trợ XML, các hàm vẽ

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ật
toá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...
+ Phân tích dữ liệu ảnh : nhận dạng thực thể, theo dõi các chi tiết và phân tích
chuyển động.
25


×