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
| PROCEDURE Aff_G(Np: Z_32);
CONST C1 = 11; L1 = 19; L2 = L1 + 2; o = 7;
BEGIN
E(0015); Wt(C1, L1, 'Nombre de valeurs locales calcules: Nv = ');
E(0010); Write(Np:7); E(0002); Write((Larg_Image * Haut_Image):(2*o));
E(0015); Wt(C1, L2, 'Valeur maximale: Smax = ');
E(0012); Write(Smax:o); A_
END;
PROCEDURE Calc_Grille(La, Ha, Rd: Z_32; VAR K_p, K_m: Z_32; VAR G_: Tab_P);
VAR i, j, Kp, Km, s, x, X1, y, Y1: Z_32; Tx, Ty: Bool;
BEGIN
Kp:= 0; Km:= 0;
FOR x:= 0 TO (La - 1) DO
FOR y:= 0 TO (Ha - 1) DO
BEGIN
s:= 0; We(69, 19, x, 5);
FOR i:= -Rd TO Rd DO
FOR j:= -Rd TO Rd DO
BEGIN
X1:= x + i; Y1:= y + j;
Tx:= ((0<=X1) AND (X1<La));
Ty:= ((0<=Y1) AND (Y1<Ha));
IF (Tx AND Ty) THEN Inc(s, Coeff[i, j] * Grille[X1, Y1].u);
END;
Inc(Kp); IF (Km<s) THEN Km:= s; G_[x, y].w:= s
END;
K_p:= Kp; K_m:= Km
END;
PROCEDURE Calc_Coeff(Rd: Z_32; VAR C_: Tab_C);
VAR i, j, J2, s, t, u: Z_32;
BEGIN
FOR i:= -RdMax TO RdMax DO
BEGIN
s:= Sqr(Rd); Dec(s, Sqr(i));
FOR j:= -RdMax TO RdMax DO BEGIN
J2:= Sqr(j); t:= s - J2;
IF (t<0) THEN u:= 0
ELSE u:= t;
C_[i, j]:= u
END
END
END;
PROCEDURE Aff_DmRa;
CONST C1 = 11; C2 = C1 + 42; L1 = 15; L2 = L1 + 2;
BEGIN
F(1, L1 - 1, 80, L1 + 7, 2); E(0015);
Wt(C1, L1, 'Distance moyenne entre les points: Dmoy = ');
E(0012); Write(D_Moy:7:3);
E(0015); Wt(C1, L2, 'Rayon du disque (<= ');
E(0012); Write(RdMax:2); E(0015); Write(' ): Rdisc = ');
E(0008);
REPEAT
GotoXY(C2, L2); ClrEol; Read(Rdisq)
UNTIL (Rdisq<=RdMax);
E(0010); We(C2, L2, Rdisq, 7)
END;
PROCEDURE CalcDm(La, Ha, Np: Z_32; VAR D_: Reel);
VAR Ac: Word; p, q, r: Reel;
BEGIN
p:= La * Ha; q:= p / Np; r:= Sqrt(q); D_:= r;
END;
PROCEDURE Transf_LG(VAR Nu: LstVe2D);
VAR k: Word; i, j: Z_32;
BEGIN
FOR k:= 1 TO NmaxP DO BEGIN
i:= Nu[k].x; j:= Nu[k].y;
Inc(Grille[i, j].u)
END
END;
PROCEDURE ZeroG(VAR G_: Tab_P);
CONST Pzero: PaireBL = (u:0; w:0);
VAR i, j: Word;
BEGIN
FOR i:= 0 TO DimMax DO
BEGIN
FOR j:= 0 TO DimMax DO G_[i, j]:= Pzero
END
END;
PROCEDURE P2;
VAR Npix: Z_32;
BEGIN
ZeroG(Grille); Transf_LG(Nuage);
CalcDm(Larg_Image, Haut_Image, N_Point, D_Moy);
Aff_DmRa; Calc_Coeff(Rdisq, Coeff);
Calc_Grille(Larg_Image, Haut_Image, Rdisq, Npix, Smax, Grille);
Aff_G(Npix)
END; |
Partager