Bonjour,
J'utilise Guide de Matlab, j'ouvre une image que j'affiche ensuite. Je peux également ouvrir plusieurs images de même taille, en faire la moyenne, afficher cette image moyenne.
Le problème c'est que l'image est traitée dans une autre fonction et lorsque je prends une liste d'images, l'image moyenne est nulle dans la seconde fonction ou est effectué le traitement d'images.

Voici la partie du code qui me permet d'ouvrir une ou plusieurs images, d'en faire la moyenne et de l'afficher.


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
 
%-------- Ouverture de l'image 1
 
    if (ischar(FileName)==0)  %Liste d'images
        Name=FileName{1,1}
 
        suffixe = Name(length(Name)-2:length(Name))
        clear I;clear image1;
 
        if (suffixe == 'dcm')
            for k=1:length(FileName(1,:))
                a=[dir1,FileName{1,k}]
                I(:,:,k)=dicomread(a);
            end;
 
            I=mean(I,3);
 
        elseif (suffixe == 'bmp')
 
            for k=1:length(FileName(1,:))
                a=[dir1,FileName{1,k}]
                I(:,:,k)=imread(a);
            end;
 
            I=mean(I,3);
 
        end;
 
 
 
    elseif(ischar(FileName))
 
        suffixe = FileName(length(FileName)-2:length(FileName))
        length(FileName)
 
        if (suffixe=='dcm')
            a=[dir1,FileName]
            I=dicomread(a);
 
        elseif (suffixe=='bmp')
            a=[dir1,FileName]
            I=imread(a);
 
        end;
    end;
    axes(handles.axes1);
    imshow(I,[]);
 
    image1 = I;
Et voici le bout de code qui me permet de traiter les images:

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
 
function pushbutton1_Callback(hObject, eventdata, handles)
 
global I nbr_pixels_mort dark hot def nbr_colonnes nbr_lignes
 
global image1
 
% init
 
 
I=image1;
whos
 
if (sum(I)~=0)
    row_size=length(I(:,1))
    line_size=length(I(1,:))
    Result=zeros(row_size,line_size);
 
elseif(sum(J)~=0)
    row_size=length(J(:,1))
    line_size=length(J(1,:))
    Result=zeros(row_size,line_size);
 
elseif(sum(K)~=0)
    row_size=length(K(:,1))
    line_size=length(K(1,:))
    Result=zeros(row_size,line_size);
 
end;
 
 
if (sum(I)~=0)
 
    SDinf  = std2(I);
    MOYinf = mean2(I);
    seuil_sup = MOYinf + 6*SDinf;
 
    Result2 = 1*(I>seuil_sup);
    hot  = sum(sum(Result2))
 
elseif(sum(I)==0)
        Result2 = zeros(row_size,line_size);
        hot  = 0
 
end;
Ceci marche très bien quand on sélectionne une seule image, mais lorsqu'une liste d'images est sélectionnée image1 = []. Je ne comprend pas pourquoi !

Pouvez-vous m'aider svp ??
Merci d'avance.