0001 function newimg = image_resize(img,p1,q1,r1)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 if nargin==2
0014
0015 q1 = p1(2);
0016 if length(p1)>2
0017 r1 = p1(3);
0018 else
0019 r1 = size(img,3);
0020 end
0021 p1 = p1(1);
0022 end
0023
0024 if nargin<4
0025 r1 = size(img,3);
0026 end
0027
0028 if ndims(img)<2 || ndims(img)>3
0029 error('Works only for grayscale or color images');
0030 end
0031
0032 if ndims(img)==3 && size(img,3)<4
0033
0034 newimg = zeros(p1,q1, size(img,3));
0035 for m=1:size(img,3)
0036 newimg(:,:,m) = image_resize(img(:,:,m), p1, q1);
0037 end
0038 return;
0039 elseif ndims(img)==3
0040 p = size(img,1);
0041 q = size(img,2);
0042 r = size(img,3);
0043 [Y,X,Z] = meshgrid( (0:q-1)/(q-1), (0:p-1)/(p-1), (0:r-1)/(r-1) );
0044 [YI,XI,ZI] = meshgrid( (0:q1-1)/(q1-1), (0:p1-1)/(p1-1), (0:r1-1)/(r1-1) );
0045 newimg = interp3( Y,X,Z, img, YI,XI,ZI ,'nearest');
0046 return;
0047 end
0048
0049 p = size(img,1);
0050 q = size(img,2);
0051 [Y,X] = meshgrid( (0:q-1)/(q-1), (0:p-1)/(p-1) );
0052 [YI,XI] = meshgrid( (0:q1-1)/(q1-1), (0:p1-1)/(p1-1) );
0053 newimg = interp2( Y,X, img, YI,XI,'nearest');