做蛋白go分析网站,软件商店正版下载,wordpress 免费APP,个人博客页面模板对图像Size的处理, 以适应Transformer
在MVSPlat 当中使用 Center_Crop 裁剪图像#xff0c;适用于 Transformer 的32 倍数#xff0c; 其中 焦距 f 不变化#xff0c;只改变 cx,cy.MuRF 直接对图像进行 插值#xff0c;合成理想的 size. 根据 ori_size 和 inference_size…对图像Size的处理, 以适应Transformer
在MVSPlat 当中使用 Center_Crop 裁剪图像适用于 Transformer 的32 倍数 其中 焦距 f 不变化只改变 cx,cy.MuRF 直接对图像进行 插值合成理想的 size. 根据 ori_size 和 inference_size 计算出来 scale, 然后分别乘上 对应的 内参。 这个时候 内参数的 所有参数f 和 cx,cy都会改变。 ori_size var.images.shape[3:]
scale_factor_y inference_size[0] / ori_size[0]
scale_factor_x inference_size[1] / ori_size[1]tmp_imgs var.images.view(-1, 3, *ori_size)
tmp_imgs F.interpolate(tmp_imgs, sizeinference_size, modebilinear, align_cornersTrue)# update intrinsics
intrinsic var.intrinsics.clone() # [B, V, 3, 3]
intrinsic[:, :, :1] intrinsic[:, :, :1] * scale_factor_x
intrinsic[:, :, 1:2] intrinsic[:,:, 1:2] * scale_factor_y使用 Transformer 对于图像进行处理得到不同分辨率的 Feature Map
# extract multi-view image features,用列表存储
# list of [B, V, C, H, W], multi-scale, resolution from low to high
ref_feats_list self.get_img_feat(ref_images)Render
生成的 Ray 是从 downsample 之后的图像生成的 假设原图像的分辨率是(3521408), 论文中的参数 radiance_subsample_factor 4 那么会从 降采样4倍之后的图像 size (88352)生成光线。 每条光线如果采样 64 个点那么组成的 Tensor pts_3D 对应的 shape 是 # [B,HW,D,3] 将这些采样点投影到 feature_map 上面然后计算 Reference Image 之间的 feature 相似度去得到 Geometry 的 Cues.
Patch-based for High-Resolution rendering
MuRF 可以对于 高分辨率的图像在 Test 的阶段做 Rendering
sample window on the image
先生成一个小范围的 window. uv像素坐标系;
* window_grid generate_window_grid(-local_radius, local_radius,-local_radius, local_radius,local_h, local_w, devicegrid.device) 上一部生成的 grid 坐标 [-1,1] 之间转换到 uv像素坐标系; b, n, d grid.shape[:3]# grid is in [-1, 1]color_sample_grid grid.view(b, n * d, 1, 2) # [B, H*W*D, 1, 2]color_sample_grid (color_sample_grid 1) / 2 # [0, 1]color_sample_grid torch.cat((color_sample_grid[:, :, :, :1] * (
img_w - 1), color_sample_grid[:, :, :, 1:] * (img_h - 1)), dim-1) # image scalewindow 的 size 和实际采样点坐标相加 生成 最后的采样范围变换到[-1,1]之间使用 grid_sample 函数来实现最后的 query; color_sample_grid color_sample_grid \
window_grid # [B, H*W*D, (2R1)^2, 2]# normalize to [-1, 1]
c torch.Tensor([(img_w - 1) / 2., (img_h - 1) / 2.]).float().to(color_sample_grid.device)
color_sample_grid (color_sample_grid - c) / c # [-1, 1]sampled_color torch_F.grid_sample(
ref_images[:, view_idx], color_sample_grid, align_cornersTrue, modebilinear, padding_modeborder)