3

画像としてプロットする必要のある1024X256の極座標データ(行-半径、列角度)があります。これを実行できるファイル交換から取得したmファイルがあります(ここをクリック)。ただし、大きな画像の場合は非常に遅くなります。私が苦労しているサーフ機能を使用してこれを行うための迅速な方法があると思います。(以下のコードを参照)

data = data; % load any polar data

depth = 4.5; %imaging depth in mm

offset = 0.5;

theta = [(0:2*pi/size(data,2):2*pi-1/size(data,2))]*180/pi;

rho = [0:(depth-offset)/size(data,1):(depth-offset)-1/size(data,1)] + offset;

[THETA,RR] = meshgrid(theta,rho);

[A,B] = pol2cart(THETA,RR);

figure

surf(A,B,data,'edgecolor','none'),

view(0,90)

xlabel('x [mm]')

ylabel('y [mm]')

axis tight

結果は正しくないようです。

私が間違っていることについて何か考えはありますか?ありがとう!

4

2 に答える 2

3

はい、あなたの問題は単純です:

pol2cart Transform polar to Cartesian coordinates.
    [X,Y] = pol2cart(TH,R) transforms corresponding elements of data
    stored in polar coordinates (angle TH, radius R) to Cartesian
    coordinates X,Y.  The arrays TH and R must the same size (or
    either can be scalar).  ***TH must be in radians***.

解決策:180/piを削除します

于 2012-09-14T20:41:13.327 に答える
1

Mファイルのアプローチは正しいです。しかし、その通りです。実装は非常に遅いです。欠けているのは、データ自体を極座標から直交座標に変換することです。これは難しい部分です。現在、プロットする座標を変換していますが、デカルト座標であるかのように極座標データをプロットしています(データにデカルト座標を課しています)。

正しくかつ高速に取得するために取るべきアプローチは次のとおりです。

  1. 描画する領域にデカルトグリッド(メッシュグリッド)を生成します。宛先ピクセルごとに1つのエントリがあります。
  2. x/yデカルト変数を極座標に変換します
  3. 極座標を極画像のインデックスにスケーリングします(これは、マトリックスサイズとイメージング深度を考慮に入れます)
  4. 極座標インデックスを使用して、interp2を使用して極座標画像から値を補間します(これにより、遅いプロセスが高速になります)
  5. 結果の画像は、元のx/yメッシュグリッドポイントにピクセル位置があるデカルト画像です。

そのプロセスは理にかなっていますか?画像処理では、通常、宛先スペース(ピクセル全体が必要な場所)から開始し、ソース画像の小数ピクセルオフセットに戻ってから補間します。

于 2012-09-14T20:43:03.267 に答える