Sử dụng thuật toán Gunna Farneback

Một phần của tài liệu 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 (Trang 53 - 54)

OpenCV cung cấp hàm cvCalcOpticalFlowFarneback để tính luồng quang cho tất cảcác điểm ảnh trong ảnh theo thuật toán Gunnar Farneback với độ hiệu quả cao hơn hẳn so với cvCalcOpticalFlowHS ở trên.

voidcvCalcOpticalFlowFarneback( const CvArr* prev, const CvArr* next,

CvArr* flow, double pyr_scale, int levels,

int winsize, int iterations, int poly_n, double poly_sigma, int flags

);

trong đó:

- prev: ảnh đầu vào của khung hình trước với cấu hình 8-bit, single channel. - next: ảnh khung hình hiện tại với cấu hình 8-bit, single channel.

- flow: ảnh luồng tính toán được có kích thước bằng kích thước của các ảnh prev và next, có kiểu là CV_32FC2.

- pyr_scale: tham số để xây dựng các tháp cho mỗi ảnh; pyr_scale = 0.5 là tháp cổđiển, trong đó mỗi tầng kế tiếp là nhỏhơn hai lần so với tầng trước đó.

- levels: số tầng của tháp bao gồm cảảnh khởi tạo; levels = 1 tức là không tạo thêm các tầng mà chỉ các ảnh gốc được sử dụng.

48

mạnh của thuật toán tới nhiễu ảnh và tăng cơ hội tìm được các chuyển động nhanh nhưng làm nhòe trường chuyển động hơn.

- iterations: số lần lặp của thuật toán tại mỗi mức tháp.

- poly_n: kích thước vùng điểm ảnh lân cận được sử dụng để tìm đa thức mở rộng trong mỗi điểm ảnh. Giá trị này lớn tức là ảnh sẽ được xấp xỉ với các bề mặt trơn hơn, do đó thuật toán hiệu quả hơn và làm nhòe trường chuyển động hơn. Thông thường poly_n nhận các giá trị 5 hoặc 7.

- poly_sigma: độ lệch chuẩn của Gaussian được sử dụng để làm trơn các đạo hàm sử dụng như cơ sở cho việc mở rộng đa thức; với poly_n = 5, ta có thể thiết lập poly_sigma = 1.1; với poly_n = 7 ta có thể thiết lập poly_sigma = 1.5 là tốt nhất.

- flags: toán tử cờ, có thể nhận các giá trị OPTFLOW_USE_INITIAL_FLOW hoặc OPTFLOW_FARNEBACK_GAUSSIAN.

Một phần của tài liệu 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 (Trang 53 - 54)