2010-10-07 12 views
5

Giả sử bạn đang quay video (với camera ở vị trí ổn định) và chim bay qua chế độ xem của máy ảnh. Bạn có thể thực hiện phân đoạn hình ảnh và tự động xóa chú chim này khỏi video.Các kỹ thuật tiêu chuẩn để xóa phân đoạn (chẳng hạn như con người hoặc chim) khỏi video là gì?

Các kiểu thuật toán này được gọi là gì và chúng thường hoàn thành như thế nào?

+0

Bạn đang cố gắng loại bỏ một trường hợp cụ thể (ví dụ: một con chim cụ thể mà bạn có thể đánh dấu để xóa) hoặc tất cả các đối tượng không tĩnh (ví dụ: tất cả mọi người di chuyển) khỏi hiện trường? – Doug

+0

Tôi muốn đưa ra các trường hợp cụ thể. Vì vậy, tôi giả sử một lúc đủ. – amssage

Trả lời

3

Có một kỹ thuật được gọi là Simple Image Object Extraction (SIOX) - nó sử dụng kỹ thuật để xác định đối tượng nền trước và nền trong hình ảnh tĩnh và video. Trình chỉnh sửa GIMP nguồn mở có triển khai nó và có more information about it here.

Từ tổng quan:

SIOX là viết tắt của Simple Khai thác đối tượng tương tác và là một giải pháp để giải nén foreground từ ảnh tĩnh với tương tác người dùng rất ít. SIOX nhanh, mạnh mẽ và có thể được sử dụng cho phân đoạn video. Nó tránh được nhiều nhược điểm của các phương pháp phân đoạn dựa trên đồ thị nhưng thực hiện tốt như nhau trên các tiêu chuẩn khác nhau. SIOX mở và miễn phí (Giấy phép Apache) và các tác giả đã cố ý không cấp bằng sáng chế bất kỳ phần nào của công nghệ. Kết quả là, nó đã được tích hợp vào một số chương trình thao tác hình ảnh mã nguồn mở trong những năm qua. SIOX là thuật toán cơ bản của công cụ khai thác nền trước trong Chương trình Thao tác Hình ảnh GNU (GIMP) và là một phần của công cụ đánh dấu trong Inkscape. SIOX bắt nguồn từ E-Chalk, nơi một người hướng dẫn đứng trước một bảng đen điện tử được phân đoạn. Các biến thể của SIOX đang được sử dụng cho tầm nhìn robot và để cải thiện phân đoạn máy ảnh thời gian 3D.

Đây là liên kết đến Java Reference Implementation of SIOX.

Đây là liên kết đến PDF with details về cách biến thể của thuật toán hoạt động.

Bạn có thể điều chỉnh nó để sử dụng nội suy khung nội suy để loại bỏ một đối tượng nền trước cụ thể khỏi mỗi khung của video bằng cách sử dụng dữ liệu thời gian từ các khung xung quanh.

2

Nếu máy ảnh được cố định và không có quá nhiều chuyển động trong cảnh, thì tôi sẽ đề xuất phương pháp dựa trên phép trừ nền.

Bước 1: Tính toán nền cho từng khung hình của video. Có những thuật toán phức tạp để làm điều này, nhưng một thuật toán rất đơn giản và hiệu quả sẽ là tính toán giá trị trung bình của mỗi điểm ảnh trong hình ảnh trên một cửa sổ thời gian 3 giây. Còn nếu đối tượng đang được đề cập đang di chuyển chậm. Ngẫu nhiên, nếu bạn chỉ thực hiện loại lọc này, nó sẽ xóa hầu hết các đối tượng chuyển động khỏi video nếu máy ảnh được cố định, do đó câu hỏi trước đây của tôi về tất cả các đối tượng so với một đối tượng.

Bước 2: Đánh dấu các khu vực bạn muốn xóa trong mỗi khung bằng công cụ cọ vẽ và thay thế chúng bằng các pixel nền. Đừng bận tâm với một công cụ brush hoặc lasso tốt như bất kỳ pixel không đối tượng nào bạn đánh dấu sẽ chỉ được thay thế bằng phiên bản đã lọc của chúng. Bạn có thể sử dụng cùng một dấu cọ cho nhiều khung hình vì ranh giới không quan trọng lắm. Nếu đối tượng là vật duy nhất di chuyển trong cảnh, bạn có thể chỉ đánh dấu toàn bộ khung hình và thay thế nó bằng nền sau.

Dù sao, để trả lời câu hỏi chung chung hơn, chủ đề bạn muốn nghiên cứu được gọi là inpainting cho hình ảnh và video.Có khá nhiều tài liệu trên đó về chủ đề, những gì tôi mô tả chỉ là một phương pháp siêu đơn giản mà bạn có thể thực hiện trong một giờ hoặc lâu hơn với opencv.