3

ディスクからテクスチャとしてロードされた画像と、対応する深さを持つ同じサイズの行列dがあります。

surf画像を3Dモデルとして表示するにはどうすればよいですか?単に取る

surf(depthMatrix, img);

以来、良い結果は得られません

  1. カメラはxy平面からz方向に見えません
  2. かなり黒く見えます
  3. を使用して表示すると、深度マトリックスは実際には滑らかになっていますが、それほど滑らかには見えません。imshow(depthMatrix, []);

それがどのように見えるかをイメージする

4

1 に答える 1

4

テクスチャ マッピングを使用して、次のようにイメージをサーフェスに表示できます。

surf(depthMatrix,img,...           %# depthMatrix is z data, img is an image
     'FaceColor','texturemap',...  %# Use texture mapping
     'EdgeColor','none');          %# Turn off edge coloring

そして、あなたの3つのポイントに対処するには:

  1. Figureのボタンを押すと、マウスでカメラの角度を調整できます。代替テキストこれにより、インタラクティブな 3D 回転がオンになります。関数ROTATE3Dを使用してインタラクティブな回転をオンにすることも、関数VIEWを使用してマウスなしでカメラ ビューを変更することもできます。

  2. エッジがデフォルトで黒い線として描画され、おそらく多くのエッジがあったため、プロットが黒く見えました。

  3. 軸のスケーリングと制限を調整して、サーフェスをより滑らかに見せることができます。たとえば、axis equal3 つの軸すべてでデータ単位が同じになるため、他の 2 つの軸の範囲が数百に及ぶため、z 軸 (0 から 25 の範囲) は大幅に平坦化されます。または、 SURFの呼び出しで、これらの軸の値に使用する x および y データを指定できます。これにより、最終的に、これらの軸と z 軸の間の相対的なスケーリングをより適切に調整することができます。

于 2010-11-03T20:05:25.297 に答える