【问题标题】:How can I "plot" an image on top of another image with a different colormap?如何在具有不同颜色图的另一个图像之上“绘制”图像?
【发布时间】:2013-03-23 03:31:08
【问题描述】:

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

这是我目前的尝试:

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

这有几个问题:

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

我该如何解决这个问题?

我想要一个与此类似的效果,除了我的彩色叠加层是矩形而不是弯曲的:

【问题讨论】:

    标签: image matlab


    【解决方案1】:

    只需更改它,以便为 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);
    

    【讨论】:

    • 谢谢!我怎样才能把 B 放在某个偏移上,这样它就不会在角落里了?
    猜你喜欢
    • 2012-04-20
    • 1970-01-01
    • 2021-12-19
    • 2012-06-15
    • 1970-01-01
    • 2022-01-24
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多