web-dev-qa-db-ja.com

2次元と3次元の両方のMATLABで画像(.jpg)をプロットするにはどうすればよいですか?

2D散布図があり、Originで画像(カラフルな正方形ではなく実際の画像)を表示したいと思います。これを行う方法はありますか?

また、Originに画像を表示したい3D球もプロットします。

16
dewalla

2次元プロットの場合...

関数 [〜#〜] image [〜#〜] は探しているものです。次に例を示します。

img = imread('peppers.png');             %# Load a sample image
scatter(Rand(1,20)-0.5,Rand(1,20)-0.5);  %# Plot some random data
hold on;                                 %# Add to the plot
image([-0.1 0.1],[0.1 -0.1],img);        %# Plot the image

alt text


3次元プロットの場合...

[〜#〜] image [〜#〜] 関数は、軸が真上から(つまり、正のz軸に沿って)表示されない限り画像が表示されないため、適切ではなくなりました。 。この場合、 [〜#〜] surf [〜#〜] 関数を使用して3Dでサーフェスを作成し、その上に画像をテクスチャマッピングする必要があります。次に例を示します。

[xSphere,ySphere,zSphere] = sphere(16);          %# Points on a sphere
scatter3(xSphere(:),ySphere(:),zSphere(:),'.');  %# Plot the points
axis equal;   %# Make the axes scales match
hold on;      %# Add to the plot
xlabel('x');
ylabel('y');
zlabel('z');
img = imread('peppers.png');     %# Load a sample image
xImage = [-0.5 0.5; -0.5 0.5];   %# The x data for the image corners
yImage = [0 0; 0 0];             %# The y data for the image corners
zImage = [0.5 0.5; -0.5 -0.5];   %# The z data for the image corners
surf(xImage,yImage,zImage,...    %# Plot the surface
     'CData',img,...
     'FaceColor','texturemap');

alt text

この面は空間に固定されているため、軸を回転しても、画像が常に直接カメラに向いているとは限りません。テクスチャマップされたサーフェスを自動的に回転させて、カメラの視線に対して常に垂直になるようにしたい場合は、はるかに複雑なプロセスです。

34
gnovice