test_zoom_3D.m

E. Koenig, 08/04/2010

Augmentation of information of a scale invariant 3D field by a factor N. The initial 3D field is created by a compound Poisson cascade (CPC) fractionally integrated. Its scale invariance properties are known as

The variance and mean of this initial 3D field are modified by the parameters alpha and I_0 respectively. The initial field is of the form

where I is the initial field, Q is the CPC, < Q > is the mean of the cascade and the operator I_H stands for the pseudo-fractional integration of parameter H.

The augmentation of information by a factor N is performed as the succession of log2(N) elementary augmentations by a factor 2.

This test code uses the functions:

Contents

Main code

Parameters

parameters used to create the initial field

X = 31;     % we choose to create a cubic 3D field of size X^3
r_min = 1/X;    % finest resolution of the 3D field
dx = 1/X;   % sampling rate, this is the same in every direction
L = 1;  % highest resolution of the 3D field
law = 3;  % distribution law used to impose the desired scale
          % invariance properties of the 3D field
param = [0.1 0 0.5]; % law parameters
pattern = 2;  % pattern of the field
angle = 0;  % use of a non variable angle
seed_in = 0;  % initial seed used for the random drafts

H = 0.7;    % parameter for the pseudo-fractional integration used to smooth
            % the field

alpha_ref = 8;  % parameter used to modify the variance of the field
I_0_ref = 23;   % parameter used to modify the mean of the field

N = 2;  % number of successive elementary augmentations by a factor 2

Synthesis of scale invariant 3D field

creation of the compound Poisson cascade (CPC) with prescribed scale invariance properties

[Q seed_out] = cpc_3D(L, L, L, r_min, dx, law, param, pattern, angle, seed_in);
seed_in = seed_out;
Q = reshape(Q, X+1, X+1, X+1);
% modification of the CPC and pseudo-fractional integration
Q = alpha_ref.*(Q-mean(Q(:)));
I_0 = I_0_ref + integfrac3D(Q, H);

clear Q

Augmentation procedure

tic;

for n = 1:N
    fprintf(1,'Augmentation of the initial field by a factor %d\n', 2^n);
    eval(['[I_',int2str(n),', seed_out] = zoom_x2_3D(I_',int2str(n-1),', law, param, H, 0, 0, seed_in);']);
    seed_in = seed_out;
end

toc
Augmentation of the initial field by a factor 2
Augmentation of the initial field by a factor 4
Elapsed time is 9.692469 seconds.

Visualisation using Matlab

fprintf(1,'Visualisation using Matlab\n');

for n = 0:N
    eval(['[x y z] = meshgrid(1:size(I_',int2str(n),',1), 1:size(I_',int2str(n),',2), 1:size(I_',int2str(n),',3));']);
    figure
    eval(['p=patch(isosurface(x, y, z, I_',int2str(n),', mean(I_0(:))/2^(3*n)));']);
    eval(['isonormals(x, y, z, I_',int2str(n),', p);']);
    set(p,'FaceColor','red','EdgeColor','none');
    daspect([1,1,1]);
    view(3);
    axis tight
    camlight
    lighting phong
    eval(['print -dpng images/I_', int2str(n),'_Matlab']);
end
Visualisation using Matlab

Script for a visualisation using Marching Cubes

Write the correct .dat file to be used for a visualization using Marching Cubes.

To use our visualization method :

 cd ../Visualization/
 ./champ_Mac ../Test/images/I_1.dat 10
fprintf(1,'Script for a visualisation using Marching Cubes\n');

for n=0:N
    eval(['I_write = (I_',int2str(n),'-min(I_',int2str(n),'(:)))/(max(I_',int2str(n),'(:))-min(I_',int2str(n),'(:)));']);
    eval(['f = fopen(''images/I_',int2str(n),'.dat'', ''wt'');']);
    eval(['S = size(I_',int2str(n),');']);
    fprintf(f, '%d %d %d\n', S(1), S(2), S(3));
    for x=1:S(1)
      for y=1:S(2)
          for z=1:S(3)
              fprintf(f, '%f\n', I_write(x,y,z));
          end
      end
    end
    fclose(f);
end
Script for a visualisation using Marching Cubes