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

相关问题