2014-06-16 31 views
2

我想,我已經用Matlab2013處理了一個色彩映射問題。我用熱圖繪製了一個3d表面圖,我想在同一個圖中在x-y平面上顯示一個位圖(8位彩色圖像)。兩者分開繪製都很好,但只要我在一個圖中繪製它們,第一個曲面只是黑色。我想這是因爲x-y平面上的RGB圖像使用了不同的顏色映射。在Matlab中是否有一個選項可以在同一個圖中繪製兩種不同類型的圖像?彩色圖像(x-y平面)上的曲面圖

surf(X,Y,density,'FaceColor','texturemap','Edgecolor','none') 
colormap hot 
... 
%// define the location of the bitmap 
xImage = [miX maX; miX maX];    %// The y data for the image corners 
yImage = [miY miY; maY maY];    %// The x data for the image corners 
zImage = [zDist zDist; zDist zDist];  %// The z data for the image corners 
surf(xImage,yImage,zImage,...    %// Plot the surface 
    'CData',RGBImage,... 
    'FaceColor','texturemap'); 

謝謝! Durin

+0

你能提供的圖像,以及相應的'xImage,yImage'和'zImage'中的值? – rayryeng

回答

1

我認爲這是densityzImage的相對縮放問題。我可以通過執行以下操作複製此:

1)繪製surf其中第三輸入是n×m個其被縮放像一些真實數據(-0.2〜0.2,例如)。這會按照您的預期響應colormap中的更改。

2)hold on後,情節另一個surf其中第三輸入是nxmx 3,象RGB圖像,雙值縮放0和1之間

這使得第一圖像去「暗」(或者是該特定顏色映射中最低顏色的顏色)。問題是他們共享他們的CLim,在同一個軸上,但RGBImage實際上並沒有引用色彩映射表。

這是通過縮放/歸一化第一個圖(您的density值)在0和1之間(在這種情況下)的「可修復」 - 儘管如果您想要添加一個彩條。或者,先抓住從你的軸「CLIM」繪製第一衝浪後:

trueC = get(gca,'CLim'); 

然後將其設置回您繪製的圖像後:

set(gca,'CLim',trueC)