微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Shape通过积分从法线贴图计算深度贴图

如何解决使用Shape通过积分从法线贴图计算深度贴图

我正在尝试计算给定法线贴图的深度图。我进行了一些研究,发现可以使用Forsyth&Ponce的形状通过积分方法来完成。我尝试了一个实现,但是它不起作用,它只会返回白色图像。我不确定是否将scipy积分构造错误,或者是否想念它背后的概念。我遵循了第33-37页的this pdf。帮助将不胜感激。 这是我现在拥有的代码

def fx(s,y,normals):
    s = int(s)
    return normals[s,0]/normals[s,2]

def fy(t,x,normals):
    t=int(t)
    return normals[x,t,1]/normals[x,2]


n_img = np.clip(np.asarray(Image.open("normal.png"),dtype=float) / 255,1)
d_img = np.zeros((n_img.shape[0],n_img.shape[1]))
h,w,d = n_img.shape

for i in range(h-1):
    for j in range(w-1):
        abc = n_img[i,j]
        #this is to reduce the number of calculations done for each integral summation
        x = 0 if i < 35 else (i-34)
        y = 0 if j < 35 else (j - 34)
        #print(i,j,y)
        inte = np.asarray(quad(fx,i,args=(j,n_img))) + np.asarray(quad(fy,args=(i,n_img)))
        #print(np.array([inte[0],inte[1]],dtype=float))
        d_img[i][j] = inte[0]

cv2.imshow("tmp",d_img)
cv2.waitKey()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。