点を使って線を描くことはできますが、曲線を描く方法がわかりません。
これは私のコードでした:
clc;
clear all;
I = imread('im6f.jpg');
figure,imshow(I);
[x,y] = ginput(2);
次に、距離の公式を使用して長さを取得しました。
どうすれば曲線を描くことができますか?
点を使って線を描くことはできますが、曲線を描く方法がわかりません。
これは私のコードでした:
clc;
clear all;
I = imread('im6f.jpg');
figure,imshow(I);
[x,y] = ginput(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座標の収集を停止するには、 を押す必要があります。
xi
とyi
は、とを補間法として使用してfold
リサンプリングされた座標を倍増します。他のオプションについては、これを見ることができます。x
y
'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
.