MỞ ĐẦU Lĩnh vực xử lý tín hiệu, cụ thể là xử lý hình ảnh đã phát triển từ lâu với đa dạng các lĩnh vực nhƣ tăng cƣờng chất lƣợng ảnh, tách thành phần nền, dự đoán, theo dõi chuyển động, nhận dạng đối tƣợng,… Với sự phát triển mạnh mẽ trong công nghệ phần cứng máy tính và sự hỗ trợ của các hệ thống mô phỏng, thƣ viện mã nguồn mở thƣ viện xử lý đồ họa đã cho phép thực hiện nhiều thuật toán phức tạp đòi hỏi số lƣợng tính toán lớn đƣợc nghiên cứu, đánh giá, cải tiến và áp dụng trong thực tế. Trong đó, các phƣơng pháp phát hiện chuyển động là một lớp ứng dụng liên quan tới khá nhiều các kĩ thuật trong xứ lý ảnh nhƣ tăng cƣờng chất lƣợng ảnh, mô hình hóa nền – tách nền, theo dõi chuyển động, dự đoán chuyển động,… Do thời gian nghiên cứu và khuôn khổ nội dung Luận văn có hạn nên chúng ta sẽ đi vào tập trung nghiên cứu các thuật toán phát hiện chuyển động dựa trên việc mô hình hóa nền đƣợc trình bày chủ yếu trong chƣơng 1. Các phƣơng pháp mô hình hóa sẽ đƣợc trình bày theo thứ tự phát triển tăng dần. Thứ nhất là mô hình sử dụng bộ lọc Kalman để dự đoán trong việc ƣớc lƣợng nền thích nghi.
Thứ hai là mô hình nền hỗn hợp thích nghi sử dụng K phân bố Gauss để mô hình hóa nền có các chuyển động nhỏ, phức tạp với các tham số mô hình. Thứ ba là mô hình nền không tham số sử dụng các ƣớc lƣợng hàm lõi cho phép thích nghi tốt với thay đổi của môi trƣờng, loại bỏ các yếu tố tham số của mô hình. Thứ tƣ là mô hình nền sử dụng từ điển cho phép mô hình hóa nền phức tạp trong khoảng thời gian dài và thích nghi thời gian thực. Và cuối cùng là mô hình cải tiến của mô hình nền sử dụng từ điển nhằm tăng tốc độ xử lý khung hình và khắc phục vấn đề thích nghi với thay đổi nhỏ trong thời gian dài của mô hình trƣớc đó.
Tiếp đó, ở chƣơng 2 sẽ đi tìm hiểu thƣ viện xử lý đồ họa mã nguồn mở OpenCV. Chúng ta chủ yếu đề cập tới các khái niệm, nguyên mẫu hàm cần thiết cho việc xây dựng chƣơng trình thực hiện mô hình hóa nền sử dụng từ điển nhƣ: khởi thủy cấu trúc dữ liệu, các hàm xử lý đồ họa ngƣời dùng mức cao, các thuật toán xử lý hình ảnh phổ biến… Cuối cùng, ở chƣơng 3 sẽ mô tả quá trình, kết quả xây dựng chƣơng trình, những lƣu ý cụ thể khi cài đặt. Chƣơng trình nguồn thu đƣợc có thể dùng để nghiên cứu thuật toán hoặc sử dụng trong các ứng dụng thƣơng mại liên quan tới nhận dạng chuyển động. THUẬT TOÁN PHÁT HIỆN CHUYỂN ĐỘNG 1.1 Bộ lọc Kalman Đƣợc giới thiệu năm 1960, bộ lọc Kalman đã đƣợc chú ý đặc biệt trong lĩnh vực xử lý tín hiệu.
Bộ lọc Kalman,với các điều kiện ràng buộc, cho phép chúng ta xây dựng một mô hình trạng thái với cực đại xác suất trƣớc mà không cần giữ giá trị của nhiều giá trị đo trƣớc đó. Thay vì phải lƣu lại các giá trị này, chúng ta chỉ cập nhật mô hình trạng thái hệ thống và chỉ giữ lại mô hình để sử dụng ở bƣớc tiếp theo[6]. Trƣớc khi tìm hiểu chi tiết về ý nghĩa thực tế của bộ lọc này, chúng ta hãy phân tích các giả thiết cũng là điều kiện ràng buộc khi sử dụng của bộ lọc. Có 2 giả thiết quan trọng về mặt lý thuyết khi xây dựng bộ lọc Kalman đó là: Hệ thống đƣợc mô hình hóa là tuyến tính.
Có nghĩa là trạng thái của hệ thống tại thời điểm k có thể đƣợc mô hình hóa nhƣ là tích của một số ma trận (ta sẽ không định nghĩa tƣờng minh các ma trận này) với trạng thái tại thời điểm (k-1). Ồn trong phép đo là ồn trắng và có phân bố Gauss. Nghĩa là ồn sẽ không tƣơng quan trong miền thời gian và biên độ của nó có thể đƣợc mô hình hóa thông qua giá trị trung bình và phƣơng sai. Ý nghĩa của phép “cực đại hóa xác suất trƣớc của các phép đo đã thực hiện” có nghĩa là một mô hình mới đƣợc xây dựng sau khi thực hiện một phép đo đƣợc tính toán dựa trên mô hình trƣớc đó với độ không chắc của nó và phép đó mới cũng cùng với độ không chắc chắn của nó.
Và mô hình nào đƣợc tìm ra có xác suất cao nhất thì đƣợc gọi là mô hình đƣợc chọn. Với mục đích này, bộ lọc Kalman với 2 điều kiện ràng buộc là cách tốt nhất để kết hợp dữ liệu từ các nguồn khác nhau hoặc từ cùng một nguồn tại các thời điểm khác nhau. Khi có thông tin mới thì chúng ta quyết định thay đổi trên cơ sở thông tin đã có và thông tin mới sử dụng phép lấy trung bình theo trọng số giữa các giá trị này. Giả sử ta thực hiện 2 phép đo xác định vị trí của x.
Do có ồn nên chúng ta có 2 kết quả đo không chắc chắn – theo quan điểm Gauss – là x1 và x2. Bởi vì có độ không chắc chắn Gauss trong phép đo nên chúng có giá trị trung bình và với phƣơng sai chuẩn ζ1 và ζ2. Phƣơng sai ở đây mang thông tin về độ không z 2 chắc chắn của phép đo. Phân bố xác suất mô tả của phép đo là hàm phân bố Gauss.
Trong trƣờng hợp này i = 1,2. Chúng ta kì vọng rằng mật độ xác suất cho giá trị của x cho bởi hai phép đo này sẽ tỉ lệ với. Nhƣ ta đã biết thì tích của 2 phân bố Gauss là một phân bố Gauss tƣơng đƣơng với giá trị trung bình và phƣơng sai chuẩn đƣợc tính nhƣ sau: Do phân bố Gauss cực đại tại giá trị trung bình, mà ta có thể xác định giá trị này một cách dễ dàng thông qua việc tính đạo hàm của p12(x) theo x và cho đạo hàm này bằng 0. Vì hàm phân bố xác suất p(x) luôn khác 0 nên biểu thức trên tƣơng đƣơng với biểu thƣc trong dấu ngoặc bằng 0.
Giải biểu thức đó theo x cho ta mối quan hệ hết sức quan trọng: Nhƣ vậy, giá trị trung bình là trung bình theo trọng số của hai giá trị trung bình của hai phép đo; với trọng số xác định độ không chắc chắn liên quan giữa 2 phép đo. Nếu độ không chắc chắn ζ2 của phép đo thứ 2 đặc biệt lớn thì giá trị trung bình thu đƣợc sẽ gần với giá trị trung bình của x 1 với độ chính xác hơn. Với giá trị trung bình có đƣợc, chúng ta thay vào trong biểu thức xác suất p12(x) và tính đƣợc độ không chắc chắn tƣơng ứng là: z 3 Công thức này nói lên rằng: chúng ta có thể tạo ra một phép đo mới với giá trị trung bình và độ không chắc chắn tƣơng ứng bằng cách kết hợp các phép đo trƣớc đó. Tính chất này của hai phép đo Gauss có nghĩa là: nếu chúng ta có M phép đo thì có thể kết hợp hai phép đo đầu, sau đó kết hợp phép đo thứ 3 với kết quả hai phép đo đó và cứ nhƣ vậy đến hết.
Cuối cùng ta sẽ thu đƣợc kết quả là phép đo tƣơng đƣơng của M phép đo đó mong muốn. Giả sử với mỗi phép đo có , chúng ta có thể tính trạng thái của ƣớc lƣợng hiện tại nhƣ sau: Bƣớc thứ 1, chúng ta có. Ta có biểu thức ƣớc lƣợng: Giản ƣớc biểu thức trên ta có: Tƣơng tự nhƣ vậy ta có: Nhƣ vậy, các công thức trên cho phép chúng ta có thể tách biệt hoàn toàn thông tin cũ với thông tin mới. Đặt hệ số cập nhật là K: Khi đó sẽ thu đƣợc dạng biểu thức đệ quy đơn giản hơn: Ở phần trƣớc, chúng ta nói đến là việc thực hiện nhiều phép đo đối với một đối tƣợng x cố định mà chƣa đề cập đến vấn đề là đối tƣợng đó có thể z 4 chuyển động trong quá trình đo.
Trƣờng hợp này chúng ta sẽ gọi là pha dự đoán. Trong suốt pha dự đoán này, chúng ta sử dụng các thông tin đã biết để dự đoán về kết quả phép đo mới mà hệ thống sẽ diễn ra. Trong thực tế, pha dự đoán đƣợc hoàn thành ngay sau khi một phép đo mới đƣợc thực hiện nhƣng trƣớc khi phép đo mới đƣợc đƣa vào ƣớc lƣợng trạng thái hệ thống. Ví dụ nhƣ khi chúng ta đo vị trí của một ô tô tại thời điểm t và sau đó là (t+dt).
Nếu ô tô đó đang chuyển động với vận tốc v thì chúng ta không thể kết hợp phép đo đó một cách trực tiếp. Đầu tiên, chúng ta cần tiến tịnh tiến mô hình của chúng ta về phía trƣớc dựa trên cơ sở những thông tin đã biết tại thời điểm t vì thế chúng ta có một mô hình không chỉ của hệ thống tại thời điểm t mà cả (t+dt) ngay trƣớc khi thông tin mới đƣợc kết hợp. Theo cách này, thông tin mới nhận đƣợc tại thời điểm (t+dt) phù hợp với cả mô hình cũ và mô hình tại thời điểm (t+dt) của hệ thống. Có 3 loại chuyển động mà chúng ta sẽ xét đến: Chuyển động tự thân của đối tượng: đây là loại chuyển động mà chúng ta có thể xác định trạng thái hệ thống trực tiếp từ lần đo trƣớc.
Nếu chúng ta đã đo hệ thống tại vị trí x với tốc độ v tại thời điểm t thì sau đó tại thời điểm (t+dt) chúng ta kì vọng hệ thống sẽ ở vị trí (x+v*dt). Chuyển động được điều khiển: là loại chuyển động do tác động của các yếu tố bên ngoài. Ví dụ phổ biến nhất của loại vận động này là chúng ta biết về yếu tố tác động gây ra vận động đó. Ví dụ nhƣ hệ thống rô-bốt với phần điểu khiển là hệ thống ra lệnh cho nó.
Rõ ràng trong trƣờng hợp này, nếu rô-bốt đã ở vị trí x và chuyển động với vận tốc v tại thời điểm (t+dt) thì chúng ta kì vọng nó sẽ di chuyển không chỉ tới (x+v*dt) mà có thể xa hơn. Chuyển động ngẫu nhiên: là các chuyển động mà chúng ta không biết hoặc không điều khiển đƣợc. Nhƣ giả thiết trƣớc kia thì chuyển động ngẫu nhiên ở đây cũng có phân bố Gauss hay ít nhất là có thể đƣợc mô hình hóa bởi phân bố này. Nhƣ đã cấp ở trên, để thêm yếu tố chuyển động vào trong mô hình thì chúng ta cần một bƣớc cập nhật trƣớc khi có thể thêm kết quả phép đo mới.