Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function grow()
- % rr and rc can be any number provided they are greater than one and whole
- % integers.
- rr = 4; % ratio to multiply the rows by, i.e. rr = 2 doubles the amount of rows the new picture will have
- rc = 4; % same as above but for columns
- if( rr < 1 || rc < 1) % this program cannot yet downsize pictures!
- disp(' This program cannot downsize pictures, run function shrink() instead!');
- end
- nc = 235; %Image dimensions
- nr = 300; %Other image dimensions
- F = imread('watarunfullsmall.jpg'); % reads image from the same folder this matlab .M file is located
- %H = imread('watarunfull.jpg');
- %image(F);
- %image(F);
- X = zeros(rr*nr,rc*nc,3,'uint8'); % creates 3 dimensional array to replace the picture supplied earlier (columns,rows,rgb of type unsigned integer (8 bytes))
- for i = 1:1:nr
- for j = 1:1:nc
- X(i*rr - rr + 1 ,j * rc - rc + 1,1:3) = F(i,j,1:3); % Copies color codes
- end
- end
- sir = splineInterpolationRows(X,nr,nc,rr,rc,1);
- sic = splineInterpolationColumns(sir,nr,nc,rr,rc,1);
- for i = 2:rc
- sic = splineInterpolationColumns(sic,nr,nc,rr,rc,i);
- end
- image(sic);
- %E = zeros(nr*rr,nc*rc,'uint8');
- %for i = 1:1:nr*rr
- % for j = 1:1:nc*rc
- % for color = 1:3
- % E(i,j,color) = abs(H(i,j,color) - sic(i,j,color)); % Copies color codes
- % end
- % end
- %end
- %image(sic);
- %imwrite(sic,'dogpixel Spline.jpg');
- end
- function sir = splineInterpolationRows(img,columnlength,rowlength,columnmultiple,rowmultiple,start)
- degree = 1;
- for y = start:columnmultiple:columnlength*columnmultiple
- splinered = spline((1:rowmultiple*degree:rowlength*rowmultiple-rowmultiple*degree),...
- double(img(y,(1:rowmultiple*degree:rowlength*rowmultiple-rowmultiple*degree),1)));
- splinegreen = spline((1:rowmultiple*degree:rowlength*rowmultiple-rowmultiple*degree),...
- double(img(y,(1:rowmultiple*degree:rowlength*rowmultiple-rowmultiple*degree),2)));
- splineblue = spline((1:rowmultiple*degree:rowlength*rowmultiple-rowmultiple*degree),...
- double(img(y,(1:rowmultiple*degree:rowlength*rowmultiple-rowmultiple*degree),3)));
- for z = 1:rowmultiple-1
- for i = 1+z:rowmultiple:rowlength*rowmultiple-rowmultiple*degree-1
- img(y,i,1) = ppval(splinered, i);
- img(y,i,2) = ppval(splinegreen, i);
- img(y,i,3) = ppval(splineblue, i);
- end
- end
- end
- sir = img;
- end
- function sic = splineInterpolationColumns(img,columnlength,rowlength,columnmultiple,rowmultiple,start)
- degree = 1;
- for x = start:rowmultiple:rowlength*rowmultiple
- % xv = [1,1+rowmultiple,1+rowmultiple*2,1+rowmultiple*3];
- % yv = [img(y,xv(1),color),img(y,xv(2),color),img(y,xv(3),color),img(y,xv(4),color)];
- splinered = spline((1:columnmultiple*degree:columnlength*columnmultiple-columnmultiple*degree),double(img((1:columnmultiple*degree:columnlength*columnmultiple-columnmultiple*degree),x,1)));
- splinegreen = spline((1:columnmultiple*degree:columnlength*columnmultiple-columnmultiple*degree),double(img((1:columnmultiple*degree:columnlength*columnmultiple-columnmultiple*degree),x,2)));
- splineblue = spline((1:columnmultiple*degree:columnlength*columnmultiple-columnmultiple*degree),double(img((1:columnmultiple*degree:columnlength*columnmultiple-columnmultiple*degree),x,3)));
- for z = 1:columnmultiple-1
- for i = 1+z:columnmultiple:columnlength*columnmultiple-columnmultiple*degree-1
- img(i,x,1) = ppval(splinered, i);
- img(i,x,2) = ppval(splinegreen, i);
- img(i,x,3) = ppval(splineblue, i);
- end
- end
- end
- sic = img;
- end
Add Comment
Please, Sign In to add comment