2013-11-04 2 views
0

옥타브를 사용하여 이미지의 크기를 조정하고 회전하려고합니다. 그러나 다음과 같은 오류가 발생하면 시도하십시오 : 인덱스가 매트릭스 크기를 초과합니다 ... 누구나 내가 뭘 잘못하고 있는지 보시겠습니까?옥타브 조작 이미지

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"); 

답변

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... 
0

나는 당신의 코드를 잘 이해할 수 없지만, 잘못된 것을하고 있습니다. image package ~ imrotateimresize의 기능을 사용하고 있지 않습니다. 해당 함수를 호출하기 전에 이미지 패키지를로드하는 것을 잊지 마십시오. pkg load image.