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

조회 수: 10 (최근 30일)
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 CenterFile Exchange에서 Get 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