我有两张图片,一张100x100我要用灰度绘图,另一张20x20我要用另一张色彩图绘制。后者应叠加在前者上。
这是我目前的尝试:
A = randn(100);
B = ones(20);
imagesc(A);
colormap(gray);
hold on;
imagesc(B);
colormap(jet);
这有几个问题:
colormap
会更改所有像素的颜色。)我该如何解决这个问题?
我想要一个与此类似的效果,除了我的彩色叠加层是矩形而不是褶皱:
答案 0 :(得分: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);