Graph-Cut算法在目标分割跟踪中的仿真应用

分为三部分

1、Graph-Cut based Object Segmentation

2、Tracking-based Video Cut-out

3、光滑处理Video Matting



具体要求是:

1,静态图片的目标提取,要用最好的算法或者要有一点改进

2,使用目标跟踪来提取视频中的目标,不必用光流法,用最好或最新的算法或者有改进

3,对目标进行光滑处理的时候,能够通过调整阀值,来区分毛发和背景

必须是要实时进行


分别对三个部分进行介绍:

1、Graph-Cut based Object Segmentation

1,静态图片的目标提取,要用最好的算法或者要有一点改进

这个通过对静态图片的目标提取仿真后,应用到视频的目标提取,因为在实际中,视频是由多个帧图像构造的,本质上也是图像。

这里使用的算法,本质上就是对当前帧的图像进行分割提取处理。

这里,图像目标分割,我们主要采用的是一种基于改进的物体轮廓提取算法。


这里,我们使用的算法是一种改进的基于活动轮廓的目标提取算法。这里,我们主要使用一种基于概率密度函数来计算目标区域和背景区域不同来进行分割的。



仿真测试1:

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_sed



仿真测试2:

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_sed_02


仿真测试3:

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_目标跟踪_03

从上面的仿真效果可知,通过目标提取,可以有效的获得图片中的目标,但是从提取的结果可知,其边缘有一些毛刺干扰,因此,我们在进行做跟踪的时候,需要进行实时的光滑处理。



2、Tracking-based Video Cut-out

2,使用目标跟踪来提取视频中的目标,不必用光流法,用最好或最新的算法或者有改进

这里,我们所需要的跟踪算法和一般的跟踪算法不同,因为一般的很多文献的跟踪算法都是产生一个大致的区域(多为矩形方框区域)来进行跟踪的,由于本课题需要最后替换背景,因此,必须完整的得到整个目标的轮廓进行跟踪。这里,首先对一个已经录制好的视频进行仿真处理,得到的结果如下所示:

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_sed_04

算法会对该运动目标进行实时的轮廓跟踪,为背景的替换奠定了基础。

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_目标跟踪_05

仿真效果如上所示。更换好背景的跟踪效果。



3、光滑处理Video Matting

3,对目标进行光滑处理的时候,能够通过调整阀值,来区分毛发和背景

主要在上面两个步骤的基础上,进一步优化分割效果,从而使得分割后的结果根据完美。因为在实际轮廓提取的时候,会出现目标边缘曲线不光滑,而且对于一些比较“狭长”的目标,提取的轮廓往往会出现覆盖的问题,针对这些问题,我们将初始提取的轮廓进行进一步的光滑处理。

在做光滑处理之前,得到的轮廓曲线如下图像所示:

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_sed_06

从上面的仿真结果可知,如果没有加入光滑处理,其轮廓曲线比较粗糙,不是很光滑,而且部分边界存在残缺,没有完全“围住”目标的轮廓,此外,目标中间的有部分区域被误认为是背景区域而被错误的去除,所以,我们需要增加光滑处理算法使得得到的轮廓更加平滑。

这里,我们采取的算法策略为根据文献中讲到的算法,进行边缘的光滑处理。通过仿真,得到的提取效果如下所示:

【Graph-Cut】基于Graph-Cut的目标分割跟踪仿真_人工智能_07


对比上面的仿真结果可知,加入光滑处理之后,效果得到进一步的改善。A10-21

登录后复制

clc;clear;close all;warning off;addpath 'func\' %粒子更新滤波Para_Updata   = [1,0,1,0;
0,1,0,1;                  0,0,1,0;                  0,0,0,1];Num_Particles = 8000;X_rgb         = 20;
X_pos         = 8;X_vec         = 4;%读取视频以及视频参数 PIX_Size      = [160,200]; %粒子初始化X1            = 
func_Particle_initial(PIX_Size,Num_Particles);X2            = func_Particle_initial(PIX_Size,Num_Particles); 
delete(imaqfind);%Set up video object. Note: to change to a different camera (or camera setup) change the 
following line:vid = videoinput('winvideo',1,'YUY2_640x480');%Set the video object to always return rgb 
images:set(vid, 'ReturnedColorSpace', 'rgb');triggerconfig(vid,'manual');start(vid)%Initialize frame Frm 
and fps variableFrm     = 0;fps     = 0;%Set the total runtime in seconds runtime = 100;h       = figure(1);
tic;timeTracker = toc;while toc < runtime     toc    Frm = Frm + 1;       %获得摄像头图像    img
= getsnapshot(vid);    img                          = double(imresize(img,[PIX_Size]));    figure(1);    
subplot(121);    imshow(uint8(img));     axis off    title('摄像头视频获取');    %获得每一帧图像    PIX_each_frame
= img;    if  Frm > 1        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        
%更新粒子        X2       = func_Particle_Updata(Para_Updata,X_pos,X_vec,X2);        %计算状态        
STATE2   = func_Likelihood(X_rgb,[220;160;160],X2(1:2,:),PIX_each_frame);        %粒子重采样        X2       
= func_Particle_Resample(X2,STATE2);                %跟踪效果显示        subplot(122);        
image(PIX_each_frame/max(max(max(PIX_each_frame))));                 STR = ['粒子跟踪效果',num2str(Frm)];        
title(STR)        hold on        plot(X2(2,:),X2(1,:),'g.');        hold off        axis off        
set (gcf,'Position',[200,300,800,250], 'color','w')                         drawnow;    
endendstop(vid)% figure;% for Frame = 1:Frm%     subplot(121);%     imshow(uint8(OLD{Frame}));
title('原始图像');%     subplot(122);%     imshow(uint8(NEW{Frame}));title('新背景图像');%     
pause(0.05);% end 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.
33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.
68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空