Вычитание фона Opencv не обнаруживает движущиеся объекты для видео с небольшими снегопадами

Я пытаюсь использовать OpenCV вычитание фона для обнаружения движущихся объектов. Это хорошо работает для некоторых видео. Но для одного конкретного видео (снятого неподвижной камерой) оно не обнаруживает движущихся пешеходов. Кроме того, в видео очень слабый снегопад, который трудно увидеть невооруженным глазом. Может ли это быть причиной того, что он не обнаруживает движущиеся объекты? Или могут быть другие причины, такие как похожие значения пикселей для объектов фона и переднего плана.

Это код программы:

import processing.core.*;
import processing.video.*;
import gab.opencv.*; 
public class BackgroundSubtraction extends PApplet {

Movie video;
OpenCV opencv;

public void setup(){
    size(720,680);
    video = new Movie(this, "/home/gurinderbeer/Downloads/IMG_1570.MOV");
    opencv = new OpenCV(this, width, height);
    opencv.startBackgroundSubtraction(0, 3, .5); // 5,3, .5
    video.play();
    }

public void draw() {
    image(video, 0, 0); 
    opencv.loadImage(video);
    opencv.updateBackground();
    opencv.dilate();
    opencv.erode();
    noFill();
    stroke(255, 0, 0);
    strokeWeight(3);
    for (Contour contour : opencv.findContours()) {
        contour.draw();
        }
    }


public void movieEvent(Movie m) {
      m.read();
    }

public static void main(String _args[]){
    PApplet.main(new String[] { BackgroundSubtraction.class.getName()});
    }
}

Это пара снимков с видео. Мы едва можем видеть снежные дожди (хотя на самом деле очень слабые снежные дожди), и там гуляют два пешехода. но они не фиксируются при обнаружении контура.

Может ли этот очень легкий снегопад стать причиной не обнаружения пешеходов?

1 ответ

Это может быть связано с фоновым шумом от окружающей среды, вы можете использовать эффект сглаживания для вашего видео перед обработкой.

Сглаживание, безусловно, размывает шумы, что улучшит общую скорость обнаружения.

Здесь есть пример.

Другие вопросы по тегам