KỹthuậtOpticalFlow Tự động phát đối tượng ảnh nói chung phát người nhu cầu cần thiết hầu hết hệ thống giám sát an ninh, cảnh báo an ninh Hiện nay, có nhiều kỹthuật sử dụng để phát đối tượng chuyển động, kỹthuật sử dụng rộng rãi kỹthuậtOpticalFlowOpticalFlow khái niệm chuyển động tương đối điểm bề mặt đối tượng, vật thể gây góc quan sát điểm mốc (ví dụ: mắt, camera, …) Sự chuyển động vật thể (mà thực tế coi chuyển động điểm bề mặt vật ấy) không gian chiều, chiếu lên mặt phẳng quan sát 2D gọi motion field Nhìn chung, mục đích opticalflow xác định (xấp xỉ) motion field từ tập frame ảnh thay đổi theo thời gian, chúng sử dụng rộng rã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 opticalflow khác nhau, báo này, tác giả đề cập đến phương pháp Lucas – Kanade Phương pháp Lucas – Kanade phương pháp khác biệt sử dụng rộng rãi cho đánh giá opticalflow phát triển Bruce D Lucas Takeo Kanade Thuật tốn Lucas – Kanade dựa vào thơng tin chỗ mà dẫn từ vài window nhỏ quanh điểm quan tâm Tuy nhiên, với trường hợp chuyển động lớn dẫn đến di chuyển điểm ngồi local window thuật tốn khơng thể tìm thấy Vấn đề dẫn đến phát triển thuật toán Pyramidal Lucas Kanade: theo vết mức cao image pyramid (chi tiết thấp nhất) làm việc xuống đến mức thấp (chi tiết tốt hơn) Theo image pyramid cho phép chuyển động lớn bắt local window Ý tưởng thuật toán Lucas Kanade dựa vào giả thiết: - Mức sáng đ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 khối bề mặt thay đổi chậm theo thời gian (chuyển động nhỏ từ frame đến frame): Sự thay đổi xấp xỉ đạo hàm cường độ theo thời gian Từ (1), thay định nghĩa độ sáng f(x,t) đưa vào phụ thuộc ngầm định x theo t: I(x(t),t) Sau áp dụng luật chuỗi vi phân riêng phần ta có: (trường hợp chiều) I x I 0 x t t t x (t ) v Ix It Trong đó: Ix đạo hàm riêng phần không gian ảnh đầu tiên, It đạo hàm ảnh theo thời gian, v vận tốc ta tìm Vậy ta có phương trình đơn giản cho opticalflow theo trường hợp chiều đơn giản: v It Ix Trường hợp với ảnh chiều: Để chuyển sang hai chiều thêm trục y, thay đổi ít, ta gọi thành phần y vận tốc v thành phần x vận tốc u, ta có: I xu I y v I t (2) Không may phương trình có thành phần khơng biết pixel cho trước, nên ta đưa lời giải cho chuyển động hai chiều điểm Để giải vấn đề mà pixel ta giải chuyển động đầy đủ, ta sử dụng giả thiết opticalflow cuối Nếu bó chỗ pixel chuyển động rõ ràng, ta dễ dàng giải chuyển động pixel tâm dùng pixel xung quanh để thiết lập hệ phương trình Ví dụ dùng cửa sổ 5x5, ta 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 u x t v I t ( p25 ) I x ( p25 ) I y ( p25 ) 2dx1 A b 25x 2 x1 Để giải hệ mà sử dụng nhiều edge cửa sổ 5x5, ta thiết lập least – squares phương trình này, Ad b giải theo dạng chuẩn như: ( AT A) d AT 2x2 x1 2x2 Từ ta có thành phần chuyển động u 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 là: u T 1 T v ( A A) A b Phương trình có nghiệm khi: ( AT A ) nghịch đảo Opticalflow Lucas – Kanade tự khơng làm xác tốt do: ta muốn window lớn để bắt chuyển động lớn, window lớn thường phá vỡ giả thiết chuyển động liền mạch Để giải vấn đề này, ta lần vết tỉ lệ không gian lớn dùng image pyramid sau tinh chỉnh giả thiết vận tốc chuyển động ban đầu xuống mức image pyramid đến nhận image pixel thơ Do đó, kĩ thuật khuyến khích giải opticalflow mức đỉnh sau dùng kết chuyển động định lượng điểm bắt đầu cho mức Ta tiếp tục xuống pyramid theo cách ta tới mức thấp Do ta tối thiểu phạm vi giả thiết chuyển động lần vết chuyển động nhanh dài Thuật toán Pyramid Lucas – Kanade dùng khả tốt để lần theo trả nhận biết độ tốt việc lần theo điểm xử lý Hình1 Pyramid Lucas-Kanade optical flow: luồng quang chạy đỉnh pyramid giảm nhẹ vấn đề gây vi phạm giả thiết chuyển động nhỏ liền mạch; chuyển động định lượng từ mức trước lấy điểm bắt đầu cho định lượng chuyển động layer Hàm Pyramid Lucas – Kanade có OpenCV (Open Source Computer Vision – thư viện mở gồm hàm 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 thành phần: prev: frame 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 frame Nếu trỏ NULL, nhớ đệm phải có kích thước đủ để lưu trữ kim tự tháp từ mức đến mức level; tổng kích thước =(chiều rộng ảnh + 8)* chiều cao ảnh/3byte curr_pyr: tương tự prev_pyr, sử dụng cho frame thứ prev_features: mảng điểm flow cần tìm thấy curr_features: mảng điểm 2D có chứa giá trị vị trí đặc trưng đầu vào ảnh thứ count: số điểm đặc trưng win_size: kích thước cửa sổ cho mức kim tự tháp Level: số mức tối đa kim tự tháp (độ sâu stack ảnh) Nếu = 0: kim tự tháp không sử dụng (mức đơn); 1: mức sử dụng, … Status: mảng mà phần tử mảng = flow đặc trưng tương ứng tìm thấy, ngược lại = track_error: Có thể dùng để tỉa bớt điểm thay đổi nhiều điểm di chuyển Là tham số không bắt buộc, để giá trị NULL Criteria: điều kiện dừng trình lặp tìm kiếm luồng điểm mức kim tự tháp Flags: - cờ Các loại cờ: CV_LKFLOW_PYR_A_READY: tính frame kim tự tháp trước gọi CV_LKFLOW_PYR_B_READY: tính frame thứ kim tự tháp trước bị gọi CV_LKFLOW_INITIAL_GUESSES: mảng B chứa tọa độ ban đầu đặc trưng trước gọi hàm Hàm cvCalcOpticalFlowPyrLK thực lặp rải rác opticalflow Lucas – Kanade kim tự tháp Nó tính tọa độ điểm đặc trưng khung hình video đưa tọa độ chúng frame trước, hàm tìm xác tọa độ điểm thay Demo chương trình Hình Demo chương trình sử dụng OpticalFlow Sử dụng kỹthuật Pyramid Lucas – Kanade OpenCV giúp người lập trình cài đặt chương trình phát đối tượng chuyển động cách nhanh hơn, hiệu Tài liệu tham khảo: [1] Fleet, D.J and Weiss, Y., Opticalflow estimation, Mathematical models for Computer Vision: The Handbook N Paragios, Y Chen, and O Faugeras (eds.), Springer, 2005 [2] The OpenCV Library: Computing OpticalFlow – David Stavens, Stanford Artificial Intelligence Lab [3] Open Source Computer http://developer.intel.com Vision Library – Reference Manual, website: ... CV_LKFLOW_INITIAL_GUESSES: mảng B chứa tọa độ ban đầu đặc trưng trước gọi hàm Hàm cvCalcOpticalFlowPyrLK thực lặp rải rác optical flow Lucas – Kanade kim tự tháp Nó tính tọa độ điểm đặc trưng khung hình video... 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 –... tháp Flags: - cờ Các loại cờ: CV_LKFLOW_PYR_A_READY: tính frame kim tự tháp trước gọi CV_LKFLOW_PYR_B_READY: tính frame thứ kim tự tháp trước bị gọi CV_LKFLOW_INITIAL_GUESSES: mảng B chứa