假設我們有一個尺寸爲49x49x5的矩陣I,對應於沿着第三維堆疊的尺寸爲49x49的5個圖像,因此總共有5個圖像。這些圖像應該可視化3D空間中的氣體密度,因此我們可以將每個圖像視爲不同位置的房間截面。在三維空間中分層多個圖像
有沒有什麼辦法可以在MATLAB中創建一個圖形,其中所有5個圖像都顯示爲懸掛在他們「來自」的3D空間中?
這裏是一個圖像希望使其更清晰,我所追求的:
假設我們有一個尺寸爲49x49x5的矩陣I,對應於沿着第三維堆疊的尺寸爲49x49的5個圖像,因此總共有5個圖像。這些圖像應該可視化3D空間中的氣體密度,因此我們可以將每個圖像視爲不同位置的房間截面。在三維空間中分層多個圖像
有沒有什麼辦法可以在MATLAB中創建一個圖形,其中所有5個圖像都顯示爲懸掛在他們「來自」的3D空間中?
這裏是一個圖像希望使其更清晰,我所追求的:
考慮下面的例子。它採用了低級別SURFACE功能積疊圖片:
%# create stacked images (I am simply repeating the same image 5 times)
img = load('clown');
I = repmat(img.X,[1 1 5]);
cmap = img.map;
%# coordinates
[X,Y] = meshgrid(1:size(I,2), 1:size(I,1));
Z = ones(size(I,1),size(I,2));
%# plot each slice as a texture-mapped surface (stacked along the Z-dimension)
for k=1:size(I,3)
surface('XData',X-0.5, 'YData',Y-0.5, 'ZData',Z.*k, ...
'CData',I(:,:,k), 'CDataMapping','direct', ...
'EdgeColor','none', 'FaceColor','texturemap')
end
colormap(cmap)
view(3), box on, axis tight square
set(gca, 'YDir','reverse', 'ZLim',[0 size(I,3)+1])
我使用索引彩色圖像(直接顏色映射),但它可以很容易地改變使用灰度圖像(帶有刻度的顏色映射)。
現在,如果您想獲得像您在問題中所示的3D空間,只需交換Y和Z尺寸(圖像沿Y尺寸而不是Z尺寸疊加)即可。
一般來說,要更多地控制視角,請使用camera manipulation functions。
我可以問你如何通過加載五個圖像嗎?如果我有5個不同的gpeg圖像,我想把它們掛在3D中,那麼這個想法呢? @Amro –
@MuhammadUsmanSaleem在上面的例子中,我只是'重複'相同的圖像5次,並將它們堆疊在一起。您可以以相同的方式顯然讀取不同的圖像,只要它們的尺寸完全相同即可。此外,我使用「索引」圖像,但您可以將其更改爲顯示「灰度」(堆疊在第3個暗淡處)或「真彩色」圖像(堆疊在第4個暗淡處)。這裏是一個RGB圖像的例子:http://pastebin.com/T1shKdYF – Amro
感謝您的美麗回覆。是的,我知道你只需在matlab中加載圖像,然後通過重塑來創建該圖像的副本。其實我有3個不同的gpeg圖像。這些是高層大氣天氣聊天,我想表現爲3d,其中z軸將在大氣中的高度?如何閱讀這3張圖片後,我在哪裏修改了你的愛和美麗的代碼?請參閱下面的eykanal原型圖。 @Amro我是你的粉絲....我等了很多天,和你聊天。最後你聽到我的聲音... –
如果我理解正確的話,你可以使用slice()或contourslice()功能做到這一點。
看看這個例子: http://www.mathworks.com/help/matlab/visualize/techniques-for-visualizing-scalar-volume-data.html
Link broken;在該文本上搜索的替代結果。 –
你要找的功能是patch
功能。通過示例的方式:
x=[1 1 6]; y=[2 7 2]; z=[1 1 -1];
這指定了一個三角形(三個點),和頂點的座標是(1,2,1)
,(1,6,1)
,和(6,2,-1)
。如果要爲每個向量添加第四個點,它將是一個矩形,新的頂點位於新的x,y,z座標處。
直接回答你的問題貼,你可以簡單地通過使用多維數組x
,y
,並且z
,其中每列指定一個不同的多邊形繪製矩形數每個變量的。在實踐中,這種工作方式如下:
% plot two rectangles
x = [1 1 1 1;
1 1 1 1;
4 4 4 4;
4 4 4 4;];
y = [1 1 1 1;
2 2 2 2;
2 2 2 2;
1 1 1 1;];
z = [1 2 3 4;
1 2 3 4;
1 2 3 4;
1 2 3 4;];
patch(x,y,z,'w');
這使得:
有你可以用它來增添色彩的多邊形,檢查文檔的選項。
那你用它來生成圖像? – Jacob
Google Sketchup :) – Vidar