0

点を使って線を描くことはできますが、曲線を描く方法がわかりません。

これは私のコードでした:

clc;
clear all;
I = imread('im6f.jpg');
figure,imshow(I);

[x,y] = ginput(2);

次に、距離の公式を使用して長さを取得しました。

どうすれば曲線を描くことができますか?

4

1 に答える 1

2

interp1スプラインの補間に使用するのはどうですか? fold = 10は、必要な解像度のおおよその増加であるとしましょう。それから、[x, y] = ginput()ポイントの特定の上限なし。ユーザーが指定したポイント数は ですn = length(x)。それで、

t = 1 : (1/fold) : n;
xi = interp1(1 : n, x, t, 'spline');
yi = interp1(1 : n, y, t, 'spline');
plot(xi, yi, 'linewidth', 3);

クリックすると、次のようになります。赤いブロブは、クリックしたポイントを示しています。Enter座標の収集を停止するには、 を押す必要があります。

ここに画像の説明を入力

xiyiは、とを補間法として使用してfoldリサンプリングされた座標を倍増します。他のオプションについては、これを見ることができます。xy'spline'

dx = xi(1 : end-1) - xi(2 : end);
dy = yi(1 : end-1) - yi(2 : end);
d = sum(sqrt(dx.^2 + dy.^2));

dすべてのエッジの長さの合計として計算された、そのスプラインのおおよその長さです。上記の場合、d = 118.97.

于 2013-11-06T05:16:45.733 に答える