web-dev-qa-db-fra.com

Comment puis-je tracer une image (.jpg) à Matlab en 2-D et 3D?

J'ai une parcelle de dispersion 2-D et à l'origine, je veux afficher une image (pas une carré colorée, mais une image réelle). Y a-t-il un moyen de faire ça?

Je vais également tracer une sphère de 3-D dans laquelle j'aimerais que une image soit affichée à l'origine.

16
dewalla

Pour les parcelles 2-D ...

La fonction [~ # ~] image [~ # ~ ~] Ce que vous cherchez. Voici un exemple:

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


Pour les parcelles 3D ...

L'image [~ # ~] [~ # ~ ~] La fonction n'est plus appropriée, car l'image ne sera pas affichée à moins que l'axe ne soit visualisé directement ci-dessus (c'est-à-dire le long de l'axe z positif) . Dans ce cas, vous devrez créer une surface en 3-D à l'aide de [~ # ~ # ~] [~ # ~ ~] Fonction et texture Carte de l'image sur elle. Voici un exemple:

[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

Notez que cette surface est fixée dans l'espace, l'image ne sera donc pas toujours directement face à la caméra lorsque vous faites pivoter les axes. Si vous souhaitez que la surface mappée de texture pivote automatiquement de manière à ce qu'elle soit toujours perpendiculaire à la ligne de vue de la caméra, c'est un processus beaucoup plus impliqué.

34
gnovice