Milan_balloon.m
上传用户:zlding2008
上传日期:2013-05-13
资源大小:1914k
文件大小:2k
源码类别:

2D图形编程

开发平台:

Matlab

  1. % EXAMPLE     an example of balloon model on the room object       
  2. %
  3. %   Chenyang Xu and Jerry Prince 6/17/97
  4. %   Copyright (c) 1996-97 by Chenyang Xu and Jerry Prince
  5.    cd ..;   s = cd;   s = [s, '/snake']; path(s, path); cd examples;
  6.    
  7.    help balloon_ex;
  8.    % Read in the 64x64 room image
  9.      [I,map] = rawread('../images/Milan-test.pgm');  
  10.      
  11.    % Compute its edge map
  12.      disp(' Compute edge map ...');
  13.      f = 1 - I/255; 
  14.      f0 = gaussianBlur(f,1);
  15.      % note: snake potential is the negative of edge map
  16.      disp(' Comute the traditional external force ...');
  17.      [px,py] = gradient(f0);
  18.    % display the results
  19.      figure(1); 
  20.      subplot(121); imdisp(-f); title('snake potential');
  21.      subplot(122); quiver(px,py); 
  22.      axis('square', 'equal', 'off', 'ij');     % fix the axis 
  23.      title('traditional force');
  24.        
  25.    % balloon deformation
  26.      disp(' ');
  27.      disp(' Press any key to start the deformation');
  28.      pause;
  29.      figure(1); subplot(121); cla; 
  30.      colormap(gray(64)); image(((1-f)+1)*40); axis('square', 'equal', 'off');
  31.      t = 0:0.5:6.28;
  32.      x = 25 + 8*cos(t);
  33.      y = 32 + 8*sin(t);
  34.      [x,y] = snakeinterp(x,y,2,0.5);
  35.      snakedisp(x,y,'r') 
  36.      pause(1);
  37.      for i=1:15,
  38.        [x,y] = snakedeform2(x,y,0.05,0,1, 2, 0.15,px,py,5);
  39.        [x,y] = snakeinterp(x,y,2,0.5);
  40.        snakedisp(x,y,'r') 
  41.        title(['Deformation in progress,  iter = ' num2str(i*5)])
  42.        pause(0.5);
  43.      end
  44.      disp(' ');
  45.      disp(' Press any key to display the final result');
  46.      pause;
  47.      figure(1); subplot(121); cla; 
  48.      colormap(gray(64)); image(((1-f)+1)*40); axis('square', 'equal', 'off');
  49.      snakedisp(x,y,'r'); 
  50.      title(['Final result,  iter = ' num2str(i*5)]);
  51.