Bonjour,
Je reprends mon projet après une semaine de repos et c’est très dur
Revenons au choses sérieuses, voilà j’ai déjà fini le programme principal il y’a une semaine et je l’ai aussi discuté sur ce forum, maintenant j’ai terminé le traitement qui doit se mettre au cœur du programme et je l’ai mis dans une fonction ‘edge_brut’
La fonction marche très bien pour une seule image mais j’ai un petit souci de la mettre au cœur du programme principal,
La fonction edge_brut donne 4 vecteur de 2000 colonnes comme sorties
Elle doit tourner au sein de la boucle et fournir à la fin des 300 k (tours) : 4 matrices de 2000 colonnes et 300 lignes qu’on doit mettre dans un fichier mat
donc pour chaque fichier d’indice i on doit obtenir (s-d+1) fichiers mat, c’est plus expliquer sur les commentaires de mes programmes
je vous montre dans les programmes ce que j’ai fais, l’essaie étant très long je veux savoir votre avis avant, s’il y a des fautes clair que je peux corriger avant de lancer le programme, j'ai aussi des questions derrière les %%%
merci
programme principal
fonction edge_brut
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 function lire_image choice=menu('Choix du dossier des images suivant le fetch',... {'fetch 2m','fetch 6m','fetch 13m','fetch 26m',... 'Quitter l exécution du programme'}) ; % entrer le choix switch choice case 1 doss_nom = 'Fetch2m'; Fetch=2; n=6;%nombre de dossiers vents d=1;%début de la série s=7;%fin de série case 2 doss_nom = 'Fetch6m'; Fetch=6; n=6;%nombre de dossiers vents d=1;%début de la série s=8;%fin de série case 3 Fetch=13; doss_nom = 'Fetch13m'; n=7;%nnombre de dossiers vents d=1;%début de la série s=8;%fin de série case 4 Fetch=26; doss_nom = sprintf('Fetch26m'); n=6;%nombre de dossiers vents d=0;%début de la série s=9;%fin de série end %%% ce sont les matrices que je veux obtenir à la fin, chaque fichier i %%% doit fournir (s-d+1)fichiers mat et chaque fichier mat doit contenir 4 %%% matrices, j'ai mis en commentaire car je pense que ce n'est pas %%% necessaire de les définir au début, non? % M_C=zeros(300,2000); % M_C_adjus=zeros(300,2000); % M_L=zeros(300,2000); % M_L_adjust=zeros(300,2000); chem='D:\images_manipvent2007\'; chemi=fullfile(chem,doss_nom);%D:\images_manipvent2007\Fetch<Fetch>m for i=1:n %D:\images_manipvent2007\Fetch<Fetch>m\Fetch<Fetch>-1 à n chemin=fullfile(chemi,sprintf('%s-%d',doss_nom,i)); %cd(chemin); for j=d:s for k=0:299 %Construction du nom de fichier : %f<Fetch sur 2 digits>v<i><j><k sur 4 digits> nomfichier = sprintf('f%02dv%01d%01d%04d.tif',Fetch,i,j,k); %Nom complet avec le répertoire : nomcomplet = fullfile(chemin,nomfichier); if exist(nomcomplet,'file') edge_brut(nomcomplet); %%%je ne sais pas si l'enregistrement dans les matrices est %%%juste? M_C(k+1,:)=ind_nonadjust; M_C_adjust(k+1,:)=L_nonadjust; M_L(k+1,:)=ind_adjust; M_L_adjust(k+1,:)=L_adjust; end end %%% c'est la ou je définis (et je veux crée)le .mat et je veux %%% enregistrer les 4 matrices dedans mais je ne sais pas si c %%% juste?? cd('dossier_registres'); nom_registre=sprintf('f%02dv%01d%01db.mat',Fetch,i,j); save nom_registre M_C M_C_adjust M_L M_L_adjust cd .. end end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 function [output]=edge_brut(nomcomplet) %%% la definition de la fonction, on peut ne rien mettre dans output?? %définition de mes vecteurs contour et luminosité ind_nonadjust=[]; ind1=[]; L_nonadjust=[]; ind_adjust=[]; ind4=[]; L_adjust=[];ind=[]; I=imread([nomcomplet]);%lecture du fichier [l,c]=size(I);%taille II=double(I); I1=edge(II,'canny',0.1,1);%canny sans ajustement I2=imadjust(I,[0 0.5],[],1); % j'ajuste le contraste de l'image I3=double(I2); % une image est en uint8, je la passe en real I4=edge(I3,'canny',0.1,1);%canny avec ajustement %tester si'image existe ou "not an image" if I(1,1)~= 0; for j=1:2000; ind=639;L=0; ind_nonadjust=[ind_nonadjust ind]; L_nonadjust=[L_nonadjust L]; ind_adjust=[ind_adjust ind]; L_adjust=[L_adjust L]; end else for j=1:c; % je lis l'image colonne par colonne % je cherche l'indice du premier pixel qui a la valeur 1 %je stocke mes indices de coontour ensuite jextrait la luminosité %correspondante ind1=find(I1(:,j)==1,1); if isempty(ind1)==1; ind1=1; end; ind_nonadjust=[ind_nonadjust l-ind1]; L_nonadjust=[L_nonadjust I(ind1,j)]; ind4=find(I4(:,j)==1,1); if isempty(ind4)==1; ind4=1; end; ind_adjust=[ind_adjust l-ind4]; L_adjust=[L_adjust I(ind4,j)]; end; end cd .. %%% ce sont mes sorties en vecteurs (quand on fait le lien avec le programme %%% principale, ce sont les vecteurs pour k donné) ind_nonadjust(k); L_nonadjust(k); ind_adjust(k); L_adjust(k); %%%j'ai fait les plot juste pour vérifier les sorties % X=1:2000; % plot(X,ind_nonadjust,'g'); % hold on % plot(X,L_nonadjust,'y'); % % plot(X,ind_adjust,'m'); % hold on % plot(X,L_adjust,'b');
Partager