% synthese = f ( image , 0 pour normal-1 pour denoise-2 pour etaler le % contraste , type de calcul(gradient*ed*d=grdt, edginess=ed*d ou rien), % then for the plot of the energie 'on' otherwise 'no', step) function Image_contours = synthese(J, a, type, energie, step) % Les differents handles ed = @edginess; cons = @byaverage; n = @norme; tr = @trace_ed; bds = @boundaries; m = @matrice_R_G; moy = @moyenne; fll2 = @piece_fill2; masart = @m_and_s_artefact; grad = @ged; meansq = @msd; ekl = @energie_k_lambda; link = @relier; affich = @affichage; pe = @premiers_essais; ekl2 = @energie_k_lambda2; affich2 = @affichage2; %Creation des matrices R et G a partir de l'image [R, D, G, l, c, N] = feval(m, J, a); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if type == 'ed*d' % SANS LE GRADIENT % Trace de la courbe log de d*e et de d*e*grad en fonction des points (i,j) % en prennant garde a les classer par ordre decroissant %courbe = feval(tr, R, l, c); % Mieux mais un peu lent, on prend un certain nombre nb [courben2,E,t, Memoire_contour, Memoire_fill] = feval(ekl2, N, R, l, c, energie, step); % x, y, IX, % maintenant on "fill" la figure obtenue [Image_contour,Image_fill] = feval(affich2,E,t,l,c,N,10^(-6),Memoire_contour, Memoire_fill,'no', 'on'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% elseif type == 'grdt' % Tout pareil mais avec le GRADIENT % PLOT AVEC LE GRADIENT %courbe = feval(tr, R, l, c); %Boudaries avec le GRADIENT %Image_finale_ged = feval(bds, l, c, N, G, 1*10^(-5)); % Energie avec le gradient [courben2_ged,E_ged,t,Memoire_contour,Memoire_fill] = feval(ekl2, N, G, l, c, energie, step); % maintenant on "fill" la figure obtenue [Image_contour,Image_fill] = feval(affich2,E_ged,t,l,c,N,10^(-7),Memoire_contour,Memoire_fill,'no','on'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% elseif type == 'rien' % enfin on extrait l'image souhaitee %[Matrice_contours,Matrice_contours_couleurs] = feval(bds, l, c, N, R, 0.0000025,'on'); % On est parti pour minimiser en agrandissant les carres a chaque fois [image_piece, courbe] = feval(masart, l, c, N, 2,0.00015); % On rempli comme on peut avec un programme perilleux mais finalement % genial %Image_fill2 = feval(fll2, l, c, N, 0.00001); % Pour le rapport on a besoin des figures preliminaires %[Matrice_contours,Matrice_contours_couleur] = feval(pe, l, c, N, R, D, G, 0.0001, 'on'); % On va essayer notre edges-link program %matrice_edge_relie = feval(link, Matrice_contours,Matrice_contours_couleurs, l, c,'on'); %matrice_edge_relie_double = feval(link, matrice_edge_relie,Matrice_contours_couleurs, l, c,'on'); % Trace de la courbe log de d*e et de d*e*grad en fonction des points (i,j) % en prennant garde a les classer par ordre decroissant %courbe = feval(tr, R, l, c); end