电影绿幕走进生活?如何基于相芯SDK实现绿幕分割?

绿幕,是一种广泛应用于电影、电视制作和视频编辑领域的技术。它通过在拍摄或录制过程中使用一块特殊颜色(通常是绿色)的背景布,然后在后期制作中将该颜色替换成其他图像或视频素材。这种技术主要基于颜色键盘合成技术(chroma keying),可以实现在虚拟环境中展示各种场景和效果。

相芯SDK绿幕功能使用图像分割算法将视频或图像中的前景和背景进行分离,具有较高的质量和准确性。能够准确地分离绿色背景,并实现平滑的背景替换,从而产生逼真的绿幕效果,同时具备较高的实时性能和效率,能够在实时或快速处理的情况下实现绿幕效果,除此以外还支持多平台,以及其他附加功能叠加使用,如绿幕和美颜的叠加使用。

1.功能介绍

相芯SDK绿幕功能详细介绍:

  1. 安全区:相芯SDK提供的绿幕技术中,安全区指在视频编辑过程中需要保留的区域,以确保前景元素(例如人物或物体)不被意外地裁剪或遮挡。通过使用安全区,用户可以精确控制绿幕效果的应用范围,确保关键的前景元素不受到意外的修改。这对于保持视频的一致性和完整性非常重要,尤其是在涉及人物或需要保留特定物体的场景中。
  2. 背景替换:相芯SDK还支持绿幕背景替换,可以帮助用户将视频或图像中的绿色背景替换为自定义的背景图像或视频。这项功能利用计算机视觉和图像处理技术,准确识别并分离绿色背景,然后将其替换为用户选择的背景。
  3. 相似度参数:相似度参数用于控制背景和前景之间的相似度阈值。较低的相似度阈值会更严格地分离背景和前景,确保准确性,但可能导致一些细节丢失。较高的相似度阈值则可能使得背景和前景的边界模糊,但可以保留更多的细节。用户可以根据需要调整相似度参数,以达到预期的分离效果。
  4. 关键颜色提取:关键颜色提取是指从绿色背景中提取关键色彩信息的过程。在绿幕技术中,绿色通常被用作背景色,因为它在大多数场景中相对较少出现于前景中。关键颜色提取算法可以识别并提取出这个特定的绿色,以便在后续的背景替换过程中准确地分离背景和前景。

2.使用前必查

在项目中使用道具贴纸特效之前,请确保:

3.使用步骤

3.1. build.gradle配置

allprojects配置

allprojects {  
    repositories {  
        ...  
        maven { url 'https://maven.faceunity.com/repository/maven-public/' }   
        ...  
  }  
} 

dependencies导入依赖

dependencies {
...
implementation 'com.faceunity:core:8.6.0' 
implementation 'com.faceunity:model:8.6.0' 
...
}

3.2构造绿幕对象BgSegGreen

绿幕bundle主要是用来作绿幕抠图使用的,用绿色或蓝色背景,抠图效果会更佳。

加载绿幕道具bundle示例

BgSegGreen bgSegGreen = new BgSegGreen(new FUBundleData(DemoConfig.BUNDLE_BG_SEG_GREEN));  

设置绿幕参数

bgSegGreen.setSimilarity(BgSegGreenSource.SIMILARITY);//设置相似度
bgSegGreen.setSmoothness(BgSegGreenSource.SMOOTHNESS);//设置平滑度
bgSegGreen.setTransparency(BgSegGreenSource.TRANSPARENCY);//设置相似度

3.3构造安全区

相芯绿幕支持构造安全区域,除了内置的安全区之外还支持用户上传自定义图片,安全区域不参与绿幕抠像。

构造自定义安全区图片示例方法如下:

 Public static BgSegGreenSafeAreaBean buildSafeAreaCustomBean(String path) {  
        if (path != null && path.trim().length() > 0 && new File(path).exists()) {  
            saveCachePortraitSegment(path);  
            return new BgSegGreenSafeAreaBean(0, BgSegGreenSafeAreaBean.ButtonType.NORMAL1_BUTTON, path,false);  
        }  
        return null;  
}

切换安全区域图片

void onSafeAreaSelected(BgSegGreenSafeAreaBean bean);

3.4创建自定义背景

除了内置绿幕的5个背景道具以外,相芯还支持用户自定义绿幕背景,灵活打造各种场景下多功能背景。

public static ArrayList<BgSegGreenBackgroundBean> buildBgSegGreenBackground() {  
        ArrayList<BgSegGreenBackgroundBean> backgroundBeans = new ArrayList<>();  
        String fileDir = "bg_seg_green" + File.separator + "sample" + File.separator;  
        backgroundBeans.add(new BgSegGreenBackgroundBean(R.string.cancel, R.mipmap.icon_control_none, null));  
        backgroundBeans.add(new BgSegGreenBackgroundBean(R.string.bg_seg_green_science, R.mipmap.icon_green_science, fileDir + "science.mp4"));  
        return backgroundBeans;  
}  

3.5 FURenderKit加载当前特效

加载当前绿幕特效

public void bindCurrentRenderer() {  
       FUAIKit.getInstance().setMaxFaces(1); // 设置人脸数
       mFURenderKit.setFaceBeauty(FaceBeautyDataFactory.faceBeauty);  //加载美颜
       mFURenderKit.setBgSegGreen(mBgSegGreen);  //加载绿幕
       mBgSegGreenListener.onBackgroundSelected(mBgSegGreenBackgroundBeans.get(mCurrentBackgroundIndex));//加载绿幕背景
       mBgSegGreenListener.onSafeAreaSelected(mBgSegGreenSafeAreaBeans.get(mCurrentSafeAreaIndex));  //加载安全区
   }  

4.API参考列表

Module类名说明
coreBgSegGreen绿幕抠像功能业务模型

BgSegGreen

属性说明默认值备注
enable绿幕抠像开关truetrue表示开启,false表示关闭
isBGRABGRA类型false背景图片的颜色是否是BGRA类型
colorRGB锚点颜色FUColorRGBData(0.0, 255.0, 0.0)选取的颜色RGB
similarity相似度0.518取值范围0.0-1.0,相似度:色度最大容差,色度最大容差值越大,更多幕景被抠除
smoothness平滑度0.22取值范围0.0-1.0,平滑:色度最小限差,值越大,更多幕景被扣除
transparency透明度0.0取值范围0.0-1.0,透明度:图像前后景透明度过度,值越大,两者边缘处透明过度更平滑
centerPoint中心坐标FUCoordinate2DData(0.5, 0.5)取值范围0.0-1.0, [0.5,0.5]表示中心点坐标
zoom缩放程度1.0取值范围0.25-4.0

5.总结

更多绿幕功能玩法详见相芯SDK文档,如在接入中遇到问题,可联系相芯科技进行咨询!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值