[Index for tmp_for_tar/imgio]
[Return to Master Index]
test_ims
(tmp_for_tar/imgio/test_ims.m)
Function Synopsis
res = ckcode( code, str )
Help text
Check whether ims functions work as they should
Note : Only images with levels of gray, r, g or b comprised in 0:255 are
tested.
Last modified: Setembro 2002
Cross-Reference Information
This function calls
Listing of function file tmp_for_tar/imgio/test_ims.m
##
## Check whether ims functions work as they should
##
## Note : Only images with levels of gray, r, g or b comprised in 0:255 are
## tested.
## Author: Etienne Grossmann <etienne@isr.ist.utl.pt>
## Last modified: Setembro 2002
global verbose ;
global ok ;
global cnt ;
ok = 0 ;
cnt = 0 ;
verbose = 1 ;
printf("test_ims : testing image load / save / size functions\n");
function ck( val, str )
global ok ;
global verbose ;
global cnt ;
cnt++ ;
if val,
ok++ ;
printf("ok %i\n",cnt) ;
elseif verbose && nargin >= 2, printf("not ok %i : %s\n",cnt,str) ;
else printf("not ok %i\n",cnt) ;
end
endfunction
function res = ckcode( code, str )
global ok ;
global verbose ;
global cnt ;
cnt++ ;
try
res = eval (code);
ok++ ;
if verbose, printf("ok %i\n",cnt) ; end
catch
if verbose && nargin >= 2, printf("not ok %i : %s\n",cnt,str) ;
elseif verbose printf("not ok %i : eval ( %s ) \n",cnt,code) ;
else printf("not ok %i\n",cnt) ;
end
res = [] ;
end
endfunction
######################################################################
## Make temp dir
tmpdir = "test_ims_tmpdir" ;
mkdir(tmpdir) ;
cd(tmpdir) ;
######################################################################
## Now for the tests
## Image sizes
H = 33 ;
W = 65 ;
pix1 = cos([1:H]/5)'*cos([1:W]/5);
s1 = max ( floor(W/8), floor ((W-1)*rand(1)) + 1 );
s2 = max ( floor(W/4), floor ((W-1)*rand(1)) + 1 );
pix2 = reshape ([pix1;pix1(:,[s1:W,1:s1-1]);pix1(:,[s2:W,1:s2-1])],H,W*3);
pix1 += ones(H,1)*[1:W]/W;
pix1 -= min (pix1(:)) ;
pix1 = floor ( 255.99*(pix1 / max (pix1(:))) );
pix2 += kron (ones(H,1)*[1:W]/W,[1,1,1]) ;
pix2 -= min (pix2(:)) ;
pix2 = floor ( 255.99*(pix2 / max (pix2(:))) );
im1 = struct ("im",pix1,"rgb",0,"maxval",255) ;
im2 = struct ("im",pix2,"rgb",1,"maxval",255) ;
"done"
## ims_show (im2);
ck ( is_ims (im1) , "is_ims (im1)" ) ; # 1
ck ( is_ims (im2) , "is_ims (im2)" ) ; # 2
ck( all (ims_size (im1) == [H,W]) , "ims_size (im1)" ); # 3
ck( all (ims_size (im2) == [H,W]) , "ims_size (im2)" ); # 4
ck( ims_save (im1, "im1.pgm") , "ims_save (im1, 'im1.pgm')"); # 5
ck( ims_save (im1, "im1.ppm") , "ims_save (im1, 'im1.ppm')"); # 6
ck( ims_save (im1, "im1.pnm") , "ims_save (im1, 'im1.pnm')"); # 7
ck( ims_save (im1, "im1.gif") , "ims_save (im1, 'im1.gif')"); # 8
ck( ims_save (im1, "im1.img") , "ims_save (im1, 'im1.img')"); # 9
ck( ims_save (im1, "im1.jpg") , "ims_save (im1, 'im1.jpg')"); # 10
ck( ims_save (im2, "im2.pgm") , "ims_save (im2, 'im2.pgm')"); # 11
ck( ims_save (im2, "im2.ppm") , "ims_save (im2, 'im2.ppm')"); # 12
ck( ims_save (im2, "im2.pnm") , "ims_save (im2, 'im2.pnm')"); # 13
ck( ims_save (im2, "im2.gif") , "ims_save (im2, 'im2.gif')"); # 14
ck( ims_save (im2, "im2.img") , "ims_save (im2, 'im2.img')"); # 15
ck( ims_save (im2, "im2.jpg") , "ims_save (im1, 'im2.jpg')"); # 16
im1pgm = ckcode( "ims_load ('im1.pgm');" ); # 17
im1ppm = ckcode( "ims_load ('im1.ppm');" ); # 18
im1pnm = ckcode( "ims_load ('im1.pnm');" ); # 19
im1gif = ckcode( "ims_load ('im1.gif');" ); # 20
im1img = ckcode( "ims_load ('im1.img');" ); # 21
im1jpg = ckcode( "ims_load ('im1.jpg');" ); # 22
im2pgm = ckcode( "ims_load ('im2.pgm');" ); # 23
im2ppm = ckcode( "ims_load ('im2.ppm');" ); # 24
im2pnm = ckcode( "ims_load ('im2.pnm');" ); # 25
im2gif = ckcode( "ims_load ('im2.gif');" ); # 26
im2img = ckcode( "ims_load ('im2.img');" ); # 27
im2jpg = ckcode( "ims_load ('im2.jpg');" ); # 28
pix1rgb = gray2rgb (pix1) ;
pix2gray = rgb2gray (pix2) ;
ck( all (im1pgm.im(:) == pix1(:)), "does ims_load ('im1.pgm') work?" );
ck( all (im1ppm.im(:) == pix1rgb(:)), "does ims_load ('im1.ppm') work?" );
ck( all (im1pnm.im(:) == pix1(:)), "does ims_load ('im1.pnm') work?" );
ck( all (im1gif.im(:) == pix1(:)), "does ims_load ('im1.gif') work?" );
ck( all (im1img.im(:) == pix1(:)), "does ims_load ('im1.img') work?" );
ck( all (im2pgm.im(:) == pix2gray(:)), "does ims_load ('im2.pgm') work?" );
ck( all (im2ppm.im(:) == pix2(:)), "does ims_load ('im2.ppm') work?" );
ck( all (im2pnm.im(:) == pix2(:)), "does ims_load ('im2.pnm') work?" );
## Gifs seem to be modified ...
## ck( all (im2gif.im(:) == pix2(:)), "does ims_load ('im2.gif') work?" );
ck( all (im2img.im(:) == pix2(:)), "does ims_load ('im2.img') work?" );
# ##########################################
# That's it, no more tests #################
printf("test_ims : %i / %i good tests\n",ok,cnt);
exts = ["pgm";"ppm";"pnm";"gif";"img";"jpg"] ;
for i=1:2,
for j = 1:rows (exts),
file = sprintf ("im%i.%s",i,deblank(exts(j,:)));
## printf("unlinking %s\n",file);
[err,msg] = unlink (file);
if err,
printf("Couldn't remove %s. Remove by hand\n",file);
end
end
end
cd ".." ;
rmdir (tmpdir) ;
Produced by oct2html on Sat Sep 14 9:47:03 2002
Cross-Directory links are: ON