]> AND Private Git Repository - these_gilles.git/blob - THESE/codes/snake/gvf_dist_v4.2c/examples/tradition_ex.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
37e6cc5630c0ba5b4d44f75dcf3f2369819a6b86
[these_gilles.git] / THESE / codes / snake / gvf_dist_v4.2c / examples / tradition_ex.m
1 % EXAMPLE     an example of traditional snake on U-shape image
2 %
3
4 %   Chenyang Xu and Jerry Prince 6/17/97
5 %   Copyright (c) 1996-97 by Chenyang Xu and Jerry Prince
6
7    cd ..;   s = cd;   s = [s, '/snake']; path(s, path); cd examples;
8    
9    help tradition_ex;
10    % ==== Example 1: U-shape object ====
11
12    % Read in the 64x64 U-shape image
13      %[I,map] = rawread('../images/cochon64.pgm');  
14      I = imread('../images/cochon128.pgm');
15    % Compute its edge map, 
16      disp(' Compute edge map ...');
17      f = 1 - I/255; 
18      f0 = gaussianBlur(f,1);
19      % note: snake potential is the negative of edge map
20      disp(' Comute the traditional external force ...');
21      [px,py] = gradient(f0);
22
23    % display the results
24      figure(1); 
25      subplot(121); imdisp(-f); title('snake potential');
26      subplot(122); quiver(px,py); 
27      axis('square', 'equal', 'off', 'ij');     % fix the axis 
28      title('traditional force');
29
30    % snake deformation
31      disp(' ');
32      disp(' Press any key to start the deformation');
33      pause;
34      figure(1); subplot(121); cla;
35      colormap(gray(64)); image(((1-f)+1)*40); 
36      axis('square', 'equal', 'off');
37      disp('');
38      disp('... Now capture range is small, use closer initialization.')
39      t = 0:0.05:6.28;
40      x = 64 + 60*cos(t);  
41      y = 64 + 60*sin(t);
42      [x,y] = snakeinterp(x,y,2,0.5);
43      snakedisp(x,y,'r') 
44      pause(1);
45
46      disp('... Press <CTRL>-C to stop the program at any time.');
47      for i=1:100,
48        [x,y] = snakedeform(x,y,5,0,0.1,5,px,py,5);
49        [x,y] = snakeinterp(x,y,2,0.5);
50        snakedisp(x,y,'r') 
51        title(['Deformation in progress,  iter = ' num2str(i*5)])
52        pause(0.5);
53      end
54
55      disp(' ');
56      disp(' Press any key to display the final result');
57      pause;
58      figure(2); clf; 
59      colormap(gray(64)); image(((1-f)+1)*40); axis equal
60      snakedisp(x,y,'r') 
61      title(['Final result,  iter = ' num2str(i*5)]);