2017-07-03 7 views
1

Iはプロット画像:MATLAB

  1. 画素の配列として保存された画像を有します。
  2. イメージ内のピクセル数と同じ数のセルを持つセル配列。

基本的に、セルアレイの各セルは、画像内のピクセルの位置に対応します。

私は3Dプロットのxy平面に画像をプロットし、その値をz平面のセル配列にプロットします。各セル内の値は、画像のピクセル位置および対応するz値に対応する。例えば

、xy平面に表示される画像と

cellarray{1} = [10 2056] 
cellarray{2} = [18 1928] 

、Iは、次いでz値と、画像の画素1上にプロット

  • ポイントをしたいと思います2056
  • の私は私ができる知っている1928年

のZ値と、画像のピクセル18上にプロットされた点画像をプロットするにはimagesc(image)を使用しますが、セル配列内の日付を変換して、画像の対応するピクセルより上のz値を持つ3Dプロットを作成する方法はわかりません。

+0

はセルアレイ{n}は独特の最初の要素はありますか? – Wolfie

+0

はい、ユニークです。 cellarray {1}のすべての最初の要素は1、cellarray {2}の最初の要素はすべて2などです。 – Anonymous

+0

しかし、それは例えば 'cellarray {2} = [18 1928]'のようになりますので、最初の要素は2でなく18です。 – Wolfie

答えて

0

セル配列がcellarrayで、のペアが含まれているとします。これらの2行は

% Set up random cell array, with 1x2 arrays in each cell 
% First number in each array is unique pixel number, second is z value 
z = num2cell(randi(64,4,4)); 
cellarray = cell(4,4); for ii = 1:16; cellarray{ii} = [ii z{ii}]; end; 

は今、私たちはこれをプロットしたいので、各行は1×2セルの一つである16×2行列、に変換...ランダムなデモを設定します。

% Use the colon (:) to make cell array one column, use cell2mat to convert to matrix 
g = cell2mat(cellarray(:)); 

インデックスから2Dのx座標とy座標を取得するには、ind2subを使用できます。

[x, y] = ind2sub([4, 4], g(:,1)); % Change [4, 4] to the size of your image 

今あなたが(あなたのイメージのような)前のプロットを保持する場合に保持し、これらをプロットするplot3を使用することができます。

hold on % to retain previous plot, like from imagesc 
plot3(x, y, g(:,2), '.'); % Using the dot to specify points not a line 
+0

ありがとうございます。これは本当に有益かつ素晴らしいものでした。私は、3Dプロットのxy平面で画像そのものをグラフ化するのに最も効果的だと思っている機能が不思議でした。 imagesc()は2次元プロットを返しますので、このコードを使用しています: – Anonymous

+0

問題はありません – Wolfie

関連する問題