3

2つの画像があります。1つはグレースケールでプロットしたい100x100で、もう1つは別のカラーマップを使用してプロットしたい20x20です。後者は前者に重ね合わせる必要があります。

これは私の現在の試みです:

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

これにはいくつかの問題があります。

  1. 小さい画像のオフセットを変更できません。(常に左上のピクセルを共有します。)
  2. それらは同じカラーマップを持っています。(2番目colormapはすべてのピクセルの色を変更します。)
  3. ピクセル値は合成画像に対して正規化されるため、2番目の画像が新しい極値を導入すると、最初の画像が変化します。2つの画像のスケーリングは別々にする必要があります。

どうすればこれを修正できますか?

色付きのオーバーレイが長方形で、ぐらつかないことを除いて、これと同様の効果が必要です。

ここに画像の説明を入力してください

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の画像の位置を設定するには、このコードが完了すると[120]に設定されるXDataプロパティとYDataプロパティを使用できます。最初の数字は画像の左端/最上点の座標を指定し、2番目の数字は画像の右端/最下部の点の座標を指定します。元のサイズと一致しない場合は、画像が引き伸ばされます。

例:

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