我有一个视频,我正在使用背景减法和运动分割。视频中的地板是黑色的,所以当我得到轮廓时,脚和部分腿被切断。有没有解决这个问题?这就是它的样子。
这是背景图片。 这是我的代码......
clear all
close all
clc
% Read the video in the video object Mov
MM = mmreader('kassie_test_video.wmv');
% Read in all video frames.
Mov = read(MM);
% Get the number of frames.
FrameNum = MM.NumberOfFrames;
% load 'object_data.mat'
BackgroundImage = (Mov(:,:,:,98)); % background image
% set the sampling rate as well as the threshold for binary image.
downSamplingRate = MM.FrameRate;
%%
index = 1;
clear IM
clear Images
sf=10;ef=sf+30;
for ii =sf:ef
% Extract next frame
Im = im2double(Mov(:,:,:,ii));
% Background subtraction
Ib = rgb2gray(abs(im2double((Mov(:,:,:,ii)))-im2double(BackgroundImage)));
% conversion to binary image.
Thresh = graythresh(Ib);
Ib = im2bw(Ib, Thresh);
se = strel('square',1);
Ib = imerode(Ib,se); % Erode the image
Ib = medfilt2(Ib); % median filtering
Ib = imfill(Ib,'holes'); % fill the holes in the image
imshow(Ib,[])
end
答案 0 :(得分:2)
在仅使用像素处理而不包含更高级别语义信息的计算机视觉中可以实现的目标是有限的。似乎他只会让你认为腿缺失的是你的对身体应该是什么样子的高级知识。这里真正的问题是:像素中是否存在任何真实信息?如果碰巧腿部与背景颜色完全相同,除非你加入高级语义信息,否则你无能为力。