[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