Извлечение переднего плана из видеопотока

Я работаю над проектом обработки видео, в котором в качестве входного сигнала используется камера, и у меня статический фон. Мне не нужна какая-либо динамическая генерация фона, как у BackgroundSubtractorMOG в opencv. Я пытаюсь привязать объект переднего плана внутри ограничивающих рамок. Так что для этого я и сделал

cv::absdiff(back_frame,matProcessed,temp);         //back_frame is the background matProcessed is the frame from CAMERA in grayscale
cv::threshold(temp,temp,20,255,THRESH_BINARY);

cv::findContours(temp,contours,CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
std::vector<Rect> boundRect( contours.size() );
std::vector< std::vector<Point> > contours_poly( contours.size() );

int j=0;
for(int i = 0; i < contours.size(); i++ )
{
if(contourArea(contours[i])>100)
{
approxPolyDP( Mat(contours[i]), contours_poly[i], 10, true );
boundRect[j] = boundingRect( Mat(contours_poly[i]) );
j++;
}}
cv::rect r;
for (int i = 0; i < boundRect.size(); i++)
{
r = boundRect[i];

cv::rectangle(
frame,
cv::Point(r.x, r.y),
cv::Point(r.x + r.width, r.y + r.height),
CV_RGB(0,255,0)
);
}

Но проблема в том, что я не правильно выхожу на передний план. В любом случае я могу улучшить генерацию переднего плана и всегда связывать объект переднего плана, используя некоторые прямоугольные ограничивающие рамки, независимо от сложности фона и других факторов?

1

Решение

Существуют различные простые и сложные методы для этого. Переход с пиксельного вероятностного подхода определенно рекомендуется. Вы также можете использовать такие вещи, как модели Маркова по внешнему виду, чтобы уточнить свой результат. Ссылаться на Эта бумага, конкретно Связанных с работой раздел и последний бит, где они уточняют объекты переднего плана.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]