我一直在尝试理解NeRF。我读完了这篇论文(Tancik),还看了一些视频。我一直在看代码的某些部分。但是,我不能完全理解get_rays函数在代码方面的作用。有没有人可以逐行浏览一下get_rays函数中的每一行都应该做些什么?
def get_rays(H,W , focal, c2w): #c2w is pose
i, j = tf.meshgrid(tf.range(W, dtype=tf.float32), tf.range(H, dtype=tf.float32), indexing='xy')
dirs = tf.stack([(i-W*.5)/focal, -(j-H*.5)/focal, -tf.ones_like(i)], -1)
rays_d = tf.reduce_sum(dirs[..., np.newaxis, :] * c2w[:3,:3], -1)
rays_o = tf.broadcast_to(c2w[:3,-1], tf.shape(rays_d))
return rays_o, rays_d发布于 2021-10-15 14:06:40
它创建了两个列表,rays_o表示光线起源的点(相机中心),rays_d表示通过相机每个像素中心投射的每条光线的方向向量。在这种情况下,rays_o中的所有值都是相同的,因为该函数从单个摄影机获得光线。
https://stackoverflow.com/questions/68118003
复制相似问题