Matlab利用现有模板图换背景——图像处理

原理介绍

现在有三张图,有人物的图、二值的模板图(即我们要换图的模板,有目标板块)、一张背景图,如下在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
我们的目标是将人物图的背景换成第三张图的背景。
抠图换背景的原理
  利用模板图(第二张二值图)将目标人物抠出,再将背景图中相应位置的值改为目标人物的值。
  原理可能理解比较难,但代码实现很简单。在遍历背景图的双重循环中,判断当前位置是否为目标区域,如是,则令背景图当前位置的值等于人物图的相应位置的值。

代码实现

trimap = imread('trimap.png');
background = imread('background-small.png');
person = imread('input-small.png');

[m,n,~] = size(background);
for i =1:m
    for j =1:n
        if trimap(i,j) == 255
            background(i,j,:) = person(i,j,:);
        end
    end
end

运行结果图

在这里插入图片描述

注意

1、更换时,也可以在人物图上改变,不过判断语句则要改写为以下语句

if   trimap(i,j) == 0

2、一个二值图的坑,当我拿到二值图的时,默认为白色为1,结果一直换不成功。后面看了一下二值图矩阵的值,发现白色区域为255,修改后成功!

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值