3

我想要 :

  1. 将图像(尺寸 512x512)旋转 45 度。
  2. 对其进行一些处理。
  3. 将图像旋转 -45 度。

我的问题是当我应用 45 度和 -45 度的旋转时,图像的大小会发生变化,我希望它是相同的。

4

2 回答 2

2

旋转图像的通常过程是放大图像,旋转图像并缩小图像。这样,您可以避免旋转时出现的暗边距。

Matlab 会自动执行此过程。因此,如果您想要图像的特定尺寸,则必须在旋转图像后选择图像的适当区域。

假设我们想要旋转图像并想要保留与原始图像相同的尺寸,我们可以这样做:

    img = imread('image.png'); 
    r = numel(img(:,1));
    c = numel(img(:,2));
    nimg = imrotate(img, 45);
    nimg = imrotate(nimg, 45);
    n_R = numel(nimg(:,1));
    n_C = numel(nimg(:,2));
    n_R = n_R+mod(n_R, 2); %to avoid dimensions being in double datatype
    n_C = n_C+mod(n_C, 2);
    oimg = nimg(((n_R/2)-(r/2)):((n_R/2)+(r/2)), ((n_C/2)-(c/2)):((n_C/2)+(c/2)),:);
    imwrite(oimg, 'rot_image.png');
于 2012-11-29T05:28:44.473 回答
1

你不能这样做。这没有意义。简单实验:

  1. 拿一张正方形的纸,把它靠在白墙上
  2. 在墙上画出正方形的边界
  3. 将这张纸旋转 45 度
  4. 在墙上画出另一个正方形,将旋转的纸包起来
  5. 把那张纸从墙上拿出来,看看为什么你不能这样做
  6. 在墙上留下痕迹,这样你就不会忘记
于 2012-11-29T04:59:05.147 回答