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
| TYPE Tr_W = ARRAY[1..3] OF Word;
Tab_TW = ARRAY[0..Nmax_TW, 0..Nmax_TW] OF Tr_W;
Tr_R = ARRAY[1..3] OF Reel;
VAR Cmax: Tr_W; Mat_PW: Tab_TW;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Calcul de la norme du gradient local pour chaque couleur
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
FUNCTION N_Grad(x, y: Z_32; VAR W_: Tr_W; VAR Ma1: Tab_Pix): Tr_W;
VAR i: Byte; Gx2, Gy2, S1, S2: Z_32; Ng, Wm: Tr_W;
BEGIN
Wm:= W_;
FOR i:= 1 TO 3 DO
BEGIN
S1:= 2 * Ma1[x + 1, y][i];
Inc(S1, Ma1[x + 1, y + 1][i]); Inc(S1, Ma1[x + 1, y - 1][i]);
S2:= 2 * Ma1[x - 1, y][i];
Inc(S2, Ma1[x - 1, y + 1][i]); Inc(S2, Ma1[x - 1, y - 1][i]);
Gx2:= Sqr(S1 - S2);
S1:= 2 * Ma1[x, y + 1][i];
Inc(S1, Ma1[x + 1, y + 1][i]); Inc(S1, Ma1[x - 1, y + 1][i]);
S2:= 2 * Ma1[x, y - 1][i];
Inc(S2, Ma1[x + 1, y - 1][i]); Inc(S2, Ma1[x - 1, y - 1][i]);
Gy2:= Sqr(S1 - S2);
Ng[i]:= Round(Sqrt(Gx2 + Gy2));
IF (Wm[i]<Ng[i]) THEN Wm[i]:= Ng[i]
END;
W_:= Wm; Result:= Ng
END;
(*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
Calcul de la norme du gradient local pour chaque couleur
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*)
PROCEDURE Aff_CmS;
CONST o = 9;
BEGIN
E(0015); Wt(5, 40, 'Cmax = ');
E(0010); Write(Cmax[1]:o, Cmax[2]:o, Cmax[3]:o);
E(0015); Write(' ':o, 'Seuil = ');
E(0012); Write(Seuil:o)
END;
PROCEDURE Calc_Mat_PW(La, Ha: Z_32; VAR C_m: Tr_W; VAR Ma_: Tab_TW);
CONST Pcoul: Tr_W = (0, 255, 255); P000: Tr_W = (0, 0, 0);
VAR Xm, Ym: Z_32; Wmax: Tr_W; TestX, TestY: Bool;
BEGIN
Wmax:= P000;
FOR Xm:= 0 TO (La - 1) DO
BEGIN
TestX:= (Xm=0) OR (Xm=(La - 1));
FOR Ym:= 0 TO (Ha - 1) DO
BEGIN
TestY:= (Ym=0) OR (Ym=(Ha - 1));
IF (TestX OR TestY) THEN Ma_[Xm, Ym]:= Pcoul
ELSE Ma_[Xm, Ym]:= N_Grad(Xm, Ym, Wmax,
Matrice_1)
END
END;
C_m:= Wmax; Aff_CmS
END; |
Partager