

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 建立點雲序列輸入資訊清單
<a name="sms-point-cloud-multi-frame-input-data"></a>

資訊清單是 UTF-8 編碼檔案，其中每一行都是完整且有效的 JSON 物件。每一行都由標準分行符號 (\$1n 或 \$1r\$1n) 分隔。由於每一行都必須為有效的 json 物件，您不能有未逸出的分行符號。在點雲序列輸入資訊清單檔案中，資訊清單的每一行各包含一系列的點雲影格。序列中每個影格的點雲資料可以儲存為二進位或 ASCII 格式。如需詳細資訊，請參閱[接受的原始 3D 資料格式](sms-point-cloud-raw-data-types.md)。這是 3D 點雲物件追蹤所需的資訊清單檔案格式。或者，您也可以為每個點雲影格提供點屬性和相機感應器融合資料。建立序列輸入資訊清單檔案時，您必須以[世界座標系統](sms-point-cloud-sensor-fusion-details.md#sms-point-cloud-world-coordinate-system)提供 LiDAR 和攝影機感應器融合資料。

當資訊清單的每一行都是序列檔案時，以下範例示範輸入資訊清單檔案所採用的語法。輸入資訊清單檔案中的每一行都必須為 [JSON 行](http://jsonlines.org/)格式。

```
{"source-ref": "s3://amzn-s3-demo-bucket/example-folder/seq1.json"}
{"source-ref": "s3://amzn-s3-demo-bucket/example-folder/seq2.json"}
```

每一系列點雲影格的資料必須儲存在 JSON 資料物件中。以下是用於序列檔案的格式範例。每個影格的相關資訊都以 JSON 物件的形式納入，並列在 `frames` 清單中。這是具備兩個點雲影格檔案 (`frame300.bin` 和 `frame303.bin`) 的序列檔案範例。*...* 用於表示應該包含其他影格的資訊。為序列中的每個影格新增一個 JSON 物件。

下列程式碼區塊包含單一序列檔案的 JSON 物件。為了便於閱讀，JSON 物件已經過擴展。

```
{
  "seq-no": 1,
  "prefix": "s3://amzn-s3-demo-bucket/example_lidar_sequence_dataset/seq1/",
  "number-of-frames": 100,
  "frames":[
    {
        "frame-no": 300, 
        "unix-timestamp": 1566861644.759115, 
        "frame": "example_lidar_frames/frame300.bin", 
        "format": "binary/xyzi", 
        "ego-vehicle-pose":{
            "position": {
                "x": -2.7161461413869947,
                "y": 116.25822288149078,
                "z": 1.8348751887989483
            },
            "heading": {
                "qx": -0.02111296123795955,
                "qy": -0.006495469416730261,
                "qz": -0.008024565904865688,
                "qw": 0.9997181192298087
            }
        }, 
        "images": [
        {
            "image-path": "example_images/frame300.bin_camera0.jpg",
            "unix-timestamp": 1566861644.759115,
            "fx": 847.7962624528487,
            "fy": 850.0340893791985,
            "cx": 576.2129134707038,
            "cy": 317.2423573573745,
            "k1": 0,
            "k2": 0,
            "k3": 0,
            "k4": 0,
            "p1": 0,
            "p2": 0,
            "skew": 0,
            "position": {
                "x": -2.2722515189268138,
                "y": 116.86003310568965,
                "z": 1.454614668542299
            },
            "heading": {
                "qx": 0.7594754093069037,
                "qy": 0.02181790885672969,
                "qz": -0.02461725233103356,
                "qw": -0.6496916273040025
            },
            "camera-model": "pinhole"
        }]
    },
    {
        "frame-no": 303, 
        "unix-timestamp": 1566861644.759115, 
        "frame": "example_lidar_frames/frame303.bin", 
        "format": "text/xyzi", 
        "ego-vehicle-pose":{...}, 
        "images":[{...}]
    },
     ...
  ]
}
```

下表提供序列檔案最上層參數的相關詳細資訊。如需序列檔案中個別影格所需參數的詳細資訊，請參閱[個別點雲影格的參數](#sms-point-cloud-multi-frame-input-single-frame)。


****  

|  參數  |  必要  |  接受的值  |  Description  | 
| --- | --- | --- | --- | 
|  `seq-no`  |  是  |  Integer  |  序列的順序號碼。  | 
|  `prefix`  |  是  |  String **接受的值**： `s3://<bucket-name>/<prefix>/`  |  序列檔案所在的 Amazon S3 位置。 字首必須以正斜線結尾：`/`。  | 
|  `number-of-frames`  |  是  |  Integer  |  序列檔案包含的影格總數。此數字必須符合下一列的 `frames` 參數中列出的影格總數。  | 
|  `frames`  |  是  |  JSON 物件清單  |  影格資料的清單。清單的長度必須等於 `number-of-frames`。在工作者使用者介面中，序列中的影格與此陣列中的影格順序相同。 關於每個影格的格式，如需詳細資訊，請參閱[個別點雲影格的參數](#sms-point-cloud-multi-frame-input-single-frame)。  | 

## 個別點雲影格的參數
<a name="sms-point-cloud-multi-frame-input-single-frame"></a>

下表顯示您可以包含在輸入資訊清單檔案中的參數。


****  

|  參數  |  必要  |  接受的值  |  Description  | 
| --- | --- | --- | --- | 
|  `frame-no`  |  否  |  Integer  |  影格號碼。這是由客戶指定的選用識別符，以識別序列中的影格。Ground Truth 未使用。  | 
|  `unix-timestamp`  |  是  |  Number  |  unix 時間戳記是自 1970 年 1 月 1 日到感應器收集資料的 UTC 時間為止的秒數。 每個影格的時間戳記必須不同，且因用於線性插補，時間戳記必須依照順序。理想情況下，這應該是收集資料時的真實時間戳記。如果無法使用，您必須使用增量時間戳記序列，其中序列檔案的第一個影格對應至序列的第一個時間戳記。  | 
|  `frame`  |  是  |  String **格式範例** `<folder-name>/<sequence-file.json>`  |  序列檔案在 Amazon S3 中的相對位置。此相對路徑會附加至您在 `prefix` 中指定的路徑。  | 
|  `format`  |  否  |  String **接受的字串值**：`"binary/xyz"`、`"binary/xyzi"`、`"binary/xyzrgb"`、`"binary/xyzirgb"`、`"text/xyz"`、`"text/xyzi"`、`"text/xyzrgb"`、`"text/xyzirgb"` **預設值**： 當 `source-ref` 中識別的檔案為 .bin 副檔名時：`binary/xyzi` 當 `source-ref` 中識別的檔案為 .txt 副檔名時：`text/xyzi`  |  使用此參數來指定點雲資料的格式。如需詳細資訊，請參閱[接受的原始 3D 資料格式](sms-point-cloud-raw-data-types.md)。  | 
|  `ego-vehicle-pose`  |  否  |  JSON 物件  |  裝置的姿態，此裝置用於收集點雲資料。如需此參數的詳細資訊，請參閱[在輸入資訊清單中包含車輛姿態資訊](#sms-point-cloud-multi-frame-ego-vehicle-input)。  | 
|  `prefix`  |  否  |  String **接受的字串值格式**： `s3://<bucket-name>/<folder-name>/`  |  此影格的中繼資料 (例如攝影機影像) 儲存在 Amazon S3 中的位置。 字首必須以正斜線結尾：`/`。  | 
|  `images`  |  否  |  清單  |  參數清單，描述用於感應器融合的彩色相機影像。此清單最多可以包含 8 個影像。如需每個影像所需參數的詳細資訊，請參閱[在輸入資訊清單中包含相機資料](#sms-point-cloud-multi-frame-image-input)。  | 

## 在輸入資訊清單中包含車輛姿態資訊
<a name="sms-point-cloud-multi-frame-ego-vehicle-input"></a>

使用自動駕駛車輛位置，提供用於擷取點雲資料的車輛姿態資訊。Ground Truth 使用此資訊來運算 LiDAR 外部矩陣。

Ground Truth 使用外部矩陣在 3D 場景和 2D 影像之間投影標籤。如需詳細資訊，請參閱[感應器融合](sms-point-cloud-sensor-fusion-details.md#sms-point-cloud-sensor-fusion)。

關於您提供自動駕駛車輛資訊時所需的 `position` 和方向 (`heading`) 參數，下表提供詳細資訊。


****  

|  參數  |  必要  |  接受的值  |  Description  | 
| --- | --- | --- | --- | 
|  `position`  |  是  |  JSON 物件 **必要參數**： `x`、`y` 和 `z`。輸入這些參數的數字。  |  自動駕駛車輛在世界座標系統中的平移向量。  | 
|  `heading`  |  是  |  JSON 物件 **必要參數**： `qx`、`qy`、`qz` 和 `qw`。輸入這些參數的數字。  |  安裝在車輛上感測周遭環境的裝置或感應器的參考影格方向，在座標系統中以[四元數](https://en.wikipedia.org/wiki/Quaternion) (`qx`、`qy`、`qz`、`qw`) 測量。  | 

## 在輸入資訊清單中包含相機資料
<a name="sms-point-cloud-multi-frame-image-input"></a>

如果您想要在影格中包含彩色相機資料，請使用下列參數來提供每個影像的相關資訊。當 `images` 參數包含在輸入資訊清單檔案中時，將套用下表中的**必填**欄位。輸入資訊清單檔案中不需要包含影像。

如果包含相機影像，則必須包含用於拍攝影像的相機 `position` 和方向 (`heading`) 的相關資訊。

如果影像失真，Ground Truth 可以使用您在輸入資訊清單檔案中提供的影像相關資訊來矯正影像，包括失真係數 (`k1`、`k2`、`k3`、`k4`、`p1`、`p1`)、攝影機型號、焦距 (`fx`、`fy`) 和主點 (`cx`、`cy)`)。若要進一步了解這些係數和矯正影像，請參閱[使用 OpenCV 校準相機](https://docs.opencv.org/2.4.13.7/doc/tutorials/calib3d/camera_calibration/camera_calibration.html)。如果未包含失真係數，則 Ground Truth 不會矯正影像。


****  

|  參數  |  必要  |  接受的值  |  Description  | 
| --- | --- | --- | --- | 
|  `image-path`  |  是  |  String **格式範例**： `<folder-name>/<imagefile.png>`  |  影像檔案在 Amazon S3 中的相對位置。此相對路徑會附加至您在 `prefix` 中指定的路徑。  | 
|  `unix-timestamp`  |  是  |  Number  |  影像的時間戳記。  | 
|  `camera-model`  |  否  |  字串： **接受的值**： `"pinhole"`, `"fisheye"` **預設值**： `"pinhole"`  |  用於拍攝影像的相機型號。此資訊用於矯正相機影像。  | 
|  `fx, fy`  |  是  |  數字  |  相機在 x (`fx`) 和 y (`fy`) 方向的焦距。  | 
|  `cx, cy`  |  是  | 數字 |  主點的 x (`cx`) 和 y (`cy`) 座標。  | 
|  `k1, k2, k3, k4`  |  否  |  Number  |  徑向失真係數。支援**魚眼**和**針孔**相機型號。  | 
|  `p1, p2`  |  否  |  Number  |  正切失真係數。支援**針孔**相機型號。  | 
|  `skew`  |  否  |  Number  |  用於測量影像中任何已知扭曲的參數。  | 
|  `position`  |  是  |  JSON 物件 **必要參數**： `x`、`y` 和 `z`。輸入這些參數的數字。  |  安裝在車輛上拍攝影像的相機的參考影格位置或原點。  | 
|  `heading`  |  是  |  JSON 物件 **必要參數**： `qx`、`qy`、`qz` 和 `qw`。輸入這些參數的數字。  |  安裝在車輛上拍攝影像的相機的參考影格方向，以[四元數](https://en.wikipedia.org/wiki/Quaternion) (`qx`、`qy`、`qz`、`qw`) 測量。  | 

## 序列檔案和點雲影格限制
<a name="sms-point-cloud-multi-frame-limits"></a>

輸入資訊清單檔案中最多可包含 100,000 個點雲序列。每個序列檔案中最多可包含 500 個點雲影格。

請記住，3D 點雲標籤工作的預處理時間比其他 Ground Truth 任務類型更久。如需詳細資訊，請參閱[工作預處理時間](sms-point-cloud-general-information.md#sms-point-cloud-job-creation-time)。