画像を matlab に読み込み、二重行列として操作します。
ここで、画像のある点から別の点への直線を横切ってデータ値を抽出したいと考えています。ただし、この行は列または行と等しくありません (簡単です)。
どうすればmatlabでそれを行うことができますか?
線は線の式に従い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))