Matlab xyz 3 차원 공간에서 2D 이미지를 회전하려고합니다. 이미지를 각도로 회전시키고 싶습니다. x 축을 기준으로 θ = i입니다.3 차원에서 이미지 회전 (Matlab)
이 내 코드입니다 : 나는 (here 정의 된) 회전 행렬 곱셈을 이용하여이 일을하고
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
'interp3'으로 회전 된 2D 이미지의 z 크기는 실제로 ** 색상 ** 크기 (RGB)입니다. 따라서 결과는 "겹쳐진"이미지로 보입니다. 3D 공간에서 이미지 2D 평면을 회전 시키려면 내 편집을 볼 수 있습니다 – user2999345
감사합니다. 그건 완벽하게 이해가됩니다. 마지막 질문 하나 : 현재 코드가 가장자리를 중심으로 이미지를 회전시킵니다. 이미지를 중심점을 중심으로 회전시킬 수있는 간단한 수정이 있습니까? 또는 이미지를 수동으로 가운데로 이동해야합니까? 예를 들어 0 ° 및 90 °의 경우 이미지의 중심이 일치하지 않습니다. https://i.stack.imgur.com/MM55y.jpg – Ciprian