2

画像を matlab に読み込み、二重行列として操作します。

ここで、画像のある点から別の点への直線を横切ってデータ値を抽出したいと考えています。ただし、この行は列または行と等しくありません (簡単です)。

どうすればmatlabでそれを行うことができますか?

4

1 に答える 1

5

線は線の式に従いy=a*x+bます。ここで、x と y は画像の座標です。したがって、2 点(x1,y1) -> (x2,y2)で定義される直線が必要な場合、傾きa(y2-y1)/(x2-x1)b=y1-a*x1です。次に、次のように行列の点を選択して、線の等式に従います。

データとエンドポイントを作成します。

m=peaks(50);
x1=5 ; x2=42;
y1=21; y2=29;

ライン パラメータの ew を計算します。

a=(y2-y1)/(x2-x1);
b=y1-a*x1;

次の行を定義します。

x=x1:x2;
y=round(a*x+b);

線形インデックスを使用して適切な行列要素を選択します。

ind=sub2ind(size(m),y,x)

プロット:

subplot(2,1,1)
imagesc(m); hold on
colormap(bone)
line([x1 x2],[y1 y2],'Color',[1 0 0]);

subplot(2,1,2)
plot(m(ind))

ここに画像の説明を入力

于 2013-02-07T09:17:07.903 に答える