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

カラーの点群データ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

H.O
H.O 2024년 3월 4일
申し訳ありません、イメージを修正しました。

댓글을 달려면 로그인하십시오.

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2024년 3월 4일
편집: Atsushi Ueno 2024년 3월 5일

0 개 추천

(追記)イメージの修正に伴い、回答も修正しました。
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

H.O
H.O 2024년 3월 6일
ありがとうございます.
A,Bをpcreadでよびだし,
D=setdiff(A.Location,B.Location,'row');
F=setdiff(A.Color,B.Color,'row');
G=pointCloud(D,Color=F);にて作成することができました.
Atsushi Ueno
Atsushi Ueno 2024년 3월 6일
それはたまたま上手い具合になる条件だっただけだと思います。
LocationとColorを関連付けず別々に操作すると、意図した動作とならないおそれがあります。
H.O
H.O 2024년 3월 7일
편집: H.O 2024년 3월 7일
ご指摘ありがとうございます.
LocationとColorの関連付けは,インデックスを習得して反映させるよう修正しました.
D =setdiff(A.Location,B.Location,'row');
idx = ismember(A.Location,D,'rows');
Dp=pointCloud(D,Color=A.Color(idx,:));

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 LIDAR および点群の処理에 대해 자세히 알아보기

제품

릴리스

R2021b

질문:

H.O
2024년 3월 4일

편집:

H.O
2024년 3월 7일

Community Treasure Hunt

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

Start Hunting!