Correction TP transport optimal


/// Transport 1D

function [iX,iY] = transport1D(X,Y)
 [Xs,iX] = gsort(X,'g','i'); // on a Xs = X(iX)
 [Ys,iY] = gsort(Y,'g','i');
endfunction


// Calcule l'assignent en 2D et evalue le coût total du transport

function [Z,c]=transport2D(X,Y,N,e) 
// X et Y deux nuages de points en 2D ; matrice 2 colonnes et n lignes. La fonction renvoie un nuage de points Z qui est obtenu par déplacement de X vers les points de Y.
 
  theta = %pi/2*(2*rand(N,1)-1);
  Z=X;
  for k=1:N
    utheta = [cos(theta(k));sin(theta(k))];
    Zt = Z*utheta;
    Yt = Y*utheta;
    [iZ,iY] = transport1D(Zt,Yt);
    Z(iZ,:) = Z(iZ,:)+e*(Yt(iY)-Zt(iZ))*utheta';
    D=sqrt(sum((Z(iZ,:)-Y(iY,:)).^2,2));
   if (max(D)<1D-05) then
      mprintf('stop a k=%d\n',k);
      break;
    end
  end
 c = sum(sum((X(iZ,:)-Y(iY,:)).^2,2))
endfunction



Correction TP Edition d’images

  • Correction pour le TP Edition d’images
  • ////////////////////////////////////////////////////////////////////
    // Function COLOR_POISSON 
    // Take two color images u and v and a binary mask. The image //v is assumed to be smaller than u. First a subimage of u 
    // with the size of v is extracted at (x,y). Then, we copy the // part of v corresponding to the mask to this subimage of u, // and then u is reformed. 
    // Author : Julie Delon, 2015. 
    ////////////////////////////////////////////////////////////////////
    
    // Input parameters 
    // - image u (large image)
    // - image v (small image with portion to be copied in u)
    // - mask (binary mask)
    // - (x,y) integers, position in u where a portion of v must 
    // be copied
    
    // Output :
    // - image out containing u and a portion of v cloned by 
    // Poisson Editing
    
    function out = color_poisson(u, v, mask, x, y, niter)
     [nr,nc] = size(v(:,:,1));
     ucrop = u(x:x+nr-1,y:y+nc-1,:); 
    
     for i = 1:3
     tmp(:,:,i) = poisson(ucrop(:,:,i),v(:,:,i),mask,niter);
     end
    
     out = u;
     out(x:x+nr-1,y:y+nc-1,:) = tmp;
     out = max(min(out,255),0);
    
    endfunction
    
    // Poisson editing for gray level images
    function out = poisson(u, v, mask, niter)
    
     f = u.*(1-mask) + v.*mask;
     K=[0,1,0;1,0,1;0,1,0];
     lapv = laplacien(v);
     
     for k = 1:niter
     Kf = conv2(f,K,'same');
     f(mask) = 1/4*(Kf(mask) + lapv(mask));
     end
    
     out = f;
    endfunction
    
    // Compute the laplacian of an image u
    function lap = laplacien(u)
    
     [ud,ub,ug,uh] = imdiff(u);
     lap = ud + ub + ug + uh;
    
    endfunction
    
    
    function [ud,ub,ug,uh] = imdiff(u)
    
     Kd = [ 0,1, -1 ];
     Kb = [ 0;1; -1 ];
     Kg = [ -1,1, 0 ];
     Kh = [ -1;1; 0 ];
    
     ud = conv2(u,Kd,'same');
     ub = conv2(u,Kb,'same');
     ug = conv2(u,Kg,'same');
     uh = conv2(u,Kh,'same');
    
    endfunction

Comment venir ?

Mon bureau se trouve au 7ème étage du centre universitaire des Saints-Pères.

  1. Se rendre au 45 rue des Saints-Pères, Paris 6ème (métro “St-Germain des Prés”).
  2. Entrer dans le bâtiment par l’entrée principale.
  3. Poursuivre dans le hall puis à droite. Il y a deux ascenseurs sur la gauche, de chaque côté de l’escalier.
  4. Prendre l’ascenseur jusqu’au 7ème étage (ou les escaliers si vous êtes sportif.ve ou si les ascenseurs ne fonctionnent pas…).
  5. A la sortie de l’ascenseur prendre à droite (pour les escaliers, prendre à gauche une fois arrivé au 7ème étage).
  6. Entrer dans le couloir “Matématologie” et aller tout au bout du couloir. Prendre la dernière porte à gauche pour entrer dans l’aile Turing. Mon bureau est au fond à gauche (bureau 752).

Si vous cherchez la salle du conseil, elle est à droite dans le même couloir (avant dernière porte).