2

たまたま上面図/体の輪郭に2つの楕円を当てはめようとしています。簡単にするために、次の例を使用します。

ここに画像の説明を入力

ご覧のとおり、このシンプルなボディは、長いコア (青) とヘッド (赤) で構成されています。実際には、このアウトラインは 1 色になります。ここでは視覚化のために 2 色を使用しています。

単一の楕円をその輪郭のいずれかの部分に合わせる方法は知っていますが、これらの 2 つの楕円が実際に接続されているという制約があるため、2 つの楕円に合わせる方法はわかりません。この特定のケースでは、制約は、2 つの楕円が決して離れないこと、および楕円 1 と楕円 2 の間に特定の角度しか存在できないことです。

関数の書き方を教えてくれるポインターに感謝しますmagic_fitting_function(body_outline)。プログラムを呼び出した後、下にある 2 つの楕円の座標が返されます。

ここに画像の説明を入力

EDIT1: この問題の解決を容易にするための最小要件は何ですか? たとえば、1 点、2 点などを与えられた場合、どのように問題を単純化できるでしょうか?

EDIT2: プログラミング言語に依存しないソリューションを探しています。

EDIT3: これらの2つの楕円が互いに特定の関係にあるという制約をプログラムで作成する方法に関するヒントはありますか? 例: 私は、小さな楕円が常に大きな楕円の長軸の一端に位置することを知っています。さらに、小さな楕円は、大きな楕円に対して +- 90 度しか回転できません。

4

4 に答える 4

1

ハフ変換を使用して楕円を分離してみることができます。試してみる価値のある FEX ツールがいくつかあります。たとえば、このEllipse Detection Using 1D Hough Transformです。

于 2013-06-28T17:23:15.953 に答える
1

完全なアウトラインがあれば、2 つの楕円が交差する場所を見つけることができます。アウトラインの 1 次導関数が不連続になる 2 つの鋭い角を探してください。次に、それらの角の間に直線を引きます。

線の片側はすべて楕円 A にあり、反対側はすべて楕円 B にあります。鋭い角は両方の楕円にあります。次に、見つけた 2 つの楕円のそれぞれに 1 つの楕円を当てはめ、当てはめた楕円が交差する点を再計算します。

于 2013-06-28T15:17:31.767 に答える
1

私はこの問題を解決したことがないので、提案を投げかけています。

最初に、図形全体の境界楕円を生成して、最上部と最下部の点を決定します。(これらのポイントを見つけるためのより良い方法がある場合、この手順は必要ない場合があります。)

次に、修正二分探索を使用して「首」の位置を検出します。(ここでは、図が立っているか頭の上に立っているかのように、境界楕円が垂直方向を向いていると想定しています。) 境界楕円の 2 つのセットを生成します。1 つは図の上部から 1/図の 4 点 (境界楕円を通る線を引く場合、1/4 点は左上点と中央の間にあることを意味します) および 1/4 点から図の下部までの楕円、図の上部から 3/4 点までの楕円と、3/4 点から図の下部までの楕円を持つもの。総面積が小さい楕円のセットは、頭をよりよくカプセル化するものです。検索を続行します (例: 次に、上から 1/8 ポイント / 7/8 ポイントまで、および/または上から 3/8 ポイント / 5/8 ポイントまでの楕円をテストして、一連の境界領域の合計を最小化します。楕円; 楕円が交わる点が首です。(する必要はありませんこれでは正確すぎるため、ネックを 34/256 番目のポイントに配置するか、35/256 番目のポイントに配置しても、おそらく大きな違いはありません。)

首を検出するには、境界楕円の代わりに境界ボックスを使用することをお勧めします。

最後に、角度の制約を満たすために、2 つの境界楕円を調整します。たとえば、極値を 5% ずつ移動して調整します (つまり、頭の楕円の極値が y 座標 0 と 50 にあり、胴体の楕円の極値がy 座標 50 と 200 で、極端な y 座標が 0 と 60、および 40 と 200 になるように調整します)。

于 2013-06-28T15:05:42.920 に答える
1
  1. 互いに最も離れている 2 つの点を見つけます。1 つは Ellipse1 に属し、もう 1 つは Ellipse2 に属します。
  2. これらのポイントの最近傍をチェックして、Ellipse1 に属する 5 つのポイントと Ellipse2 に属する 5 つのポイントを取得します。
  3. ウィキペディアをチェックして、好きな楕円の方程式を選んでください。
  4. 中学校の代数を使用して、各楕円について、点を接続して 5 つの連立方程式を取得し、これらを解いて、楕円を定義する 5 つのパラメーターを取得します。

編集

これが「matlab」とタグ付けされていることに気づきませんでした。その場合、各楕円のいくつかの点を特定したら、その点を楕円に適合させるためのmatlab 関数があります。

于 2013-06-28T17:02:23.303 に答える