いくつかの曲線を別の曲線X
にY
マッピングできるようにR
、これは反転可能であるためX
、Y
から、を取得できR
ます。
誰かがこれについてのアイデアを持っているか、おそらく私が自分でそれをググることができるいくつかの用語がありますか?
アップデート
ここでいくつかの説明が必要だと思います。
map(X,Y) => R;
invertible_map(R) => (X,Y)
いくつかの曲線を別の曲線X
にY
マッピングできるようにR
、これは反転可能であるためX
、Y
から、を取得できR
ます。
誰かがこれについてのアイデアを持っているか、おそらく私が自分でそれをググることができるいくつかの用語がありますか?
アップデート
ここでいくつかの説明が必要だと思います。
map(X,Y) => R;
invertible_map(R) => (X,Y)
私があなたを正しく理解していれば、あなたは高次元の曲線 (私があなたの投稿から理解していることからの 2D) を低次元の空間 (1D) に投影したいと考えています。次に、低次元空間でいくつかの点を選択した後、元の高次元座標を再び見つけられるようにしたいと考えています。
あなたが問題を述べている方法では、これは不可能です。より低い次元に投影すると、その次元に垂直なすべての情報が失われます。たとえば、3D 点を 2D 平面にプロットするとします。平面に投影された点の位置しかない場合、投影を行う前に平面からどれだけ離れていたかを知る方法はありません。
ただし、破棄せず、を計算X
したら、個々の要素を追跡する場合 ( 内の要素の順序を決して変更しないか、インデックスのベクトルを格納することにより、各要素がの要素であり、対応する場合は、いつでもインデックス ベクトルを使用して、選択したポイントの座標を検索できます。Y
R
R
R
X
Y
X
Y
したがって、擬似コードは次のようになります
map(X,Y) => R,idx %# idx is optional here if it's just 1:length(X)
[re_ordered_R,re_ordered_idx] = re_order(R,idx); %# idx optional, re_ordered_idx is important
%# find interesting value of R. Interesting_idx shows where the interesting value is in
%# reordered R. An example for this would be [maxVal,maxIdx] = max(re_ordered_R);
[interesting_value_of_R,interesting_idx] = find_interesting_R(re_ordered_R);
%# look up the corresponding X and Y
interesting_X = X(re_ordered_idx(interesting_idx));
編集
投影または座標変換を行っています。座標変換を行っている場合、マッピングを反転するのは簡単です。投影を行っている場合、マッピング解除機能はありません。
どちらの場合でも、インデックスを追跡している限り、つまりX
i 番目のエントリのどのエントリがR
対応するかを知っている限り、問題は解決されます。
曲線へのマッピングは、ほとんどの場合投影です。y=x.^2
によって定義された曲線を曲線 にマップしたいとしますy1=x1
。この場合、最初のカーブのすべてのポイントを 2 番目のカーブの最も近いポイントにマッピングします。ただし、y1=x1
は 2D で定義された曲線ですが、曲線自体は 1D 空間です。したがって、ポイント at[0,0]
とポイント at の両方[-1,1]
が 2 番目の曲線上の同じポイントにマッピングされ、最初に 2 番目の曲線からどれだけ離れていたかを知る方法はありません。
編集2
たとえば、2 つのリング間の内側の曲線に投影することによって、単一の同心リングにマッピングする 2 つの同心リングがある場合にも、投影を行っています。2 つのリングが最初に内側の曲線からどれだけ離れていたかはわかりません。
しかし、なぜオブジェクトの境界を見つけるためにフーリエ変換を使用しているのですか? edge
(画像をフィルタリングした後)またはbwboundaries
(画像をしきい値処理した後)のいずれかを使用することはできませんか?
あなたの質問があいまいすぎるという私のコメントにもかかわらず、私はこれを撃ちます。
私の推測では、3 次元 (X、Y、R) の点のトライアドに対応する空間曲線があると思います。r の値を指定して、x と y の値を補間できるようにします。
この曲線が r の関数として補間のために適切に定義されている場合は、単に interp1 を 2 回呼び出します。あれは、
xhat = interp1(R,X,rhat);
yhat = interp1(R,Y,rhat);
その補間には、interp1 の任意のメソッドを自由に使用してください。
内挿の明確な定義とは、R には複製がなく、単調であるため、独立変数 r の任意の値に対して、x と y のそれぞれについて回復できる単一の値があるということです。
あなたの質問が本当に別のものである場合は、回答を修正できるように、より具体的にしてください。