半径 R の球 S に含まれるすべてのポイントをクエリするプログラムがあります。ポイントは、実際には 3D 規則的なグリッドの頂点に配置された 3D ポイントですが、この詳細は質問に関連しているとは思いません。ルックアップ ボリューム (球体) の中心は、3D ペースのどこにでも配置できます。
ポイントはいくつかのデータを保持します(実数など)。私の質問は、3D フィルター (たとえばガウス フィルターなど) を使用して、球に含まれるポイントによって保持されるデータを補間/フィルター処理する方法です。私の理解では、次のようなことをする必要があるということです(疑似コード):
interp_data = 0;
for (each point contained in the lookup sphere S of radius R)
// compute square distance from point location to sphere centre
dist2 = distance2(sphere_center, curr_point_loc);
// compute gaussian weight
w = exp(-100 * dist2);
sumWeight += w;
interp_data += curr_point_data * w;
interp_data /= sumWeight;
それが正しいか。同様の手法を使用したコードを見たことがあります。exp 関数の値 100 は、標準正規偏差と呼ばれるものに何らかの形で関連していることを理解しています。値 100 は、私が見たソース コードでハード コードされていましたが、これは何らかの形で球の半径に関連していると思いますか? ガウス フィルターの重みは、dist2 = R^2 のときに 0 になるはずです。
誰かがこれに光を当てることができれば、それは素晴らしいことです.
また、実際に 3D データをフィルタリングする最良の方法はありますか? より良い/より高速で信頼性の高い方法はありますか?
どうもありがとうございました。