I used plot3. when I try to rotate the 3D image, it is too slow to rotate for each time.

11 ビュー (過去 30 日間)
Houghton
Houghton 2015 年 8 月 20 日
コメント済み: Walter Roberson 2015 年 8 月 22 日
hFig = figure('name','3D Plotting_Solve_Pyramid','numbertitle','off'); hold on;
set(gcf,'Renderer','OpenGL'); % might improve performance
hAxes = gca;
for row = 1:hightl
for col = 1:4:widthl
objcolor = double(I2(row,col,:))./255.0;
if objectpoint(row,col,3) >= -2.0 %&& (sum(objcolor)>0.3)
plot3(hAxes, objectpoint(row,col,1), objectpoint(row,col,2), objectpoint(row,col,3), '.', 'MarkerEdgeColor',objcolor);
end
end
end
%Set up the view.
xlabel(' X axis');
ylabel(' Y axis');
zlabel(' Z axis');
grid on;
cameratoolbar show;
axis vis3d;
axis equal;

回答 (1 件)

Mike Garrity
Mike Garrity 2015 年 8 月 20 日
編集済み: Mike Garrity 2015 年 8 月 20 日
I'm guessing that widthl and hightl are fairly large. This means that you're creating a large number of objects which are each drawing a single point. That's not a very efficient way to do it. You'll be much better off batching them up into a single object. A modern GPU is optimized for drawing large batches of geometry, not for drawing large numbers of tiny batches.
I discussed that in quite a bit of detail in this blog post and this blog post.
It looks like it'd actually be quite simple in this case. It's probably something like:
x = objectpoint(:,:,1);
y = objectpoint(:,:,2);
z = objectpoint(:,:,3);
r = double(x) / 255;
g = double(y) / 255;
b = double(z) / 255;
mask = (z(:)>=-2) & (r(:)+g(:)+b(:) > .3);
scatter3(hAxes,x(mask),y(mask),z(mask),[],[r(mask), g(mask), b(mask)],'.')
On my system, with a Quadro K600 on R2015a, that runs at over 10 million markers per second. You could probably do better with a bit of tweaking, but that's about 120 frames per second for this image:
  5 件のコメント
Houghton
Houghton 2015 年 8 月 22 日
From scatter3(hAxes,x(mask),y(mask),z(mask),[], ... [r(mask), g(mask), b(mask)],'.')
What does [] mean in this command?
Walter Roberson
Walter Roberson 2015 年 8 月 22 日
"If S is empty, then the default size of 36 points squared is used."

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeGet Started with Image Processing Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by