LIDARで収集したpts形式のデータをpcd形式に変換する方法


序文

仕事プロジェクトのニーズにより、顧客から pts 形式の大量のデータがダウンロードされたため、利用可能な .pcd ファイルを転送する必要があります。以下はその導入と解決策です。

1. .pts にはどのようなデータが含まれていますか?

LIDAR 3D 点群を保存するには多くの形式があります。その中でも、次の図に示すように、.pts は点群を保存する最速の方法で、点群を XYZ 順序で直接保存し、整数または浮動小数点として保存でき、ASCII コードまたはバイナリで保存でき、各パラメータはスペースで直接区切られます。
ここに画像の説明を挿入

2. .pcd データとは何ですか?

PCD 形式はまったく新しい点群形式です。具体的な説明については、次のアドレスを参照してください。

転載アドレス: http://www.pclcn.org/study/shownews.php?lang=cn&id=54

3. 変換手順

1. PCDデータフォーマット

.pcd ファイルは PCL ツールで開くだけでなく、VSCODE や gedit などのエディタでも開くことができます。

pts を比較すると、.pcd ファイルは .pts データ行の最初の 4 つのパラメータとヘッダー ファイルで構成されていることがわかります。

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 35067435
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 35067435
DATA ascii
0 0 0 4
-1.32 -2.761 0.084 23
2.916 -2.93 0.147 26
2.317 -0.563 0.098 21
-0.081 -7.745 0.073 24
3.239 -4.546 0.117 12
-1.094 -3.617 0.109 6
......

2. データを変換する

上記の処理を理解した上で、Python を使用して円形変換を実行してエクスポートすると、点群の数は 35067435 個になり、スクリプトの
内容は次のとおりです。

### pts_pcd
f = open("DATA.pts")
o = open('DATA_out.txt', 'w')
line = f.readline()
line = f.readline()
while line:
    w = line.split(" ", 6)
    print(w[0] + " " + w[1] + " " + w[2] + " " + w[3])
    o.write(w[0] + " " + w[1] + " " + w[2] + " " + w[3] + "\r\n")
    line = f.readline()

f.close()
o.close()

データが更新されるまで待つと、DATA_out.txt ファイルが同じディレクトリに生成されていることがわかります。

3. ヘッダーファイルをロードします

ヘッダー ファイルの内容は次のとおりです。WIDTH パラメーターと POINTS パラメーターは pts パラメーターに対応する必要があることに注意してください。

# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z intensity
SIZE 4 4 4 4
TYPE F F F F
COUNT 1 1 1 1
WIDTH 35067435
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 35067435
DATA ascii

ヘッダー ファイルを DATA_out.txt に直接コピーするか、次のコマンドを使用して head.txt から DATA.txt に直接コピーします。

sed -ne '1 r head.txt' -e '1N;P' -i DATA_out.txt 

4. PCDの表示

DATA_out.txt のサフィックスを .pcd に変更し、pcl_viewer で .pcd ファイルを開きます。
$ pcl_viewer DATA_out.pcd

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/m0_54792870/article/details/112970845