1
Matlab xyz 3D空間で2Dイメージを回転しようとしています。 Iの画像をX軸回りに角度θ= i回転させたいとします。私は(here定義される)回転行列との乗算によってこれをやっている:3次元でのイメージの回転(Matlab)
これは私のコードです:
x = linspace(-1,1,size(I,1));
[x0,y0,z0] = meshgrid(x,x,1);
R = [1 0 0; 0 cosd(-i) -sind(-i); 0 sind(-i) cosd(-i)];
xy = [x0(:),y0(:), z0(:)]*R';
X = reshape(xy(:,1),size(x0));
Y = reshape(xy(:,2),size(y0));
Z = reshape(xy(:,3),size(z0));
rotatedI = interp3(x0,y0,z0,I,X,Y,Z, 'nearest');
rotatedI(isnan(rotatedI)) = 0;
私は取得していますエラーが補間ラインである:
Error using griddedInterpolant
Interpolation requires at least two sample points in each
dimension.
ここで問題は正確にどのように解決できますか?
このコードは2次元に特化しているとうまく動作するので、混乱します。どんな説明も大歓迎です。
感謝をあなたは大変です。しかし、結果の画像はオリジナルに重ね合わされます。それは実際に3次元世界座標で回転されません。 MatlabのFEXで 'image3'と組み合わせてコードを使用することで、何とかこれを実現できますか?これまでのところ、画像は次のようになります。https://i.stack.imgur.com/MDi9m.jpg – Ciprian
2次元画像のz方向の寸法は 'interp3'で回転しますが、実際には**カラー**寸法(RGB)したがって、結果は「重ね合わされた」画像のように見える。あなたが私の編集を見ることができる3Dスペースでイメージの2D平面を回転させたい場合 – user2999345
ありがとう。それは完璧な意味合いがあります。最後の1つの質問:現在のコードは画像をそのエッジの周りで回転させます。画像をその中心点の周りで回転させることができる簡単な変更はありますか?または、画像を手動で移動して中心に配置する必要がありますか?たとえば、0°と90°の場合、画像の中心は一致しません。https://i.stack.imgur.com/MM55y.jpg – Ciprian