3次元点群から外れ値を除去

조회 수: 11 (최근 30일)
Yu
Yu 2021년 10월 4일
댓글: Yu 2021년 10월 6일
こんにちは。地理座標系(緯度[deg]、経度[deg]、高さ[m])のデータから、scatter3で3次元図にしたデータがあります。
以下写真のように、赤丸で囲まれた外れ値を除去したいのですが、なにか良い方法はありますでしょうか?
以下の記事を見たのですが、地理座標系には対応していないようでした。
https://jp.mathworks.com/help/vision/ref/pcdenoise.html
よろしくお願いいたします。

채택된 답변

Hernia Baby
Hernia Baby 2021년 10월 5일
편집: Hernia Baby 2021년 10월 5일
外れ値がわかるのでしたらindexを活用するのはいかがでしょうか?
figure
[X,Y,Z] = sphere(16);
x = [0.5*X(:); 0.75*X(:); X(:)];
y = [0.5*Y(:); 0.75*Y(:); Y(:)];
z = [0.5*Z(:); 0.75*Z(:); Z(:)];
scatter3(x,y,z,'k.')
hold on
ここでx,y,zが正のものだけを取り出します
そして赤色で囲みます
idx = x > 0 & y >0 & z>0;
x1 = x(idx);
y1 = y(idx);
z1 = z(idx);
scatter3(x,y,z,'r')
赤色を外れ値として扱う場合、その部分を削除します
該当部分を青で囲みます
x2 = x; y2 = y; z2 = z;
x2(idx) = [];
y2(idx) = [];
z2(idx) = [];
scatter3(x2,y2,z2,'b')
xlim([-1 1])
  댓글 수: 3
Hernia Baby
Hernia Baby 2021년 10월 5일
편집: Hernia Baby 2021년 10월 5일
決まってない場合でもクラスで分かれている時点でindexから抜き出す事が可能と思われます
こちら、やりたい事に近いと思います
X = rand(500, 3);
idx = kmeans(X, 3);
scatter3(X(:,1), X(:,2), X(:,3), 10, idx, 'filled');
hold on
X(idx==2|idx==3,:) = [];
scatter3(X(:,1), X(:,2), X(:,3), 20, 'r');
Yu
Yu 2021년 10월 6일
なるほど、このようなやり方があるのですね。
とても参考になりました!ありがとうございました。

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 データのインポートと解析에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!