12

与えられたいくつかの「サンプル」ポイントと交差する滑らかな表面を作成するためのシンプルで効率的な方法を考え出そうとしています。

サーフェス上の任意の X、Y ポイントについて、4 つの方向のそれぞれで最大 4 つのサンプル ポイントを識別します (X 軸上の次に高いポイントと低いポイント、次に Y 軸)。この点を考慮して、4 つのサンプル ポイント間を補間する Z 値を計算する方法が必要です。

もちろん、アルゴリズムは、4 つのサンプル ポイントのいずれかの X、Y 位置を指定すると、そのポイントの Z 値を出力する必要があります。また、サンプル ポイントが 4 つ未満になる場合があることにも注意してください。

4 つのサンプル ポイントの Z 値の関数は、サンプル ポイントまでの距離によって何らかの形で逆バイアスになっていると思いますが、これを行う方法がわかりません。

誰でもこれを行う簡単な方法についてアイデアを持っていますか?

4

6 に答える 6

11

これを行うには、Catmull-Romスプラインからパッチを作成します。これらのスプラインは各制御点にヒットし、一次導関数で連続します(二次導関数ではありませんが)。また、非常に扱いやすいと思います。計算は簡単で、コントロールポイントを少し変更するだけで直感的に動作します。

最高レベルでは、パッチごとに16ポイントが必要です(データセットのエッジでは、同じスプラインでコーナーポイントとエッジポイントを2回使用できます)。

まず、 4x4行列の各行の点p [i] [j]を補間して、 4つの中間制御点q[i]のセットを作成する必要があります。これが私が言っていることの大まかなASCIIスケッチです。

p00 p01 q0 p02 p03
p10 p11 q1 p12 p13
p20 p21 q2 p22 p23
p30 p31 q3 p32 p33

これで、これら4つの中間制御点のそれぞれの間を補間して、サーフェス上の最終的なスプライン点を見つけることができます。

これは、 4つのポイントにまたがるCatmull-Romスプラインの構造です。この例では、p[i-2]p[i + 1]のいずれかの側の制御点を使用して、点p[i-1]p[i]の間を補間しています。 uは、0から1の範囲の補間係数です。 τはスプラインの張力として定義され、スプラインサーフェスがコントロールポイントにどれだけぴったりと一致するかに影響します。

                 | 0   1   0    0 | | p[i−2] |
                 |−τ   0   τ    0 | | p[i−1] |
p(u) = 1 u u2 u3 | 2τ τ−3 3−2τ −τ | | p[i]   |
                 |−τ  2−τ τ−2   τ | | p[i+1] |

注:StackoverflowのGUIでこれをどのようにレイアウトするかはすぐにはわかりませんが、u2u3はそれぞれuの2乗uの3乗を表すことになっています。

于 2008-12-05T18:34:54.230 に答える
4

バイリニア/バイキュービック補間を利用できますが、3 つの方向 (それぞれトリリニア/トリキュービック) で使用できます。これらの形式の補間がどのように機能するかを理解していれば、それは非常に簡単です。詳細については、Wikipedia の Tricubic Interpolation を参照してください。

于 2008-11-24T02:56:02.257 に答える
1

サーフェス補間を探していますか、それともグリッドで十分ですか?

サーフェス補間については、他の人が三角形分割の使用を提案していることがわかります (たとえば、これを使用します: http://en.wikipedia.org/wiki/Delaunay_triangulation )

グリッドの作成: 私の同僚の 1 人が熱方程式 ( http://en.wikipedia.org/wiki/Heat_equation ) を使用して、指定されたサンプル ポイントの外側のピクセルの値を計算しました。これにより、非常にリアルな地形サーフェスが生成され、並列化は簡単でした。

于 2008-11-25T01:32:25.203 に答える
0

質問で提案されたスキームを使用して補間するときの問題は、最近傍のサブセットが散乱セットから選択される場合、結果が連続的である必要がないことです。

考えてみてください。(x,y) 平面を通る滑らかで連続したパスに沿って移動するとします。4 つの最近傍が変化しない限り、内挿はスムーズになり、どのように選択したとしても定義されます。ただし、ある時点で、最近傍のサブセットが突然変化します。その時点で、内挿を境界全体で一貫させる必要があります。最良の方法は、独立変数セットの三角形分割を使用することです。これにより、データの凸包内で連続 (線形) 内挿が保証されます。より多くの作業を行うと、三角形分割を使用して高次の補間を実現することもできます。

ラジアル基底関数は、一般的に、地理統計学に興味がある場合は、補間またはクリギングにも使用されます。距離ベースの方法を検討していたので、放射基底関数を検討してください。たとえば、「逆多重二次補間」を検索します。

于 2009-03-31T15:21:55.537 に答える
0

その点の単純な線形補間が必要な場合、中心点の Z 値は、距離が Y と X の両方で対称であることを考えると、隣接する 4 つの Z 値の平均にすぎません。

距離が対称ではなく、中心点が常に同じ X 線と Y 線上にある場合、Y 補間と X 補間の両方を計算でき、最終的な値はそれらの平均になります。

したがって、Zc は次のようになります: Zc=(Zx1+x*(Zx2-Zx1)/(x2-x1)+Zy1+y*(Zy2-Zy1)/(y2-y1))/2、ここで x と y はx1 と y1。

于 2008-11-25T01:26:50.363 に答える
0

catmull-rom パッチを使用する

于 2008-11-24T02:46:25.553 に答える