点群の高さデータによ​って、グリットシート​の1マスごとに色を付​ける方法がわかりませ​ん。2000*180​0のグリッドシートと​XYZ座標のある点群​データがあります。(​色を付ける際に、一マ​スに二点以上存在する​場合一番高い点を対象​としたいです。色の配​分は適当でかまいませ​ん。)添付した画像の​グリットシートは20​0*180です。

1 view (last 30 days)
tetunari sogabe
tetunari sogabe on 16 Jan 2017
Commented: tetunari sogabe on 20 Jan 2017
clear;
load('sample.mat')
xsize=200
ysize=180
Xsize = xsize*10;
Ysize = ysize*10;
line = [1:Xsize];
code = [1:Ysize];
[X,Y] = meshgrid(line,code);
[X1,X2] = ndgrid(line,code);
figure()
[X1_ndgrid,X2_ndgrid] = ndgrid(1:Xsize,1:Ysize);
Z = zeros(Xsize,Ysize);
mesh(X1_ndgrid,X2_ndgrid,Z,'EdgeColor','black')
axis equal;
% Set the axis labeling and title
h1 = gca;
h1.XTick = [1:Xsize];
h1.YTick = [1:Ysize];
xlabel('ndgrid Output')
axis([1 200 1 180]);
hold on
pcshow(sample)
az=0
el=90
view(az,el);
end
  4 Comments
tetunari sogabe
tetunari sogabe on 18 Jan 2017
Edited: tetunari sogabe on 18 Jan 2017
返事ありがとうございます。 投稿したサンプルコードですが、1マスを10㎝と設定した。2000*1800のグリットシートを作成しただけです。このほかにxy座標をグリットシートと合わせてある点群データがあります。 このグリットシートのxy平面に点群データを入れ、残りのz座標(高さ)の値を使い、xy平面の1マスごとの色を付ける作業がしたいです。色を付ける際、1マスに二点以上存在する場合一番高い点を対象としたいです。色の配分は適当でかまいません。
Jiro Doke
Jiro Doke on 19 Jan 2017
前のコメントにもありますが、別の質問に回答があるようです。

Sign in to comment.

Accepted Answer

Tohru Kikawada
Tohru Kikawada on 20 Jan 2017
下記の点を配慮して質問をいただけるとよりよい回答が得られる可能性があります。
  • 表題は簡潔かつ困っていることを明確に記載すること (例:点群をグリッドに当てはめる方法)
  • 具体的な内容は本文に書くこと(タイトルが長すぎると概要の理解を困難にします)
  • コメントで質問された内容についてYes or Noで簡潔かつ的確に回答すること(より的確な情報を提供し回答を促進します)
今後ご質問される場合には こちら を参照の上、ご投稿をお願いいたします。
別件の回答と同じなのか、違うのかはっきりしませんが、質問内容から推測した処理を下記に示します。
for ループを使わずに簡潔に書く方法もあると思います。
%%3次元点群データの生成
xyz = randn(1000,3);
x = xyz(:,1);
y = xyz(:,2);
z = abs(xyz(:,3)); % 分かりやすくするためにZ軸は正にする
%%点群の可視化
figure;
scatter3(x,y,z);
%%DSM画像生成
Xsize = 50;
Ysize = 50;
line = linspace(min(x(:)),max(x(:)),Xsize);
code = linspace(min(y(:)),max(y(:)),Ysize);
[X,Y] = meshgrid(line,code);
Z = zeros(Xsize,Ysize);
for k = 1:numel(line)-1
for l = 1:numel(code)-1
% ある範囲に入っている点群のインデックスを取り出す
index = line(k) <= x & x < line(k+1) & ...
code(l) <= y & y < code(l+1);
if ~all(index==0)
% 点群の中でZ軸の値が一番大きいものを代入する
Z(k,l) = max(z(index));
end
end
end
figure, imagesc(line,code,Z);
colorbar;
元の点群データ:
グリッド内の高さ(Z軸)の最大値をマッピングした画像:
  1 Comment
tetunari sogabe
tetunari sogabe on 20 Jan 2017
回答、ありがとうございます。非常に参考になりました。

Sign in to comment.

More Answers (0)

Categories

Find more on Introduction to Installation and Licensing in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!