động
Có nhiều cách khác nhau để phát hiện chuyển động. Cách phổ biến nhất là so sánh khung hình hiện tại với khung hình trước đó.
Giả sử khung hình hiện tại là một ảnh 24bit RGB (image), một bản sao đa mức xám (currentFrame) của ảnh đó và bản sao đa mức xám của khung hình trước đó (backgroundFrame).
Đầu tiên ta xác định những vùng mà hai ảnh có sự khác nhau bằng cách sử dụng các bộ lọc chênh lệch và bộ lọc ngưỡng.
// tính giá trị chênh lệch ở từng điểm ảnh sử dụng bộ lọc difference
Difference differenceFilter = new Difference( );
IFilter thresholdFilter = new Threshold(15); differenceFilter.OverlayImage = backgroundFrame;
Bitmap tmp1 = differenceFilter.Apply(currentFrame);
// lấy ngưỡng để bỏ qua những điểm ảnh thay đổi không đáng kể
Bitmap tmp2 = thresholdFilter.Apply(tmp1);
B
Sau bước nay, ta sẽ thu được một ảnh với những điểm ảnh trắng thể hiện những vùng mà khung hình hiện tại khác với khung hình trước đó với một giá trị ngưỡng xác định. Ta có thể đếm số lượng những điểm ảnh trắng này và đánh giá mức độ khác biệt của hai khung hình.
Tuy nhiên, nguồn ảnh thu nhận từ các thiết bị camera đều thường kèm theo nhiễu. Để loại bỏ những điểm ảnh nhiễu, ta sử dụng bộ lọc ăn mòn.
IFilter erosionFilter = new Erosion();
Bitmap tmp3 = erosionFilter.Apply(tmp2);
Việc đếm số lượng những điểm ảnh trắng bây giờ sẽ thu được kết quả chính xác hơn rất nhiều.
Chương 5
Phát hiện khuôn mặt trên ảnh tĩnh
Bài toán 5.1 Bộ phát hiện khuôn mặt 5.2 Cấu trúc dữ liệu lưu trữ kết quả huấn luyện 5.3 Biểu diễn ảnh bằng kỹ thuật ảnh tích phân 5.4
5.1 Bài toán
Đầu vào của bài toán là một hình ảnh tĩnh
Bài toán đặt ra là phải xác định được tất cả (hoặc càng nhiều càng tốt) những khuôn mặt hiện diện trong ảnh đầu vào.