Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 旋转时保持图像大小_Matlab_Image Processing_Rotation - Fatal编程技术网

Matlab 旋转时保持图像大小

Matlab 旋转时保持图像大小,matlab,image-processing,rotation,Matlab,Image Processing,Rotation,有人知道我如何旋转图像,然后再将其旋转回来,而不丢失索引信息吗?也就是说,我想旋转一个图像,执行一个特定的操作,然后再旋转回来。因为当你旋转一个图像时,它的大小会改变,当你把它旋转回来时,它会变得更大。我希望第二次旋转将图像恢复到其原始大小。我怎样才能做到这一点 I_rot = imrotate(I,45); %size changes I_rot has different size than I I_rot_back = imrotate(I_rot,-45); %I_rot_back sh

有人知道我如何旋转图像,然后再将其旋转回来,而不丢失索引信息吗?也就是说,我想旋转一个图像,执行一个特定的操作,然后再旋转回来。因为当你旋转一个图像时,它的大小会改变,当你把它旋转回来时,它会变得更大。我希望第二次旋转将图像恢复到其原始大小。我怎样才能做到这一点

I_rot = imrotate(I,45);
%size changes I_rot has different size than I
I_rot_back = imrotate(I_rot,-45);
%I_rot_back should have the same dimensions as I. 
显示第四个可选参数,该参数允许您保持图像大小:

I_rot = imrotate(I,45,'bicubic','crop'); % the default method is 'nearest', but 'bucubic' is much better!
I_rot_back = imrotate(I_rot,-45,'bicubic','crop');
但是,这会导致图像角落中的信息丢失。最好允许第一次旋转增加图像的大小,以便保留所有信息,然后在第二次旋转后将图像裁剪为其原始大小。您可以为此使用:

isz = [size(I,2),size(I,1)];  % note the reversed indices!
I_rot = imrotate(I,45,'bicubic');
I_rot_back = imrotate(I_rot,-45,'bicubic');
osz = [size(I_rot_back,2),size(I_rot_back,1)];
I_rot_back = imcrop(I_rot_back, [(osz-isz)/2, isz]);

“旋转图像时大小会改变”与“向后旋转时保持该大小”直接不一致。为什么你的图像在旋转时会改变大小,而在旋转时却不会改变大小?我已经改写了你的问题,如果我误解了你的问题,请把它改回原处或进一步修改。