3

我有两张图像,一张 100x100 我想以灰度绘制,一张 20x20 我想使用另一个颜色图绘制。后者应叠加在前者之上。

这是我目前的尝试:

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

这有几个问题:

  1. 我无法更改较小图像的偏移量。(它们总是共享左上角的像素。)
  2. 它们具有相同的颜色图。(第二个colormap改变所有像素的颜色。)
  3. 像素值在合成图像上进行归一化,因此如果第二张图像引入新的极值,则第一张图像会发生变化。两个图像的缩放比例应该是分开的。

我怎样才能解决这个问题?

我想要一个与此类似的效果,除了我的彩色覆盖是矩形而不是微弱的:

在此处输入图像描述

4

1 回答 1

4

只需更改它,以便为 A 传递完整且正确的颜色矩阵(即 100x100x3 矩阵),而不是让它决定:

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 的图像在其父坐标区中的位置,您可以使用其 XData 和 YData 属性,当此代码完成时,它们都设置为 [1 20]。第一个数字指定图像中最左边/最高点的坐标,第二个数字指定图像中最右边/最低点的坐标。如果图像与原始尺寸不匹配,它将拉伸图像。

例子:

xpos = get(Bimg, 'XData');
xpos = xpos + 20; % shift right a bit
set(Bimg, 'XData', xpos);
于 2013-03-22T17:12:31.523 回答