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