360 度视频转定向影像 (Indoors)

摘要

将 360 度影像从 360 度视频提取到定向影像数据集中。 该工具的输出可集成至 ArcGIS Pro 中的楼层感知型地图和场景。

使用情况

  • 此工具支持由 360 度相机拍摄的 360 度 MP4 视频。 视频必须采用等距制图表达。

  • 目标定向影像参数值需为已启用 Z 值的定向影像图层。

    注:

    可使用创建定向影像数据集工具生成定向影像数据集。

  • 目标定向影像图层可以来自本地定向影像数据集或托管要素服务。 将照片导入托管要素服务时,要素服务必须支持要素附件

  • 使用控制点 1控制点 2 参数对输出要素进行地理配准。 按以下方式设置参数值:

    • 视频时间 - 指定视频播放时间戳(格式为 hh:mm:ss.s)以确定相机位置。

      使用距离视频开始或结束至少 5 秒的时间戳,且控制点之间的时间间隔至少为 5 秒。

    • 相机位置 - 在地图上放置一个点,反映相机在指定时间戳所处的位置。

      相机位置必须至少相隔 1 米。

    提示:

    使用彼此距离尽可能远的控制点,以提高地理配准的精度。

  • 使用以下视频提取参数指定沿视频路径自动提取图像的方式:

    • 提取间隔 - 输出图像之间的时间间隔。 默认值为 2 秒,相当于以平均步速移动约 4-6 英尺(1.2-1.8 米)。
    • 开始时间戳 - 从视频中开始提取图像的时间戳(格式为 hh:mm:ss.s)。 例如,使用值 00:15:10 表示在视频开始后 15 分 10 秒处开始提取。 默认为视频的开始处。
    • 结束时间戳 - 停止从视频中提取图像的时间戳(格式为 hh:mm:ss.s)。 例如,使用值 01:10:00 表示在视频开始后 1 小时 10 分处结束提取。 默认为视频的结尾。
    注:

    实际的开始时间、结束时间和提取图像之间的时间间隔可能因输入视频质量而异。

  • 此工具使用视觉同步定位与地图构建 (VSLAM) 技术来确定提取图像的相对位置和方向。 VSLAM 的精度取决于运动模糊、环境中可跟踪位置(边缘、角落、纹理)的数量以及相机移动速度等因素。

  • 使用输入楼层要素参数来确定如何准备图像以供室内地图使用。 当为此参数指定值时,工具将按如下方式配置输出要素:

    • 如果目标定向影像图层已支持楼层感知,工具会将楼层 ID 值存储在此图层配置的楼层字段中。 否则,工具会将楼层 ID 值存储在此图层的 LEVEL_ID 字段中。 如果需要,工具将添加 LEVEL_ID
    • 如果未指定控制点,输出要素将移动并缩放至所选楼层要素的范围和高程。 所有输出要素均被分配所选楼层要素的楼层 ID 值。
    • 指定控制点后,输出要素将根据控制点进行地理配准(移动、旋转和缩放)。 位于所选楼层要素范围内的地理配准要素将被分配此楼层的 ID 和高程;位于楼层外的要素将被分配 Null ID 和高程值 0。

参数

标注说明数据类型
输入 360 度视频

包含可从中提取 360 度图像的 360° 视频的输入 .mp4 文件。

File
目标定向影像

将添加要素的目标定向影像图层。

Oriented Imagery Layer
目标图像文件夹

将写入图像文件的现有文件夹。

Folder
控制点 1
(可选)

将用于对输出要素进行地理配准的第一个控制点。

  • 视频时间 - 视频时间戳(格式为 hh:mm:ss.s)。
  • 相机位置 - 表示指定视频时间戳时相机在地图中位置的点要素。

Value Table
控制点 2
(可选)

将用于对输出要素进行地理配准的第二个控制点。

  • 视频时间 - 视频时间戳(格式为 hh:mm:ss.s)。
  • 相机位置 - 表示指定视频时间戳时相机在地图中位置的点要素。

Value Table
输入楼层要素
(可选)

来自 Indoors 模型的输入楼层图层,包含所选楼层要素。 工具将所选楼层要素的 LEVEL_ID 值赋给输出定向影像要素的楼层 ID 字段。

Feature Layer
提取时间间隔
(可选)

从输入视频中提取图像的时间间隔。 您可以选择毫秒、秒或分钟作为时间间隔单位。 默认值为 2 秒,最小值为 0.2 秒(200 毫秒)。

Time Unit
开始时间戳
(可选)

视频中开始提取图像的起始点。 接受的输入格式为 hh:mm:ss.s。

String
结束时间戳
(可选)

视频中结束提取图像的终点。 接受的输入格式为 hh:mm:ss.s。

String

派生输出

标注说明数据类型
更新后的定向影像

更新的定向影像数据集。 导入过程中将保留现有的定向影像数据。 将为输入数据中的每个图像追加一个新的点要素,并将关联的图像作为附件添加。 将根据输入图像文件的属性设置新的点要素的属性。

Oriented Imagery Layer
更新后的图像文件夹

将写入图像文件的更新后的文件夹。

Folder

