Blender格式是 NeRF 和许多后续工作标准的输入格式
Blender格式的数据集主要是指NeRF等项目中常用的相机参数和图像信息存储格式,核心文件是 transforms_train.json
(训练集),有时还有 transforms_val.json
和 transforms_test.json
。这些 JSON 文件描述了每张图片的相机位姿和整体场景的相机视场角(FOV)。
Blender格式数据的核心文件:transforms_train.json
该文件是一个JSON格式,主要包含:
camera_angle_x:相机水平视场角(单位:弧度)
frames:图片帧列表,每个元素包含图像文件路径和对应的相机变换矩阵(4x4)
示例结构
{
"camera_angle_x": 0.6911112070083618,
"frames": [
{
"file_path": "./images/00000.png",
"transform_matrix": [
[1.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 1.0]
]
},
{
"file_path": "./images/00001.png",
"transform_matrix": [
[0.9998, 0.0175, 0.0000, 0.1],
[-0.0175, 0.9998, 0.0000, 0.0],
[0.0000, 0.0000, 1.0000, 0.0],
[0.0000, 0.0000, 0.0000, 1.0]
]
}
// 更多帧...
]
}
字段说明
字段 | 说明 | 格式/单位 |
---|---|---|
camera_angle_x |
水平视场角(视角宽度) | 弧度 |
frames |
图像列表 | 数组,每个元素为一张图 |
file_path |
相对图像路径 | 字符串,相对于json文件位置 |
transform_matrix |
相机的4x4变换矩阵 | 数组,4x4,右乘坐标点完成变换 |
变换矩阵含义
该矩阵是 相机世界变换矩阵(world-to-camera) 的逆,或者可以理解为从相机坐标系到世界坐标系的变换,即描述相机在世界中的位置和朝向。
一般4x4矩阵格式:
其他文件
transforms_val.json
和transforms_test.json
:验证集和测试集格式一样,只是包含对应帧。图片文件一般放在
images/
文件夹,与 JSON 文件相对路径匹配。
总结
Blender格式的数据集用 transforms_*.json
文件,JSON里包含:
相机视场角
camera_angle_x
图像文件路径
file_path
4x4相机变换矩阵
transform_matrix
Blender格式数据集的典型文件夹目录结构一般是这样:
dataset_root/
├── transforms_train.json
├── transforms_val.json (可选)
├── transforms_test.json (可选)
└── images/
├── 00000.png
├── 00001.png
├── 00002.png
└── ... (所有训练/验证/测试图片)
说明:
dataset_root/ 是数据集根目录,存放所有数据和json文件。
transforms_train.json:训练集相机参数和图片路径描述文件。
transforms_val.json、transforms_test.json:验证集和测试集的相机参数描述文件(根据需要生成)。
images/ 文件夹存放所有对应图片,json里的
file_path
是相对这个根目录的路径,比如"./images/00000.png"
。
注意点:
file_path
字段一般写成相对路径,指向 images 文件夹下对应图片。JSON 文件和
images/
文件夹处于同一层级。图片格式可以是
.png
、.jpg
等,保持和 JSON 中路径一致即可。
如果你自己制作数据集,只需保证:
图片都放在
images
目录里。JSON 文件准确记录每张图片的相机位姿和路径。
目录结构符合上面示例即可被绝大多数NeRF代码识别。