Matlabでのバーチャルな写真の撮影について
1 view (last 30 days)
Show older comments
一般論としてカメラで撮影した画像やビデオ動画のシミュレーションを行えたらと思っています。
そのために最適なツールボックスを教えていただけたらと思っています。image ,vision関係のツールボックスは使っておりますがそれらの範囲でできるのかどうか。またsimulink animationなどを使いこなせれば大丈夫なのかもしれませんが、simulink 自体になれていなくて、関連するツールボックスもいろいろとありそうなので使いこなせるかどうかと思っています。
手始めにチェッッカーボードをテーブルに置いた状況を想定していろいろな角度で撮った結果を、通常の3D描画で作っていますが、グラフの軸のスケールが実際の縮尺にではなく、Figureのサイズにあわせてフィットしてしまうため、これをカメラから撮影したように対象物のスケールを変えずに描画してjpgファイルに修めたいとおもっています。よい方法があれば教えてくください。現状のプログラムの描画・保存部分を添付します。
% 初期化
figure(1)
clf
set(gcf,'Position',[400 350 1200 720])
% 床
surface('XData',Xf, 'YData',Yf, 'ZData',Zf,...
'EdgeColor','none', 'FaceColor','flat');
% 背景
surface('XData',Xg, 'YData',Yg, 'ZData',Zg-0, ...
'CData',IMG1, 'CDataMapping','direct', ...
'EdgeColor','none', 'FaceColor','texturemap')
% チェッカーボード
surface('XData',Xcb, 'YData',Ycb, 'ZData',Zcb-0, ...
'CData',cbwb, 'CDataMapping','direct', ...
'EdgeColor','none', 'FaceColor','texturemap')
% 軸の設定
axis equal
xlim([0 1000]);ylim([0 1000]);zlim([0 1000]);
xlabel('X');ylabel('Y');zlabel('Z');
grid on
ax=gca;
set(ax,'PositionConstraint','innerposition');%'outerposition');% | 'innerposition'
% カメラの設定
campos(xyzCamePosi)
% ライトの設定
h = light;
az=0;el=45;
lightangle(h,az,el)
shading interp
material default
truesize
% 画像ファイルに保存
if isdir(dir_results),
else
mkdir(dir_results);
end
fn_jpg=sprintf('Img_%d',Np+iip);
print(gcf,[dir_results fn_jpg],'-djpeg'
0 Comments
Accepted Answer
J. Alex Lee
on 30 Aug 2020
ax.DataAspectRatio = [1,1,1]
also
ax.Projection = "perspective"
and various other "camera"-related properties like: cameraviewangle, cameraposition, cameratarget, cameraupvector
More Answers (0)
See Also
Categories
Find more on Image Processing Toolbox 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!