0

画像のスタック(約180枚)があり、すべての画像に2つの星(基本的な注釈のみ)があります。したがって、2つの星の位置(x、y)が最初に提供されます。これらすべての画像のサイズは固定されており、一定です。

画像間の「距離」は約1 °で、原点はすべての2D画像の中心(幅/ 2、高さ/ 2)になります。これをうまくプロットして補間すると、星は実際には不規則な形のリングを形成することに注意してください。

ここに画像の説明を入力してください

赤い点線の円と紫の点線の円は、3D空間のより強い香りと2D画像の配置(扇風機のような)を与えるためにあります。また、各スライスが約1 °離れていることも示しています

  1. 2D画像に表示された提供された(x、y)を使用して、各画像が約1 o離れていることを知って、3D空間で対応する(x、y、z)をどのように取得しますか?

  2. MATLABには3Dプロット機能があることを知っていますが、上記のシナリオのソリューションを実装するにはどうすればよいですか?(残念ながら、MATLABで3Dをプロットした経験はほとんどありません)

解決

受け入れられた答えに基づいて、私はもう少し調べました:球面座標系。ファイ、ロー、シータの計算に基づいて、問題なくリングを再構築できました。うまくいけば、これは同様の問題を抱えている人に役立つでしょう。

ここで解決策も文書化しました。それが誰かにも役立つことを願っています:http: //gray-suit.blogspot.com/2011/07/spherical-coordinate-system.html

4

4 に答える 4

1

2D座標(x、y)が与えられた場合、角度Aを3番目の座標(x、y、A)として追加するだけです。次に、3Dがあります。

注釈を半径rの円上で3Dで移動させたい場合は、次のように計算できます。XY平面に円を描く(r * cos(phi)、r * sin(phi)、0)を使用できます。 3x3の回転行列で必要な方向に回転させます。

于 2011-07-06T08:42:53.600 に答える
1

3D の y 座標はそのままであると信じているので、これを 2D の x と画像の角度を、上から見たときに x と z に変換するものとして扱うことができます。

2D x 座標は、3D 空間の原点からの距離です (上から下に見た場合)。画像角度は、3D 空間の x 軸に対してポイントがなす角度です (上から下に見た場合)。したがって、x 座標 (原点からの距離) とイメージ角度 (上から見た角度) は、3D 空間の x 座標と z 座標 (上から見た場合は x と y) を構成します。

それが極座標です。極座標からデカルト座標に変換して 3D の x 座標と z 座標を取得する方法をお読みください。

私も数学が得意ではありません。ここに私の行き方があります:

3D coords = (2Dx * cos(imageangle), 2Dy, 2Dx * sin(imageangle))

于 2011-07-06T08:54:50.503 に答える
1

あなたの回転がどの軸の周りで行われているのか、あなたの質問からは明らかではありません。ただし、私の答えは一般的な回転軸に当てはまります。

まず、ポイントを 3D 空間に配置し、XY 平面上に置きます。これは、ポイントの z 座標が 0 であることを意味します。次に、目的の軸を中心に目的の角度の 3D 回転を適用します。この例では、1 度の回転です。変換行列を自分で計算できます (あまり難しくないはずです。Google の「3D 回転行列」または同様のキーワードを使用してください)。viewmtxただし、MATLAB では、4x4 の回転行列を提供する関数を使用して簡単に処理できます。余分な (4 番目の) 次元は、指定した射影に依存します (スケーリング係数のように機能します) が、簡単にするために、MATLAB に既定の射影を使用させます。これについては、MATLAB のドキュメントを参照してください。

そこで、プロットをわかりやすくするために、xy 平面上にある正方形の頂点である 4 つの点 ( A(1,1)B(1,-1)C(-1,-1)D(1,-1)) を想定します。

az = 0;     % Angle (degrees) of rotation around the z axis, measured from -y axis.
el = 90;    % Angle (degrees) of rotation around the y' axis (the ' indicates axes after the first rotation).
x = [1,-1, -1, 1,1]; y = [1, 1, -1, -1,1]; z = [0,0, 0, 0,0];     % A square lying on the X-Y plane.
[m,n] = size(x);
x4d = [x(:),y(:),z(:),ones(m*n,1)]';    % The 4D version of the points.
figure
for el = 90 : -1 :0 % Start from 90 for viewing directly above the X-Y plane.
    T = viewmtx(az, el);
    x2d = T * x4d;                            % Rotated version of points.
    plot3 (x2d(1,:), x2d(2,:),x2d(3,:),'-*'); % Plot the rotated points in 3D space.
    grid
    xlim ([-2,2]);
    ylim ([-2,2]);
    zlim([-2,2]);
    pause(0.1)
end
于 2011-07-06T09:06:35.603 に答える
0

実際の物理システム (連星系など) の観察結果をモデルで説明できる場合は、粒子フィルターを使用できます。

これらのフィルターは、観測方向が 1 つしかないときに海上で船の位置を特定するために開発されました。船を追跡し、船の位置と移動速度を推定します。追跡が長ければ長いほど、推定値は向上します。

于 2011-07-06T08:29:01.693 に答える