原理
MATLAB实现绿幕视频换背景的主要原理是利用了HSV空间的不同颜色的色彩范围。
在获得视频的帧数后对视频的每一帧进行处理:
1.将每帧图像都转换到HSV色彩空间。
2.根据HSV空间内绿色的范围对每帧图像进行处理,将其设置为黑色。
3.对处理好的图像进行形态学处理,就是填补色彩空洞,让图像的细节边缘色彩处理完整。
4.导入背景图片,调整图片比例后对视频每一帧进行融合处理。
以上就完成了对绿幕视频的背景替换,当然其他颜色也可以进行相同处理,替换要处理的颜色范围即可。
代码部分如下
完整版请前往博客
clc;
%在打开文件对话框中选取一幅待处理图像
[filename,pathname]=uigetfile('*.*','选取前景视频');
str=[pathname,filename];
f=VideoReader(str);% 帧数
number=f.numberOfFrame;
for i=1:height
for j=1:width
if((S(i,j)>=43/255&&S(i,j)<=255/255)&&((V(i,j)>=46/255)&&(V(i,j)<=255/255))&&(H(i,j)>=35/255)&&(H(i,j)<=155/255))
mask(i,j)=0;
end
end
end
se =strel('square',3);
mask1=imerode(mask,se);
mask=imfill(mask1,'holes');
mask =imclose(mask,se);
background=im2double(imread("image_background.jpg"));
for i=1:height
for j=1:width
if(foreground(i,j)~=0)
background(i+height1-height,j+width/2 ,:)=foreground(i,j,:);
end
end
end