pointcloudから任意の点を削除する

7 views (last 30 days)
H.O
H.O on 4 Mar 2024
Edited: H.O on 7 Mar 2024
カラーの点群データAがあるとします。
Aから特定の領域を切り出して作成した点群をBとします。
残った領域(A−B)をカラー点群として保存したいのですが、どのようにすると良いでしょうか? 
イメージは下記です。(x y z RGBで並んでいるとします)
A=pcread('test.ply');
A.Location= 1 2 3; 1 5 6; 1 8 9;
A.Color=20;30;40;
B=pcread('test2.ply');
B.location=1 2 3;
B.Color=20;
ほしい結果↓
Location=1 5 6; 1 8 9; Color=30;40;
をもつ点群データ
  1 Comment
H.O
H.O on 4 Mar 2024
申し訳ありません、イメージを修正しました。

Sign in to comment.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 4 Mar 2024
Edited: Atsushi Ueno on 5 Mar 2024
(追記)イメージの修正に伴い、回答も修正しました。
A.location = [1 2 3; 1 5 6; 1 8 9];
A.Color = [20;30;40];
B.location = [1 2 3];
B.Color = 20;
%ほしい結果↓ location=1 5 6; 1 8 9;  Color=30;40;
setdiff(struct2table(A),struct2table(B),'rows')
ans = 2×2 table
location Color ___________ _____ 1 5 6 30 1 8 9 40
  3 Comments
Atsushi Ueno
Atsushi Ueno on 6 Mar 2024
それはたまたま上手い具合になる条件だっただけだと思います。
LocationとColorを関連付けず別々に操作すると、意図した動作とならないおそれがあります。
H.O
H.O on 7 Mar 2024
Edited: H.O on 7 Mar 2024
ご指摘ありがとうございます.
LocationとColorの関連付けは,インデックスを習得して反映させるよう修正しました.
D =setdiff(A.Location,B.Location,'row');
idx = ismember(A.Location,D,'rows');
Dp=pointCloud(D,Color=A.Color(idx,:));

Sign in to comment.

More Answers (0)

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!