本文介绍3D视觉(threedvision)类目下的多视角三维重建ReconstructThreeDMultiView的语法及示例。
服务说明
3D视觉服务将于2023年2月24日起停止更新,后续不再支持新用户开通接入服务。2023年2月24日之后,会继续支持已开通3D视觉服务的老用户使用,老用户如果对3D视觉服务使用有疑问,可通过搜索钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。
功能描述
多视角三维重建能力可以基于多张拍摄同一场景的彩色图像,以及每张图像对应的摄像机机位,重建出主体场景的三维模型,输出三维点云。
应用场景
- 快速3D建模:利用围绕物体连续角度拍摄的照片,即可快速形成目标物体的三维点云。
- VR店铺:利用围绕商品连续角度拍摄的照片,形成商品的三维点云,通过远程VR即可身临其境的访问店铺。
- VR展厅:使用多目立体视觉三维重建算法,对VR展厅建立三维模型,通过远程VR参观了解展会展厅内容。
特色优势
- 简便快速建立三维模型:传统3D建模需要用户手工对客观物体建模,而多视角三维重建通过一组按要求拍摄的照片,即可重建三维模型,极大减低了工作量。
- 对实物建模的准确率高。
输入限制
- 压缩包格式:ZIP。
- 图像格式:JPEG、JPG、PNG、BMP。
- 图像分辨率:建议大于64×64像素,小于1024×1024像素。如果输入图像分辨率不满足上述条件系统会按长边比进行缩放。
- 图像大小:不超过5 MB。
- 图像数量:压缩包中至少包含5张图像。
- URL地址中不能包含中文字符。
调用步骤
该能力为异步能力,需分两步进行调用。
第一步调用ReconstructThreeDMultiView接口提交任务,请求成功后,得到一个任务ID。
第二步调用GetAsyncJobResult接口查询结果,根据任务ID查询任务执行状态和结果。如果任务还在处理中,可稍等一段时间后再进行查询。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | ReconstructThreeDMultiView | 系统规定参数。取值:ReconstructThreeDMultiView。 |
ZipFileUrl | String | 是 | https://viapi-test.oss-cn-shanghai.aliyuncs.com/test-team/xxxx/tiyan/mvs_input.zip | 压缩包URL地址。推荐使用上海地域的OSS链接,对于文件在本地或者非上海地域OSS链接的情况,请参见文件URL处理。 |
Mode | String | 是 | 1 | 解析模式。
|
对于模式1,需要准备相机参数。输入的压缩包内需要包含images文件夹和sparse文件夹。images文件夹需要包含所有图像,sparse文件夹需要包含cameras.bin
, images.bin
, points3D.bin
三个文件。
cameras.bin
包含所有重建相机的内参。每个相机类型按照如下格式指定:
CAMERA_ID,MODEL,WIDTH,HEIGHT,PARAMS[]
常用的相机模型(MODEL)有:SIMPLE_PINHOLE和PINHOLESIMPLE_RADIAL。文件内容参考举例如下:
# Camera list with one line of data per camera:
# CAMERA_ID, MODEL, WIDTH, HEIGHT, PARAMS[]
# Number of cameras: 3
1 SIMPLE_PINHOLE 3072 2304 2559.81 1536 1152
2 PINHOLE 3072 2304 2560.56 2560.56 1536 1152
3 SIMPLE_RADIAL 3072 2304 2559.69 1536 1152 -0.0218531
images.bin
包含每张图像的姿态和2D关键点。每张图像的姿态和2D关键点按照如下格式指定:
IMAGE_ID, QW, QX, QY, QZ, TX, TY, TZ, CAMERA_ID, NAME
POINTS2D[] as (X, Y, POINT3D_ID)
其中QW,QX,QY,QZ是四元素,表示相机的旋转;TX,TY,TZ是相机的平移参数;POINT3D_ID为2D关键点所对应的3D点。文件内容参考举例如下:
# Image list with two lines of data per image:
# IMAGE_ID, QW, QX, QY, QZ, TX, TY, TZ, CAMERA_ID, NAME
# POINTS2D[] as (X, Y, POINT3D_ID)
# Number of images: 2, mean observations per image: 2
1 0.851773 0.0165051 0.503764 -0.142941 -0.737434 1.02973 3.74354 1 P1180141.JPG
2362.39 248.498 58396 1784.7 268.254 59027 1784.7 268.254 -1
2 0.851773 0.0165051 0.503764 -0.142941 -0.737434 1.02973 3.74354 1 P1180142.JPG
1190.83 663.957 23056 1258.77 640.354 59070
-
points3D.bin
包含每张图像稀疏3D点的信息。每张图像稀疏3D点的信息按照如下格式指定:POINT3D_ID, X, Y, Z, R, G, B, ERROR, TRACK[] as (IMAGE_ID, POINT2D_IDX)
其中TRACK为3D点所关联的图像中2D关键点,一个3D点会被多个图像2D点关联。文件内容参考举例如下:
# 3D point list with one line of data per point:
# POINT3D_ID, X, Y, Z, R, G, B, ERROR, TRACK[] as (IMAGE_ID, POINT2D_IDX)
# Number of points: 3, mean track length: 3.3334
63390 1.67241 0.292931 0.609726 115 121 122 1.33927 16 6542 15 7345 6 6714 14 7227
63376 2.01848 0.108877 -0.0260841 102 209 250 1.73449 16 6519 15 7322 14 7212 8 3991
63371 1.71102 0.28566 0.53475 245 251 249 0.612829 118 4140 117 4473
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | E335106F-9F96-491D-AEB3-1610F8545968 | 请求ID。 |
Data | Object | 返回的结果数据内容。 该数据需要在异步任务执行成功后,通过调用GetAsyncJobResult接口,对其Result字段进行JSON反序列化之后得到。 |
|
PointCloudURL | String | http://virutalbuy-public.oss-cn-hangzhou.aliyuncs.com/MultiviewStereo/83e2fcec-02e1-4522-8680-92f532956e2c/cas_input.ply | 返回重建好的点云文件。 说明 .ply文件可以用MeshLab工具打开。 |
Message | String | 该调用为异步调用,任务已提交成功,请以requestId的值作为jobId参数调用同类目下GetAsyncJobResult接口查询任务执行状态和结果。 | 提交异步任务后的提示信息。 |
查询结果
该接口为异步接口,当前并未返回真实的请求结果,您需要通过返回的RequestId调用GetAsyncJobResult接口来获取该接口的真实请求结果。详情请参见GetAsyncJobResult。
SDK参考
阿里云视觉AI3D视觉类目下的多视角三维重建能力推荐使用SDK调用,支持多种编程语言,调用时请选择AI类目为3D视觉(threedvision)的SDK包,文件参数通过SDK调用可支持本地文件及任意URL,具体可参见SDK总览。
示例代码
该能力常用语言查询异步任务结果的示例代码,请参见查询异步任务结果示例代码。
示例
请求示例
http(s)://threedvision.cn-shanghai.aliyuncs.com/?Action=ReconstructThreeDMultiView //更多关于访问域名(Endpoint)信息,请参见:https://help.aliyun.com/document_detail/143103.html
&ZipFileUrl=https://viapi-test.oss-cn-shanghai.aliyuncs.com/test-team/xxxx/tiyan/mvs_input.zip
&Mode=1
&公共请求参数
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<ReconstructThreeDMultiViewResponse>
<RequestId>E335106F-9F96-491D-AEB3-1610F8545968</RequestId>
<Message>该调用为异步调用,任务已提交成功,请以requestId的值作为jobId参数调用同类目下GetAsyncJobResult接口查询任务执行状态和结果。</Message>
</ReconstructThreeDMultiViewResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"RequestId" : "E335106F-9F96-491D-AEB3-1610F8545968",
"Message" : "该调用为异步调用,任务已提交成功,请以requestId的值作为jobId参数调用同类目下GetAsyncJobResult接口查询任务执行状态和结果。"
}
返回示例补充说明
//查询结果:请求示例
http(s)://threedvision.cn-shanghai.aliyuncs.com/?Action=GetAsyncJobResult
&JobId=E75FE679-0303-4DD1-8252-1143B4FA8A27
&<公共请求参数>
//查询结果:返回示例
{
"RequestId" : "43A0AEB6-45F4-4138-8E89-E1A5D63200E3",
"Data" : {
"Status" : "PROCESS_SUCCESS",
"JobId" : "186AC396-0EEC-46F1-AAA1-BF3585227427",
"Result" : "{\"PointCloudURL\":\"http://virutalbuy-public.oss-cn-hangzhou.aliyuncs.com/MultiviewStereo/83e2fcec-02e1-4522-8680-92f532956e2c/cas_input.ply\"}"
}
}
//Result反序列化
{
"PointCloudURL" : "http://virutalbuy-public.oss-cn-hangzhou.aliyuncs.com/MultiviewStereo/83e2fcec-02e1-4522-8680-92f532956e2c/cas_input.ply"
}
错误码
关于多视角三维重建的错误码,详情请参见常见错误码。
安全声明
- 请确保上传的图片或文件来源符合相应的法律法规。
- 通过体验调试上传的临时文件有效期为1小时,在24小时后会被系统自动清理删除。