Background Subtraction trong Computer Vision

1. Background Subtraction là gì?

Background Subtraction hay Foreground Detection là một kỹ thuật trong Xử Lý Ảnh và Thị Giác Máy Tính. Đây là phương pháp phát hiện tiền cảnh, hiểu đơn giản là ta sẽ tách 1 đối tượng trong ảnh ra khỏi hậu cảnh phía sau, nhằm mục đích hậu xử lý như nhận diện đối tượng, cử chỉ, chuyển động, tracking…

Phương pháp này dựa trên việc giả định hậu cảnh tĩnh (static background) và thường không áp dụng trong môi trường thực (ánh sáng tự nhiên, ngoài trời…) hoặc các thay đổi trên ảnh nền trong nhà (như màn hình TV) hoặc ngoài trời có mưa gió, thay đổi ánh sáng.

Xem thêm video dưới đây để hiểu rõ hơn về Background subtraction

2. Các phương pháp phổ biến

Một thuật toán Background Subtraction mạnh cần phải có khả năng xử lý việc thay đổi của môi trường như ánh sáng, các chuyển động lặp (Màn hình TV, quạt…) hoặc các thay đổi không diễn ra liên tục (như đóng mở cửa, đèn xanh đỏ).

2.1. Sử dụng khác biệt về khung hình.

Một thuật toán phát hiện chuyển động bắt đầu bằng các phân đoạn nơi mà tiền cảnh hoặc đối tượng chuyển động đã được phân đoạn ra khỏi tậu cảnh. Các đơn giản nhất để thực hiện là lấy một ảnh như là nền và các khung ảnh thu được tại thời điểm t, ký hiệu là I(t) để do sánh với hậu cảnh, ký hiệu là B. Ở đây ta sử dụng các phương pháp tính đơn giản, ta có thể tách đối tượng một cách tương đối dễ dàng bằng cách sử dụng kỹ thuật trừ ảnh (image subtraction) của Computer Vision cho mỗi điểm ảnh tại thời điểm t – I(t), lấy điểm giá trị điểm ảnh – ký hiệu P[I(t)] và trừ cho điểm ảnh tương ứng cùng vị trí trên hậu cảnh, ký hiệu là P[B].

Ta có phương trình.

P[F(t)] = P[I(t) – P[B]

Hậu cảnh (nền) được giả định là một khung hình tại thời điểm t. Hình ảnh khác biệt này – P[F(t)] sẽ chỉ hiển thị cường độ cho các điểm ảnh đã thay đổi trong 2 khung hình. Vì vậy, ta thấy gần như hậu cảnh đã bị xoá đi. Cách thực hiện này sẽ chỉ làm việc trong trường hợp các tiền cảnh, đối tượng là di chuyển và hậu cảnh là tĩnh (static background). Việc tạo ngưỡng ảnh sẽ được đưa vào hình ảnh khác biệt – P[F(t)] để tăng hiệu quả của việc trừ nền.

| P[F(t)] – P[F(t+1)] | > Threshold

Có nghĩa rằng cường độ trong các điểm ảnh của hình ảnh khác biệt đã bị nhị phân hoá (bằng việc tạo ngưỡng) hay được lọc bằng giá trị của Nhị phân hoá (Ngưỡng nhị phân, giá trị T). Sự chính xác của phương pháp này phụ thuộc vào tốc độ di chuyển trong khung cảnh (scene). Các chuyển động nhanh hơn thì cần tạo ngưỡng cao hơn.

2.2. Mean filter – Lọc trung bình

Để tính toán ảnh chỉ chứa hậu cảnh, một loạt các ảnh trước đó sẽ được tính trung bình. Để tính toán hậu cảnh ở thời điểm t, ta có công thức.

Trong đó N là số lượng ảnh trước đó dùng để tính trung bình. Giá trị trung bình này là trung bình giá trị của các điểm ảnh trong ảnh được cho. N phụ thuộc vào tốc độ Video – số lượng ảnh mỗi giây và lượng di chuyển của đối tượng trong ảnh. Sau khi tính toán hậu cảnh B(x, y, t) ta có thể trừ nó từ ảnh V(x, y, t) tại thời điểm t và tạo ngưỡng nhị phân cho nó. Sau đó, tiền cảnh sẽ như sau

| V(x, y, t) – B(x, y, t) | > Th

Trong đó Th là ngưỡng nhị phân, tương tự ta có thể sử dụng Median (trung tuyến) hay cho Mean (trung bình) để tính giá trị B(x, y, t).

Nếu sử dụng một cùng một ngưỡng cho tất cả các điểm ảnh với thời gian độc lập có thể giảm độ chính xác của 2 phương pháp trên. (Khác biệt khung hình và Mean filter).

Ngoài 2 phương pháp trên, còn 1 thuật toán là Gaussian, nhưng ta tạm thời không xét trong bài viết này.

3. Thực thi phương pháp Mean filter trên C++.

Typing…

Leave a Reply

Your email address will not be published. Required fields are marked *