Bsr à tous
j'ai trouver un code source en matlab qui fait le filtre de deriche, le voici:
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
 
function result = deriche(img, alpha, method)
 
if nargin < 2
   alpha = 1.0 
 end
 
 if nargin < 3
   method = 0
 end
 
    a   =  -(1-exp(-alpha))^2;
    b1 =  -2*exp(-alpha);
   b2 = exp(-2*alpha);
   a0 = -alpha / (1 - alpha * b1 - b2);
   a1 = a0 * (alpha-1)*exp(-alpha);
 a2 = a1 - a0 * b1;
    a3 = -a0 * b2;
 
  [m,n] = size(img);
 
   g_v1 = zeros(n,m);
   g_v2 = zeros(n,m);
   g_h1 = zeros(n,m);
   g_h2 = zeros(n,m);
  g_hv = zeros(n,m);
   result = zeros(n,m,2);
 
 for k=3:m
    g_v1(:,k) = img(:, k-1) - b1 * g_v1(:,k-1)- b2 * g_v1(:,k-2);
 end;
 
   for k=m-2:-1:1
     g_v2(:,k) = img(:, k+1) - b1 * g_v2(:,k+1)- b2 * g_v2(:,k+2);
   end;
 
  g_hv = a * (g_v1 - g_v2);
 
    for k=3:n
      g_h1(k,:) = a0 * g_hv(k,:) + a1 * g_hv(k-1,:) - b1 *  g_h1(k-1,:) - b2 * g_h1(k-2,:);
  end;
  for k=n-2:-1:1
      g_h1(k,:) = a2 * g_hv(k+1,:) + a3 * g_hv(k+2,:) - b1 *  g_h2(k+1,:) - b2 * g_h2(k+2,:);
   end;
 
 result(:,:,1) = g_h1 + g_h2;
 
  for k=3:n
    g_v1(k,:) = img(k-1,:) - b1 * g_v1(k-1,:)- b2 * g_v1(k-2,:);
   end;
 
   for k=n-2:-1:1
     g_v2(k,:) = img(k+1,:) - b1 * g_v2(k+1,:)- b2 * g_v2(k+2,:);
   end;
 
   g_hv = a * (g_v1 - g_v2);
 
    for k=3:m
     g_h1(:,k) = a0 * g_hv(:,k) + a1 * g_hv(:,k-1) - b1 *  g_h1(:,k-1) - b2 * g_h1(:,k-2);
   end;
  for k=m-2:-1:1
     g_h1(:,k) = a2 * g_hv(:,k+1) + a3 * g_hv(:,k+2) - b1 *  g_h2(:,k+1) - b2 * g_h2(:,k+2);
   end;
 
 result(:,:,2) = g_h1 + g_h2;
 
 if (method == 0)
  result = sqrt(result(:,:,1).*result(:,:,1)+result(:,:,2).*result(:,:,2));
 end
mais j'arrive pas à l'executer.
pouvez vous savoir d'ou proviens le problème ( c'est urgent);
Merci