八度操纵图像

时间:2013-11-04 19:06:33

标签: octave

我正在尝试使用八度音调调整大小并旋转图像。但是,当我尝试得到以下错误: 指数超过矩阵维度......任何人都能看到我做错了什么?

I=imread('c:/cg/img/Lena.jpg'); % 128 x 128 uint
I2=rgb2gray(I);


alfa=.5;

for i=1:round(256*alfa)
  for j=1:round(256*alfa)

    is=round(i/alfa);
    js=round(j/alfa);

    if (is<1) is=1;  endif;    
    if (js<1) js=1;  endif;


 I3(i,j)=I2(is,js); 

   end
end

imwrite(I3,"c:/cg/lenax0.5.jpg","jpg");



for i=1:256
   for j=1:256
     I4(i,j)=I3(257-j,i);         %90
     I5(i,j)=I3(257-i,257-j);     %180
     I6(i,j)=I3(j,257-i);         %270
    end
end

I7=[I3 I4; I5 I6];
imshow(I7);
imwrite(I7,"c:/cg/lena_rotate_90_180_270.jpg","jpg");

2 个答案:

答案 0 :(得分:1)

弄清楚错误在这里我的尺码错了。

for i=1:256
   for j=1:256
     I4(i,j)=I3(257-j,i);         %90
     I5(i,j)=I3(257-i,257-j);     %180
     I6(i,j)=I3(j,257-i);         %270
  end
end

我的大小错误需要

for I=1:128 ect... 

答案 1 :(得分:0)

我无法理解你的代码但是,你做错了什么。您未使用image packageimrotateimresize的功能。在调用这些函数pkg load image之前,不要忘记加载图像包。