VI SAI
Có rất nhiều phương pháp được đưa ra để tìm một đối tượng bất kỳ đang thực hiện chuyển động trong một đoạn video gồm các frame liên tiếp nhau. Phương pháp dò tìm chuyển động cơ bản nhất là dựa trên phép trừ đơn giản các frame khác nhau trong một đoạn video. Giả sử rằng vị trí camera đứng yên và cường độ sáng là một hằng số. Sau khi trừ nhau ta được 1 ảnh nhị phân thể hiện sự sai biệt của 2 ảnh gốc với các giá trị khác zero chính là vùng chuyển động. Ta có công thức :
(5.1)
Trong công thức trên ta có chính là giá trị ngưỡng. Ngưỡng là một số dương khá nhỏ để phân biệt giữa vùng chuyển động và vùng không có chuyển động. Có nhiều cách để xác định giá trị ngưỡng. Cách đơn giản nhất là đặt giá trị ngưỡng ở trị trung bình mức xám của ảnh. Một số cách đặt ngưỡng động tùy theo mỗi cửa sổ trên ảnh sẽ đòi hỏi các tính toán phức tạp hơn.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Hầu hết các phương pháp hiện nay chủ yếu dựa trên việc trừ 2 frame với nhau để xác định đối tượng chuyển động. Phương pháp truyền thống của dò tìm chuyển động chính là thực hiện trừ frame để tìm sự khác biệt giữa frame chứa hình nền (background) và frame có đối tượng đang chuyển động (foreground). Tìm cách trừ đi cảnh nền là nhiệm vụ đầu tiên của phương pháp này. Vì vậy, phương pháp này thực sự rất dễ dàng thực hiện vì chỉ cần một mạch trừ các pixel cùng vị trí ở 2 frame và lấy giá trị tuyệt đối kết quả đạt được. Tuy nhiên, phương pháp này bị hạn chế rất lớn khi ứng dụng vào thực tế, khi mà bắt buộc cảnh đầu tiên camera ghi lại phải là một cảnh nền (không có đối tượng nào chuyển động), các frame tiếp theo sẽ được trừ với frame đầu tiên này để xác định đối tượng chuyển động trên màn hình. Vì vậy, trong thực tế, cảnh nền sẽ được tạo thành từ nhiều frame liên tiếp nhau. Phương pháp đơn giản nhất để tạo thành cảnh nền chính là dùng lọc median cho khoảng 5 đến 6 frame liên tiếp nhau. Với việc lưu trữ số lượng frame lớn đồng nghĩa lượng dữ liệu cần xử lý cũng sẽ rất lớn, đòi hỏi nhiều bộ nhớ và hoàn toàn không thích hợp cho thiết kế phần cứng. Do vậy, phương pháp này không được sử dụng và phát triển thêm.
Một phương pháp trừ frame khác được phát triển dựa trên phương pháp trừ frame truyền thống. Phương pháp này chỉ khác biệt với phương pháp trừ frame truyền thống duy nhất ở điểm là hai frame được lấy trừ nhau là 2 frame liên tiếp trong 1 đoạn video như hình 5.1.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Hình 5.1 : Phương pháp dò tìm chuyển động dựa trên trừ frame
Hạn chế của phương pháp này chính là đối tượng chuyển động được nhận dạng không rõ. Bởi vì 2 frame liên tiếp nhau thì sự khác biệt nhau không lớn, nên đối tượng đang chuyển động cũng rất khó nhận diện, đặc biệt là khi tốc độ chuyển động của đối tượng này chậm chạp. Do vậy, một số phương pháp được đưa ra nhằm “khuyếch đại” vùng có sự chuyển động. Nổi bật trong số này là phương pháp sử dụng công thức tính entropy [5].
Entropy là đại lượng đặc trưng cho sự hỗn độn. Dò tìm chuyển động theo phương pháp entropy chính là dựa trên cơ sở những pixel có sự chuyển động (thay đổi mức xám) dù nhỏ thì giá trị entropy tại vùng đó sẽ lớn hơn rất nhiều so với các giá trị entropy của vùng có các pixel chứa cảnh nền. Các bước sau mô tả quá trình dò tìm chuyển động bằng phương pháp sử dụng entropy :
Tính toán sự sai biệt của các ảnh liên tiếp nhau
• Đầu tiên ảnh màu sẽ được chuyển thành ảnh trắng đen (gray_scale) với 256 mức xám ký hiệu là F(k), k là số thứ tự của frame.
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
• Sau đó ta tính ảnh sai biệt D(k): D(k)= ф ( |F(k)-F(k-1)| ). Trong đó ф(.) là hàm lượng tử hoá từ 256 mức xám thành Q=16 mức xám.
Tích luỹ Histogram
Để tính Histogram cho frame F(k) chúng ta cần tích luỹ Histogram từ D(k- L+1) đến D(k), trong đó L là số frame cần cho việc tích luỹ, ví dụ để tính entropy cho frame F(k+1) chúng ta cần tích luỹ Histogram từ D(k-L+2) đến D(k+1). Đặc biệt đối với L frame khác biệt đầu tiên từ D(1) tới D(L) được sử dụng để tích luỹ Histogram cho frame D(L):
L k q j i q j i h k L L H 1 , , , , ( ) 1 ( ) (5.2) Tính entropy
Khi ta đã tích luỹ được Histogram cho các pixel của frame thứ k thì hàm mật độ xác suất cho pixel (i,j) sẽ được tính bằng việc chuẩn hoá Histogram :
Pi,j,q(k) (Hi,j,q(k)) (5.3) Trong đó (.) là hàm chuẩn hoá, ở đây số pixel trong mỗi bin của Hi,j(k) sẽ được chia cho số pixel tổng cộng của Histogram. Bởi vì D(k) được lượng tử hoá thành 16 mức xám nên Histogram chuẩn hoá P(i,j,k) sẽ có 16 giá trị gián đoạn. Sau đó Entropy sẽ được tính bởi công thức:
(5.4) Q q q j i q j i j i k P k P k E 1 , , , , , ( ) ( )log[ ( )]
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Hình 5.2 thể hiện kết quả đạt được khi sử dụng công thức tính entropy cho dò tìm chuyển động.
Hình 5.2 : Kết quả đạt được của thuật toán entropy
Cũng dựa trên phương pháp trừ 2 frame liên tiếp nhau trong một đoạn video, nhưng 2 frame này được bỏ bớt các thông tin không cần thiết trước khi GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
được đưa ra thực hiện phép toán trừ. Phổ biến nhất là chỉ lấy các cạnh của các đối tượng trong 2 frame rồi trừ lẫn nhau [6].
Hình 5.3 : Mô hình dò tìm cạnh của 1 frame
Hình 5.4 : 4 cửa sổ dùng để dò tìm cạnh theo chiều ngang, dọc, +45o, -45o Phương pháp thực hiện dò tìm chuyển động dựa trên dò cạnh được thực hiện bằng cách dò cạnh của các frame liên tiếp nhau. Mô hình của thuật toán này được trình bày ở hình 5.3. Đầu tiên, trên mỗi frame, 4 cửa sổ 5x5 được mở ra, tương ứng với việc dò cạnh ở 4 chiều : ngang, dọc, xéo 45o và xéo -45o (hình 5.4). 4 cửa sổ này sẽ quét qua toàn bộ bức ảnh lần lượt, kết quả sẽ tạo ra 4 frame hiển GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
thị cạnh tương ứng theo 4 chiều. Ngưỡng được chọn sẽ là median giá trị tuyệt đối sự khác biệt của các pixel kế cận nhau (40 giá trị) cộng với giá trị trung bình của các pixel trong cửa sổ (25 pixel) từ đó xác định các cạnh của frame (hình 5.5).
Tổng giá trị trong vùng -1 Tổng giá trị trong vùng 1 Tính trị tuyệt đối Tổng giá trị trong vùng -1 Tổng giá trị trong vùng 1 Tính trị tuyệt đối WTA So với ngưỡng để xác định cĩ cạnh hay khơng Cạnh của ảnh Ngưỡng . . . . . . . . . . Hình 5.5 : Thuật tốn dị tìm cạnh tương thích với phần cứng
Sau khi đã dò được cạnh của 2 frame liên tiếp theo cả 4 chiều ta sẽ tiến hành trừ 2 frame với nhau để loại bỏ các cạnh của cảnh nền. Khi đã loại bỏ các cạnh của cảnh nền thì các cạnh còn lại chính là đối tượng chuyển động. Phương pháp này được trình bày như hình 5.6. Phương pháp này rất dễ bị nhiễu và bị ảnh hưởng của các chuyển động nhỏ (sự rung rinh của lá cây, sóng gợn lăn tăn trên mặt nước hay sự rung tay của người cầm camera).
GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG
Hình 5.6 : Phương pháp dò tìm chuyển động dựa trên dò cạnh - trừ frame
Các phương pháp dò tìm chuyển động dựa trên vi sai, nói cách khác là dựa trên phương pháp trừ frame, đều không thể xác định được hướng chuyển động của đối tượng. Do đó, để xác định hướng chuyển động hay vectơ vận tốc của đối tượng, phương pháp dò tìm chuyển động dựa trên vi sai phải có thêm khả năng tích lũy vi sai. Lúc này, các thông tin về giá trị sai biệt giữa 2 frame trước sau khi tính toán sẽ được lưu trữ lại và đem so sánh với sự sai biệt của 2 frame sau. Sau đó, giá trị này sẽ luôn được cập nhật lại trong mỗi lần tính toán tiếp theo. Với cách này, các phương pháp dò tìm chuyển động mới có thể xác định được hướng chuyển động của đối tượng dựa trên giá trị sai biệt được tích lũy sau mỗi lần tính toán. Hơn nữa, với cách này, các vùng nhiễu (do camera, nhiễu nhiệt, nhiễu điện từ. . .) sẽ được hạn chế nhằm tránh ảnh hưởng đến kết quả dò tìm chuyển động. Giá trị sai biệt tích lũy được tính theo công thức sau :
(5.5)
với ak là hệ số cập nhật cho một chuỗi gồm n frame liên tiếp nhau. GVHD : PGS.TS. NGUYỄN HỮU PHƯƠNG