1

私はMATLABで画像処理プログラムを開発しています。その一部には、入力画像(基本的には、ペイント/ GIMP / Photoshopの「鉛筆」ツールで作成されたものと同様の1ピクセル幅のエッジを持つバイナリ線画)から一定の間隔でいくつかのポイントをサンプリングすることが含まれます。次に、サンプリングされたピクセルをノットとして使用して3次スプラインを生成します。

これで、ポイントのセットを指定してMATLABで3次スプラインを生成する方法を知っていますが、問題は次のとおりです。画像は複数の「値」を持つ可能性があるため、(x, y)の真の関数ではありませんx(たとえば、ピクセルの行番号です)。 x"各xで-値は、その行の黒であるすべての列の数です。このため、MATLABのspline()関数は、「データサイトは別個のものでなければならない」と不平を言います。

これを回避するにはどうすればよいですか?

4

1 に答える 1

2

関数をパラメトリック形式に変換してから、onxy:の2つのスプラインを実行することをお勧めします。

   y = f(x) =>   

   y(t),x(t)

Matlabでは、次の方法でそれを行うことができます。

  t=1:numel(x);
  xs = interp1(t,x, ti);
  ys = interp1(t,y, ti);

補間したいポイントはどこxiにありますか。yi


yこれは、以下ごとに複数の値を持つデータの例xです。 ここに画像の説明を入力してください

y = -10:10;
x = y.^2;
figure;plot(x,y,'rv');

t = 1:numel(x);
ti = 1:0.05:numel(x);
xi = interp1(t,x,ti );
yi = interp1(t,y,ti );

hold on ;plot(xi,yi);
于 2012-10-14T14:03:38.113 に答える