Tải bản đầy đủ (.pdf) (6 trang)

ky thuat optical flow

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 (436.9 KB, 6 trang )

Kỹ thuật Optical Flow
Tự động phát hiện các đối tượng trong ảnh nói chung và phát hiện người đi
bộ là nhu cầu cần thiết của hầu hết các hệ thống giám sát an ninh, cảnh báo an
ninh. Hiện nay, có rất nhiều kỹ thuật được sử dụng để phát hiện đối tượng chuyển
động, một trong những kỹ thuật đang được sử dụng rộng rãi hiện nay là kỹ thuật
Optical Flow.
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 của một đối tượng, vật thể nào đó gây ra dưới góc quan sát của một điểm
mốc (ví dụ: 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 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.
Nhìn chung, mục đích của optical flow 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 phát hiện, nhận dạng đối tượng, tracking…
Có nhiều phương pháp xác định optical flow khác nhau, trong bài báo này,
tác giả chỉ đề cập đến phương pháp của Lucas – Kanade.
Phương pháp Lucas – Kanade là một phương pháp khác biệt được sử dụng
rộng rãi cho đánh giá optical flow được phát triển bởi Bruce D. Lucas và Takeo
Kanade. Thuật toán Lucas – Kanade dựa vào thông tin tại chỗ mà được dẫn từ vài
window nhỏ quanh mỗi điểm quan tâm. Tuy nhiên, với trường hợp các chuyển
động là lớn dẫn đến có thể di chuyển các điểm ra ngoài local window và do đó
thuật toán sẽ không thể tìm thấy. Vấn đề này dẫn đến sự phát triển thuật toán
Pyramidal Lucas Kanade: theo vết bắt đầu từ mức cao nhất của một image pyramid
(chi tiết thấp nhất) và làm việc xuống đến mức thấp nhất (chi tiết tốt hơn). Theo
trên các image pyramid cho phép các chuyển động lớn có thể được bắt bởi các
local window.
Ý tưởng cơ bản của thuật toán Lucas Kanade dựa vào giả thiết:
- Mức sáng của các điểm ảnh không có thay đổi từ frame thứ n sang frame
thứ n+1:
f ( x, t )  I ( x(t ), t )  I ( x(t  dt ), t  dt ) (1)
f ( x)


0
t


- Chuyển động ảnh của một khối bề mặt thay đổi chậm theo thời gian
(chuyển động là nhỏ từ frame đến frame):
Sự thay đổi này như xấp xỉ đạo hàm của cường độ theo thời gian. Từ
(1), thay thế định nghĩa độ sáng f(x,t) đưa vào phụ thuộc ngầm định của x
theo t: I(x(t),t). Sau đó áp dụng luật chuỗi của vi phân riêng phần ta có:
(trường hợp 1 chiều)

I  x  I
0
 
x t 
t  t x (t )


v

Ix

It

Trong đó: Ix là đạo hàm riêng phần không gian trên ảnh đầu tiên, It là
đạo hàm giữa các ảnh theo thời gian, và v là vận tốc ta đang tìm. Vậy ta có
phương trình đơn giản cho optical flow theo trường hợp 1 chiều đơn giản:
v

It

Ix

Trường hợp với ảnh 2 chiều: Để chuyển sang hai chiều có thể chỉ
thêm trục y, thay đổi một ít, ta sẽ gọi thành phần y của vận tốc v là thành
phần x của vận tốc u, ta có:
I xu  I y v  I t  0

(2)
Không may ở phương trình trên có 2 thành phần không biết đối với bất kỳ
pixel cho trước, vậy nên ta không thể đưa ra một lời giải duy nhất cho chuyển động
hai chiều ở điểm đó.
Để giải quyết vấn đề mà tại một pixel ta không thể giải chuyển động đầy đủ,
ta sử dụng giả thiết optical flow cuối. Nếu một bó tại chỗ các pixel chuyển động rõ
ràng, ta có thể dễ dàng giải chuyển động của pixel tâm dùng các pixel xung quanh
để thiết lập một hệ các phương trình. Ví dụ dùng cửa sổ 5x5, ta có thể thiết lập 25
phương trình sau:
 I x ( p1 ) I y ( p1 ) 
 I t ( p1 ) 
I (p ) I (p )
I (p )
y
2  u 
 x 2
  t 2 
 
   v 
  





I t ( p25 )
 I x ( p25 ) I y ( p25 ) 2dx1





A

b

25x 2

2 x1

Để giải quyết hệ mà sử dụng nhiều hơn một edge trong cửa sổ 5x5, ta
2
thiết lập least – squares của phương trình này, trong đó Ad  b được giải
theo dạng chuẩn như: (
AT A) d  
AT

2x2

2 x1

2x2



Từ đó ta có được các thành phần chuyển động u và v. Cụ thể:
 I x I x  I x I y  u 
  I x It 

    

 I x I y  I y I y   v 
 I xy I t 




AT A

AT b

Lời giải phương trình sẽ là:
u 
T
1 T
 v   ( A A) A b
 

Phương trình này có nghiệm khi: ( AT A ) là có thể nghịch đảo.
Optical flow Lucas – Kanade tự nó không làm chính xác và tốt do: ta muốn
một window lớn để bắt các chuyển động lớn, nhưng một window lớn thường phá
vỡ giả thiết chuyển động liền mạch. Để giải quyết vấn đề này, đầu tiên ta có thể lần
vết trên các tỉ lệ không gian lớn hơn dùng một image pyramid và sau đó tinh chỉnh
các giả thiết vận tốc chuyển động ban đầu vì xuống các mức của image pyramid
đến khi nhận được các image pixel thô. Do đó, kĩ thuật khuyến khích giải optical

flow ở mức đỉnh và sau đó dùng kết quả chuyển động định lượng như điểm bắt đầu
cho mức dưới tiếp theo. Ta cứ tiếp tục đi xuống pyramid theo cách trên cho đến khi
ta tới mức thấp nhất. Do đó ta tối thiểu các phạm vi của các giả thiết chuyển động
và do đó có thể lần vết các chuyển động nhanh hơn và dài hơn.
Thuật toán Pyramid Lucas – Kanade dùng khả năng tốt nhất để lần theo và
cũng trả về các nhận biết độ tốt việc lần theo mỗi điểm đang xử lý


Hình1. Pyramid Lucas-Kanade optical flow: luồng quang chạy ở đỉnh của
pyramid đầu tiên giảm nhẹ các vấn đề gây ra bởi vi phạm các giả thiết chuyển
động nhỏ và liền mạch; chuyển động định lượng từ mức trước được lấy như điểm
bắt đầu cho định lượng chuyển động ở layer tiếp theo dưới.
Hàm Pyramid Lucas – Kanade có trong OpenCV (Open Source Computer
Vision – thư viện mở gồm các hàm được xây dựng phục vụ cho việc xử lý thị giác
máy thời gian thực):
void cvCalcOpticalFlowPyrLK( const CvArr* prev, const CvArr* curr,
CvArr* prev_pyr, CvArr* curr_pyr,const CvPoint2D32f* prev_features,
CvPoint2D32f* curr_features,int count, CvSize win_size, int level, char* status,
float* track_error, CvTermCriteria criteria, int flags );
Ý nghĩa từng thành phần:
prev: frame đầu tiên ở thời điểm t
Curr: frame thứ hai ở thời điểm t + dt
prev_pyr:Bộ nhớ đệm cho kim tự tháp của frame đầu tiên. Nếu con trỏ
không phải là NULL, bộ nhớ đệm phải có kích thước đủ để lưu trữ kim tự tháp từ
mức 1 đến mức level; tổng kích thước =(chiều rộng của ảnh + 8)* chiều cao của
ảnh/3byte
curr_pyr: tương tự như prev_pyr, sử dụng cho frame thứ 2
prev_features: mảng các điểm của flow cần được tìm thấy.
curr_features: mảng các điểm 2D có chứa giá trị vị trí mới của đặc trưng
đầu vào trong bức ảnh thứ 2

count: số điểm đặc trưng
win_size: kích thước của cửa sổ cho mỗi mức của kim tự tháp
Level: số mức tối đa của kim tự tháp (độ sâu của stack của các ảnh)
Nếu = 0: kim tự tháp không được sử dụng (mức đơn);
nếu 1: 2 mức được sử dụng, …
Status: là mảng mà phần tử của mảng = 1 nếu flow của các đặc trưng tương
ứng được tìm thấy, ngược lại = 0
track_error: Có thể dùng để tỉa bớt các điểm thay đổi quá nhiều khi các
điểm di chuyển. Là tham số không bắt buộc, có thể để giá trị NULL
Criteria: là điều kiện dừng của quá trình lặp tìm kiếm luồng của mỗi điểm
trên từng mức kim tự tháp.
Flags: - cờ. Các loại cờ:
CV_LKFLOW_PYR_A_READY: tính frame đầu tiên của kim
tự tháp trước khi gọi



CV_LKFLOW_PYR_B_READY: tính frame thứ 2 của kim tự
tháp trước khi bị gọi

CV_LKFLOW_INITIAL_GUESSES: mảng B chứa các tọa độ
ban đầu của các đặc trưng trước khi gọi hàm.


Hàm cvCalcOpticalFlowPyrLK thực hiện lặp rải rác các optical flow của
Lucas – Kanade trong kim tự tháp. Nó tính tọa độ của điểm đặc trưng trên các
khung hình video hiện tại đưa ra tọa độ của chúng trên frame trước, hàm tìm chính
xác tọa độ điểm thay thế.
Demo chương trình


Hình 2. Demo chương trình sử dụng Optical Flow
Sử dụng kỹ thuật Pyramid Lucas – Kanade trong OpenCV giúp người lập
trình cài đặt các chương trình phát hiện đối tượng chuyển động một cách nhanh
hơn, hiệu quả hơn.


Tài liệu tham khảo:
[1] Fleet, D.J. and Weiss, Y., Optical flow estimation, Mathematical models for Computer
Vision: The Handbook. N. Paragios, Y. Chen, and O. Faugeras (eds.), Springer, 2005.
[2] The OpenCV Library: Computing Optical Flow – David Stavens, Stanford Artificial
Intelligence Lab
[3] Open Source Computer


Vision

Library



Reference

Manual,

website:



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×