照片唤醒-photowakeup

编程入门 行业动态 更新时间:2024-10-19 12:47:40

<a href=https://www.elefans.com/category/jswz/34/1771033.html style=照片唤醒-photowakeup"/>

照片唤醒-photowakeup

记录暑假的一些结果…


这张图是数据集中的原始图片 ,利用smpl以及姿势检测cpm,得出拟合出的smpl模型,并得出他的相机投影的轮廓图、深度图、权重图。
值得注意的smpl得到的模型结果不够精细,需要进行warping得到更加精细的轮廓。

关于warping
也就是图像变形,通过拉伸得到准确轮廓的效果。
算法有很多种:例如

不要求准确度的情况下,当然怎样方便怎样来,随意选一种方法就好


上图为轮廓图,左边是原始smpl的轮廓,右边是经过warping后得到的轮廓图。这里要提到的是,既然要进行warping,那么就需要检测到原始图片的人体准确轮廓,这里我们使用的是MASK_RCNN来得到准确轮廓的,再以此为基准进行warping。

上图为深度图,左边是原始smpl的深度图,右边是经过warping后得到的深度图。接下来就可以根据深度图进行三维重建了,所以在整个过程中smpl模型只是为了给我们提供那深度图等几张图而已,最后的模型是我们自己根据深度图进行恢复出来的,从深度图恢复三维模型的过程就像地理中登高图拔起山脉一样,类似但是却要注意计算机视觉中的相机成像关系。

因为我们通过深度图进行重建的方案其实是根据正反两张深度图,分别重建出人体的正面与背面,最后再将两个曲面缝合起来,在缝合的过程中出现了一些问题,就是一开始的缝合边缘漏洞特别大,就如上面第一张图一样,后面进行过改进,用类似贴胶带的方式得到第二张图的结果,但是还是有洞,效果欠佳,最终通过寻找“广义的轮廓点”才解决了这个问题,使得两个曲面完美缝合,成为封闭的人体模型。

#取轮廓点相关代码
ef getlunkuo(n):imag = cv2.imread(str(n) + '.png')resolution = imag.shapegray = cv2.cvtColor(imag, cv2.COLOR_BGR2GRAY)  # 转化成单通道灰度值smooth_image(gray, 6)gray = gray.Tsmooth_image(gray, 6)bfs_smooth(gray.shape[0], gray.shape[1], gray, 5, 12)flag = []# 逐个像素点寻找for u in range(resolution[1]):for v in range(resolution[0]):if gray[u, v] != 0:if(u-1>0 and v-1>0 and u+1<resolution[1] and v+1<resolution[0]):if(gray[u-1, v+1]==0 or gray[u-1, v]==0 or gray[u-1, v-1]==0 or gray[u, v-1]==0 or gray[u+1, v-1]==0 or gray[u+1, v]==0 or gray[u+1, v+1]==0 or gray[u, v+1]==0):flag.append([u, v])return flag


如图,通过Maya以及win10自带的3d工具进行纹理贴图,并使用Mixamo网站的在线功能(这个网站的确很良心,当初游戏设计课的时候就十分好用),手动添加了相应的姿势,进行粗略的运动尝试。

如图,为在行走与奔跑两种情况下的演示gif,(图中的白点其实是我在使用Maya过程中失误掰出来的。。。),至此项目重心转移,当作入门练手。

更多推荐

照片唤醒-photowakeup

本文发布于:2023-07-28 17:00:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1256782.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:照片   photowakeup

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!