PaddleHub实战:制作3D动作片的过程
gbsrept 发布于2020-05 浏览:3316 回复:2
0
收藏

据可靠消息,加载PaddleHub DeepLabv3+模型(deeplabv3p_xception65_humanseg),可以轻松实现实现一键抠图。

有多轻松呢?一共需要2行:

humanseg = hub.Module( name="deeplabv3p_xception65_humanseg" )
result = humanseg.segmentation( data={"image": [tmp_png_file_name]} )

得到的result是个list,取result[0]['processed']就可以获得一张png图,通过alpha通道只露出抠出的人像。

突然想到,这个很适合把那种镜头焦点主要在演员身上的视频,转成3d效果。方法如下:

1、首先把人像抠出来,然后向右移动一点儿在贴回去,生成新图B;

2、取原图A的红色通道,与新图B的绿色蓝色通道合并。

貌似简单吧?其实有几个坑要处理:

1、制作图B的时候,人像右移,就会空出一块,这块的处理比较头疼:如果填白色,出现一条亮边,没法看了;如果用黑色,合成的图左边是条黑边,立体感很好,但是也挺怪的;如果用原像素填充,会导致左边完全没有立体感。最后采取的办法是用原像素填充一部分,而最左边的1个像素,用遮罩的左边填充,这样会有一定的灰度,既有立体感,又没有明显断裂。

2、用PIL处理,通道顺序为RGB,那么用cv转为视频时,要按照cv的BGR通道顺序调整一下,否则出来的不是红色而是黄色。

3、deeplabv3p_xception65_humanseg如果自动下载有问题,要用 hub install deeplabv3p_xception65_humanseg 安装一下。

处理之后,单帧的效果是这样的:

这张图里,投球手和橄榄球识别成了一个整体,所以不会出现人在前景里,而球在背景里的错误。

具体的处理过程、视频效果,请移步AI Studio工程查看: https://aistudio.baidu.com/aistudio/projectdetail/428347

差点忘了说,需要用红蓝眼镜看:

 

 

 

收藏
点赞
0
个赞
共2条回复 最后由用户已被禁言回复于2022-04
#3自尊心3回复于2020-05

在加上景深的计算作为偏移量的依据就更合理了

0
#2自尊心3回复于2020-05

这个酷,红蓝3d经典的技术

0
TOP
切换版块