点群を扱う処理であれば何でも上げるリポジトリです.
- k-means法
- mean-shift
- DBSCAN
- HDBSCAN
以下のように各関数を呼び出して実行します.
clustering.pyのmain文のコメントアウトを解除することによっても利用可能です.
点群データは.pcd形式です.
クラスタ別にBBoxをつける処理、クラスタをBBoxと同じサイズのメッシュに置き換える処理も実装しています.
from pcd_algorithm.clustering import Clustering
...
# k-means法を使う場合
clustered_pcds = Clustering().k_means(pcd, <クラスタ数(int)>)
# mean-shiftを使う場合
clustered_pcds = Clustering().mean_shift(pcd, <バンド幅の推定に使用する分位数(float)>, <バンド幅の推定に使用するサンプル数(int)>)
# DBSCANを使う場合
clustered_pcds = Clustering().dbscan(pcd, eps, min_points)
# HDBSCANを使う場合
clustered_pcds = Clustering().hdbscan(pcd, <クラスタを構成するための最小点数(int)>)
点群をローポリにして遊べます.
poetry run python pcd_algorithm/voxelize_pcd.py --pcd_path <点群のパス> --voxel_size <ボクセルの一辺の長さ>
入力点群(旅館) | ボクセル化した結果 |
---|---|
都市点群を擬似的な航空写真に変換します.
ダムモードでは、任意の標高まで水位を上げた場合の点群データとマップを作成することができます.
poetry run python pcd_algorithm/create_map.py --pcd_path <点群のパス> --voxel_size <画像上で1pxとする距離> --dam_mode <ダムモードを使いたい場合True> --flood_height <ダムモードで設定する水面の高さ>
入力点群 | 作成された擬似航空写真 |
---|---|
ダム化させた点群 | 作成された擬似航空写真(ダム化後) |
Mask3Dの結果を点群に反映させる処理です.
poetry run python pcd_algorithm/Mask3D_mask.py
--pcd_path <結果を反映させたい点群データ(.ply)のパス>
--Prefix <Mask3Dで得られた結果をまとめたファイルの格納場所(ディレクトリのパス)>
--result_file_name <「各オブジェクトについての検出結果を格納したファイルの名前」がまとめられたtxtファイルの名前(パスではない)>
(例)各オブジェクトについての検出結果を格納したファイルの名前」の中身
pred_mask/20231108_120945_room_0.txt 5 0.9574468731880188
pred_mask/20231108_120945_room_1.txt 16 0.9569514989852905
pred_mask/20231108_120945_room_2.txt 14 0.9293325543403625
pred_mask/20231108_120945_room_3.txt 8 0.9196611642837524
pred_mask/20231108_120945_room_4.txt 10 0.9063308835029602
大学生の部屋の点群 | Mask3D🎭適用結果 |
---|---|