2013-03-22 60 views
3

我有兩個圖像,一個是我想用灰度繪製的100x100,另一個是我想用另一個彩色地圖繪製的20x20。後者應該疊加在前者上。如何使用不同的色彩地圖「繪製」另一幅圖像上的圖像?

這是我目前的嘗試:

A = randn(100); 
B = ones(20); 
imagesc(A); 
colormap(gray); 
hold on; 
imagesc(B); 
colormap(jet); 

有幾個問題與此:

  1. 我不能更改較小圖像的偏移。 (他們總是共享左上像素。)
  2. 它們具有相同的顏色映射表。 (第二個colormap會更改所有像素的顏色。)
  3. 像素值在合成圖像上進行歸一化,以便第一幅圖像在第二幅圖像引入新極值時變化。兩幅圖像的比例應該分開。

我該如何解決這個問題?

我想與此類似,不同的是我的有色覆蓋爲長方形,而不是wibbly效果:

enter image description here

回答

3

只要改變它讓你在一個完整的和適當的色彩矩陣傳爲A(即100×100×矩陣),而不是讓它決定:

A = rand(100); % Using rand not randn because image doesn't like numbers > 1 
A = repmat(A, [1, 1, 3]); 
B = rand(20); % Changed to rand to illustrate effect of colormap 
imagesc(A); 
hold on; 
Bimg = imagesc(B); 
colormap jet; 

要設置其父軸內B的圖像的位置,則可以使用其擴展數據和YDATA特性,這都被設置爲[1 20]當該代碼已完成。第一個數字指定圖像中最左邊/最高點的座標,第二個數字指定圖像中最右邊/最低點的座標。如果圖像不符合原始尺寸,它會拉伸圖像。

例子:

xpos = get(Bimg, 'XData'); 
xpos = xpos + 20; % shift right a bit 
set(Bimg, 'XData', xpos); 
+0

謝謝!我怎麼能把B放在一些偏移量上,使它不在角落? – Andreas 2013-03-22 17:25:37

+0

編輯完成此答案的答案。 – wakjah 2013-03-22 17:56:42

相關問題