type
status
date
slug
summary
tags
category
icon
password
base.py
定义BaseDataset Class(torch.utils.data.Dataset, ABC)
值得注意的 1. ABC作为parent class建立BaseDataset
分别有@abstractmethod 和 @staticmethod
abstractmethod 相当于java 中interface
只需要pass 而后subclass中具体根据用途定义
但是ABC class更强大在于可以同时有staticmethod 是实实在在的implemented method
这里用了一个组合 使用内置indexing 会直接调用该subclass 的inner_get_item
使得每个sub class只需要重新写inner_get_item
- Static method部分
self.uids = json.load() 为dataset长度
_load_rgba_image converts Image.open()→np.array()→torch.form_numpy
rgba转换成rgb
rgba[:, :3, :, :] * rgba[:, 3:4, :, :]
rgb channel分别与 a(alpha 代表opacity透明度) channel相乘
之后
bg_color * (1 - rgba[:, 3:, :, :])
Computes the background color contribution where alpha is not fully opaque
如果本身全透明 (a channel为0) 则back_ground color 全部显现若全不透明 (a channel为1) 则back_ground color 完全看不见
background与image作concat
还有一个查找dir的_locate_datadir
cam_utils.py
An extrinsic matrix represents the pose (position and orientation) of a camera or an object in a 3D space relative to a world coordinate system. It typically combines a rotation(缩放,旋转,shear剪切,reflect轴对称…) matrix and a translation vector(平移) to transform points from the world coordinate system to the camera coordinate system
总结一下: R是(3,3) T是(3,) RT是(3,4) Extrinsic Matrix是(4,4)
后面两个decompose很简单就不贴了
normalize camera extrinsic matrices (
poses
) by applying a transformation that centers the cameras based on their distance to a pivotal point (often the center of the scene or object of interest)这里了解了另外一种一般calibration方法
Intrinsics * Extrinsics 构建calibration矩阵
将world point映射为image point 3d→2d 点
‣
‣
这里是将所有所有poses建立在canonical frame之上
camera alignment
Inverse matrix reverses linear transformation
因为有一段时间没有接触线性代数了 这里写的很慢 比较重复
可以想象从pos1 开始 相机会一直变换角度
我们相当于把每个pose除以最开始的pos(做reverse transformation)
得到转变量 之后再transform到canonical frame上
这样pos0因为 自身就是起点 转变量就是I 所以最终pose就是frame量本身
linear transformation → 看align上去的值
reverse transformation → 看mis align的值 转变量
Normalize 一下Intrinsics 内参
看错了 从上一步来的fx, fy 都是(b,)
这里单纯前面batch dim一致 在dim=-1 多加4个数
torch.cat不能broadcast 只有加减乘除可以
有点跑题了 试了试concat和repeat的机制 回到下一个function
像之前提到的构建完整Intrinsic matrix(I)
和之前function差不多 只是现在包含更规范 dim
构建完整matrix用stack更合适 如果只是一个dim上合并 concat适合
定义look_at 和 up_world(0,0,1)(default z axis up)
z_axis = camera_position - look_at
normalize(individually through layer norm)
- Author:ran2323
- URL:https://www.blueif.me//article/13e71a79-6e22-8066-b892-e7ae5b78035b
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!