Bonjour tout le monde

J'ai un petit problème concernant le codage rle appliqué sur une image en niveaux de gris, en parcourant la matrice de l'image , le résultat de la compression Run Lenght encoding est eronné (après qu'il donne un bon résultat sur la première ligne, il le stocke dans un tableau à deux dimensions mais dès qu'il passe à la deuxième ligne de la matrice, il ne donne pas un bon résultat peut-être le probleme réside dans les indices) et je ne sais pas pourquoi .

le programme que je poste est un exemple de mon travail appliqué sur une matrice que j'ai créée
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
clear;
c=0;
m=1;
n=1;
d=0;
 
 
a=zeros(2,8);
a(1,1)=5;
a(1,2)=5;
a(1,3)=5;
a(1,4)=2;
a(1,5)=2;
a(1,6)=3;
a(1,7)=6;
a(1,8)=4;
 
 
a(2,1)=4;
a(2,2)=4;
a(2,3)=4;
a(2,4)=9;
a(2,5)=9;
a(2,6)=9;
a(2,7)=7;
a(2,8)=7;
 
 
s=size(a);
z=1;
i=1;
while i<=s(1)
 
    k=z;
    c=0;
    j=1;
    while j<=s(2)
        if(a(i,k)==a(i,j) )
            c=c+1;
        else
 
            b(n,m)=c;
 
            b(n,m+1)=a(i,k);
            k=j;
 
            %j=j-2;
            %k
            % j
            n=n+1;
            m=1;
            c=1;
            %                  if k==s(2)
            %                       b(n,m)=c;
            %                  b(n,m+1)=a(i,k);
            %                  n=n+1;
            %                  m=1;
 
            % end
        end
        %           if (j==s(2))
        %                b(n,m)=c;
        %                b(n,m+1)=a(i,k);
        %                n=n+1;
        %                 m=1;
 
        %           end
        if (j==s(2) & i<s(1))
            z=1;
            k=1;
            while (a(i,j)==a(i+1,z))
                c=c+1;
                z=z+1;
            end
            b(n,m)=c;
            b(n,m+1)=a(i,k);
            n=n+1;
            m=1;
 
        end
        if (j==s(2) & i==s(1))
            b(n,m)=c;
            b(n,m+1)=a(i,k);
            n=n+1;
            m=1;
        end
        j=j+1;
    end
    i=i+1;
end%while1
z
d
display(a)
b
length(a)
Mes amis , toutes vos propositions seront les bienvenues , vous pouvez me suggérer d'autres programmes si vous voulez ou bien travailler sur le mien