0

私の以前は、 画像を円柱または球の形状にマッピングしていましたか?

ワープ関数を使用して、画像を球または円柱の形状にマッピングできました。しかし、今、マップされた画像を取得または使用するにはどうすればよいでしょうか? 私の問題は、ラップされた画像の部分を使用し、その部分を別の形状に再度ラップする必要があることです。

イメージ全体を円柱にラップしたので、円柱イメージの一部を球体にラップする必要があります。円柱の部分は、(R, Theta, Z0) から (R, Theta, Z1) への垂直線分、または円柱の半分などになります。

マップされた画像の一部を取得またはマップする方法が必要な場合、warp() 関数以外の別の関数を使用する必要がありますか? どこから始めればよいかアドバイスやアイデアをいただければ幸いです。

概念的な質問: 画像処理についてよくわかりません。100x100 の正方形サイズの画像があるとします。100 本の垂直線があり、画像の左端にある垂直線を取得したいと考えています。画像全体を Theta0 から Theta1 で円柱にマッピングすると、左側の垂直線が円柱の高さで Theta0 にマッピングされます。次に、Theta0 にマッピングされた垂直線セグメントを使用し、この垂直線を球体にマッピングする必要があります。次に、私の質問は、セグメントを球形にマッピングした結果が必要な場合、この左の垂直線分を円柱からマッピングする必要がありますか、それとも元の画像から直接マッピングできますか? 画像のサンプリング/補間などのために、これら2つの方法で異なる結果が得られるかどうか疑問に思っています。

4

1 に答える 1

0

なぜ画像を取り戻したいのですか?

イデオロギーを誤解していると思います。イメージを取り戻す必要はありません。アルゴリズムは次のようになります。

  1. 画像をロードします(これで、1 つの大きなマトリックスになりました)
  2. 1 つのサーフェスへのテクスチャ マッピングに画像全体を使用する
  3. イメージの一部を別のサーフェスへのテクスチャ マッピングに使用する

このような:

imgRGB = imread('peppers.png');
[imgRows,imgCols,imgPlanes] = size(imgRGB);
for p=1:imgPlanes
    imgRGBFlipped(:,:,p) = flipud( imgRGB(:,:,p) );
end
[CX,CY,CZ] = cylinder(imgRows,imgCols);

% Now select a part of image
subimage = imgRGB( 1:200, 1:400, :); % rows 1 to 200 columns 1 to 400
for p=1:imgPlanes
    subimageFlipped(:,:,p) = flipud( subimage(:,:,p) );
end
[SX,SY,SZ] = sphere(200);

figure;
subplot(2,2,1);     imshow(imgRGB);                     title('Full image')
subplot(2,2,2);     warp(CX,CY,CZ,imgRGBFlipped);       title('Full image on cylinder')
subplot(2,2,3);     imshow(subimage);                   title('Part of image')
subplot(2,2,4);     warp(SX,SY,SZ,subimageFlipped);     title('Part of image on sphere')
于 2013-05-11T05:50:16.377 に答える