MATLAB Answers

imageにおける、​各要素の特定の値に対​応した配置について

1 view (last 30 days)
Yoshihiko
Yoshihiko on 28 Nov 2017
Edited: jiro on 29 Nov 2017
imageによって図を表示する際に、飛び飛びの値で軸に沿って表示できなかったので質問させて頂きます。 軸の値が1ずつ増加する場合は、image(x,y,C)とすることで、x,yを開始点としてCを表示することができました。 しかし、例えば y軸にある y = [1,3,9,10,15,...]のような線形でないベクトルに対し、その値に対応する位置に、Cの各要素を配置することができませんでした。 この場合、y(1)からy(2)までをC(1,:)の図が占め、y(2)からy(3)までをC(2,:)の図が占める、というような図の作成方法は存在するのでしょうか?

Accepted Answer

jiro
jiro on 29 Nov 2017
Edited: jiro on 29 Nov 2017
pcolor を使うと非線形の X,Y の位置指定ができます。ただ、image 関数と仕様が違うので多少設定をいじる必要があります。以下のサンプルを参考にしていただきたいのですが、例えば
  • pcolor はカラーマップで色情報を指定するので、必要に応じて colormap 関数を使用します。
  • pcolor は各ピクセルを黒のメッシュで強調表示するため、 shading flat で表示を無効にします。
  • pcolor では原点 (0,0) が左下として表示されるので、 axis を使って左上に変更します。
% カラーマップ付き画像
[RGB,map] = imread('corn.tif');
X = 1:size(RGB,2);
% 非線形のインデックスを作成
Y = cumsum(randi(5,1,size(RGB,1)));
pcolor(X,Y,RGB)
shading flat % エッジのラインを削除
colormap(map) % カラーマップを指定
caxis([0 size(map,1)]) % カラーマップのスケーリング
axis ij image % 画像としての軸指定

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!