本文介绍多视角三维重建ReconstructThreeDMultiView的语法及示例。

功能描述

多视角三维重建能力可以基于多张拍摄同一场景的彩色图像,以及每张图像对应的摄像机机位,重建出主体场景的三维模型,输出三维点云。

说明 阿里云视觉智能开放平台视觉AI能力API接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。

应用场景

  • 快速3D建模:利用围绕物体连续角度拍摄的照片,即可快速形成目标物体的三维点云。
  • VR店铺:利用围绕商品连续角度拍摄的照片,形成商品的三维点云,通过远程VR即可身临其境的访问店铺。
  • VR展厅:使用多目立体视觉三维重建算法,对VR展厅建立三维模型,通过远程VR参观了解展会展厅内容。

特色优势

  • 简便快速建立三维模型:传统3D建模需要用户手工对客观物体建模,而多视角三维重建通过一组按要求拍摄的照片,即可重建三维模型,极大减低了工作量。
  • 对实物建模的准确率高。

接入指引

1. 注册阿里云账号:打开阿里云官网,在阿里云官网右上角,单击立即注册,按照操作提示完成账号注册。

2. 开通能力:请确保您已开通3D视觉服务,若未开通服务请立即开通

3. 创建AccessKey:请确保您已创建AccessKey,如果您使用的是子账号AccessKey,您需要给子账号赋予AliyunVIAPIFullAccess权限,具体操作,请参见RAM授权

4. 在线调试(可选):您可以通过OpenAPI Explorer在线调试能力,查看完整的调用示例代码及SDK依赖信息,也可以下载完整的工程。

5. 开发接入:能力支持SDK方式调用,您可以选择合适的开发语言进行接入,具体操作,请参见SDK总览

输入限制

  • 压缩包格式: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:需要准备相机参数。
  • 2:不需要准备相机参数。当前系统还不支持该功能,为预留功能。

对于模式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参考

阿里云视觉AI能力推荐使用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小时后会被系统自动清理删除。