黑色在Matlab中的黑色运动分割

时间:2012-12-08 19:55:24

标签: matlab image-processing background-subtraction

我有一个视频,我正在使用背景减法和运动分割。视频中的地板是黑色的,所以当我得到轮廓时,脚和部分腿被切断。有没有解决这个问题?这就是它的样子。 enter image description here

enter image description here

这是背景图片。 这是我的代码......

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

1 个答案:

答案 0 :(得分:2)

在仅使用像素处理而不包含更高级别语义信息的计算机视觉中可以实现的目标是有限的。似乎他只会让你认为腿缺失的是你的对身体应该是什么样子的高级知识。这里真正的问题是:像素中是否存在任何真实信息?如果碰巧腿部与背景颜色完全相同,除非你加入高级语义信息,否则你无能为力。