arcpy.indoors.ThreeSixtyVideoToOrientedImagery(in_360_video, target_oriented_imagery, target_image_folder, {control_point_1}, {control_point_2}, {in_levels_feature}, {extraction_interval}, {start_timestamp}, {end_timestamp})
名称说明数据类型
in_360_video

包含可从中提取 360 度图像的 360° 视频的输入 .mp4 文件。

File
target_oriented_imagery

将添加要素的目标定向影像图层。

Oriented Imagery Layer
target_image_folder

将写入图像文件的现有文件夹。

Folder
control_point_1
[control_point_1,...]
(可选)

将用于对输出要素进行地理配准的第一个控制点。

  • 视频时间 - 视频时间戳(格式为 hh:mm:ss.s)。
  • 相机位置 - 表示指定视频时间戳时相机在地图中位置的点要素。

Value Table
control_point_2
[control_point_2,...]
(可选)

将用于对输出要素进行地理配准的第二个控制点。

  • 视频时间 - 视频时间戳(格式为 hh:mm:ss.s)。
  • 相机位置 - 表示指定视频时间戳时相机在地图中位置的点要素。

Value Table
in_levels_feature
(可选)

来自 Indoors 模型的输入楼层图层,包含所选楼层要素。 工具将所选楼层要素的 LEVEL_ID 值赋给输出定向影像要素的楼层 ID 字段。

Feature Layer
extraction_interval
(可选)

从输入视频中提取图像的时间间隔。 您可以选择毫秒、秒或分钟作为时间间隔单位。 默认值为 2 秒,最小值为 0.2 秒(200 毫秒)。

Time Unit
start_timestamp
(可选)

视频中开始提取图像的起始点。 接受的输入格式为 hh:mm:ss.s。

String
end_timestamp
(可选)

视频中结束提取图像的终点。 接受的输入格式为 hh:mm:ss.s。

String

派生输出

名称说明数据类型
updated_oriented_imagery

更新的定向影像数据集。 导入过程中将保留现有的定向影像数据。 将为输入数据中的每个图像追加一个新的点要素,并将关联的图像作为附件添加。 将根据输入图像文件的属性设置新的点要素的属性。

Oriented Imagery Layer
updated_image_folder

将写入图像文件的更新后的文件夹。

Folder

代码示例

ThreeSixtyVideoToOrientedImagery 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 ThreeSixtyVideoToOrientedImagery 函数。

import arcpy

#Note: Video timestamps are strings in format hh:mm:ss.s

arcpy.indoors.ThreeSixtyVideoToOrientedImagery(r"C:\SiteFootage\Building1_Floor1.mp4", r"C:\Campus.gdb\OIDataset", r"C:\Data\ImagesFolder", 
                                               "", "", "", "", "", "")
ThreeSixtyVideoToOrientedImagery 示例 2(Python 窗口)

以下独立脚本演示了如何使用 ThreeSixtyVideoToOrientedImagery 函数。

# Import system modules
import arcpy

# Create temporary control point feature classes in memory for camera locations
sr = arcpy.SpatialReference(102100) # WGS 1984 Web Mercator (Auxiliary Sphere)
arcpy.management.CreateFeatureClass("memory", "point_1_fc", "POINT", spatial_reference=sr)
arcpy.management.CreateFeatureClass("memory", "point_2_fc", "POINT", spatial_reference=sr)

# Add camera locations to the temporary control point feature classes
with arcpy.da.InsertCursor(r"memory\point_1_fc", ["SHAPE@XY"]) as cursor:
    cursor.insertRow([arcpy.Point(-13046063.3, 4036427.6)])
with arcpy.da.InsertCursor(r"memory\point_2_fc", ["SHAPE@XY"]) as cursor:
    cursor.insertRow([arcpy.Point(-13046055.9, 4036422.1)])

# Set local variables

# Set the control point parameter values
# Note: Video timestamps are strings in format hh:mm:ss.s
control_point_1 = ["00:05:40.7", r"memory\point_1_fc"]
control_point_2 = ["00:11:25.3", r"memory\point_2_fc"]

# Specify indoor level for floor awareness
arcpy.management.MakeFeatureLayer(r"C:\IndoorsModel.gdb\Indoor\Levels", "levels_lyr", 
                                  "NAME = 'Building 1 Floor 1'")
in_levels_feature = "levels_lyr"

# Set remaining parameter variables
in_360_video = r"C:\SiteVideos\Building1_Floor1.mp4"
target_oriented_imagery = r"C:\Campus.gdb\OIDataset" 
target_image_folder = r"C:\Data\ImagesFolder"
extraction_interval = "5 Seconds"
start_timestamp = "00:05:35"
end_timestamp="00:15:00"



# Run the tool
arcpy.indoors.ThreeSixtyVideoToOrientedImagery(in_360_video, target_oriented_imagery, target_image_folder, control_point_1, control_point_2, 
in_levels_feature, extraction_interval, start_timestamp, end_timestamp) 

# Release memory
del cursor
arcpy.Delete_management(r"memory\point_1_fc")
arcpy.Delete_management(r"memory\point_2_fc")

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 否
  • Standard: 否
  • Advanced: 需要 ArcGIS Indoors Pro 或 ArcGIS Indoors Maps

相关主题