0

極座標 (軸は角度 x 半径) の画像をデカルト座標 (軸は x と y) の画像に変換しようとしています。

これは pcolor() を使用して matlab で十分に単純ですが、問題は mex ファイル (Matlab への c++ インターフェイス) でこれを行う必要があることです。これは、Matlab が配列コンテナーのみを使用することを除いて十分に簡単に思えるので、これを行うための巧妙で雄弁な方法は考えられません。

私は画像の次元にアクセスでき、入力画像配列を C++ のマトリックスとして再パッケージ化して変換を実行する非常に面倒な方法を想像できますが、これは面倒で問題があります。

また、xy プレーンのポイント間のギャップを補間できる必要があります。

何か案は?

4

1 に答える 1

3

これは、画像処理、特にレジストレーションではかなり標準的です。ただし、それは少し考える必要があり、「自明」ではありません。初めての私にもわかりませんでした。

異なる「ドメイン」に2つの画像があると仮定しています。あなたの場合、極座標のソース画像とデカルト座標のターゲット画像です。私は、あなたが移植したいターゲット画像の領域を知っていると仮定しています。

画像処理で一般的に知られている最善の方法は、入力するターゲット画像の既知の領域の座標をループすることです。これらの位置 (x、y) ごとに、極座標への変換が行われます。それはおそらくr = sqrt(x*x+y*y)およびtheta = atan2(y,x)またはそのようなものです。次に、補間を使用して極座標位置のその位置からサンプリングします。

補間の選択肢には次のものがあります。

  1. 最近隣 - 最も近いものに丸め、rそのtheta値を選択します。
  2. バイリニア -
  3. バイキュービック
  4. ...

もちろん、境界条件に気を配る必要があります。また、イメージから外れた場合に何が起こるかを確認する必要がrありthetaます。

この手順は、すべての種類の座標変換についても同様です (ターゲット イメージをループしてソース イメージからサンプリングし、逆変換に基づいてルックアップを実行します)。良いことは、ソースが関連していると想像する場所に穴を残さないことです。

これが画像部分に役立つことを願っています。

mex の部分については、次のリンクを参照してください: Mex チュートリアル Mex チュートリアル

mex の部分について何が必要なのか、より具体的に教えていただけますか?

于 2011-04-20T04:56:56.507 に答える