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 96 97 98 99 100 101 102 103 104
| #include<stdio.h>
#include<math.h>
/* prototypes des fonctions crées /*/
double inverse_f(double,double, double);
double position_reelle(double, double, double);
double ecart_pixel(double,double);
int main()
{
double p1_reel,p2_reel,p3_reel,p4_reel,p5_reel,p6_reel,p7_reel,p8_reel,p9_reel,p10_reel,p11_reel,p12_reel,p13_reel,p14_reel,p15_reel,p16_reel;
double p1_pixel,p2_pixel,p3_pixel,p4_pixel,p5_pixel,p6_pixel,p7_pixel,p8_pixel,p9_pixel,p10_pixel,p11_pixel,p12_pixel,p13_pixel,p14_pixel,p15_pixel,p16_pixel;
double p1_mesure,p2_mesure,p3_mesure,p4_mesure,p5_mesure,p6_mesure,p7_mesure,p8_mesure,p9_mesure,p10_mesure,p11_mesure,p12_mesure,p13_mesure,p14_mesure,p15_mesure,p16_mesure;
double Pi=3.14159265359;
double phi0 = -Pi/3.96105; /* Valeur optimale 3.96105 */
double phi1 = Pi/3.96105;
double somme_ecart_pixel;
/* position des traits de la mire (colonne) */
p1_mesure = 3;
p2_mesure = 23;
p3_mesure = 41;
p4_mesure = 58;
p5_mesure = 74;
p6_mesure = 90;
p7_mesure = 105;
p8_mesure = 120;
p9_mesure = 135;
p10_mesure = 150;
p11_mesure = 165;
p12_mesure = 180;
p13_mesure = 196;
p14_mesure = 213;
p15_mesure = 231;
p16_mesure = 251;
/* position reelle ( je cherche la position d'un pixel dans l'espace reel )*/
p1_reel = position_reelle(1,phi0,phi1);
p2_reel = position_reelle(2, phi0,phi1);
p3_reel = position_reelle(3, phi0, phi1);
p4_reel = position_reelle(4, phi0, phi1);
p5_reel = position_reelle(5, phi0, phi1);
p6_reel = position_reelle(6, phi0, phi1);
p7_reel = position_reelle(7, phi0, phi1);
p8_reel = position_reelle(8, phi0, phi1);
p9_reel = position_reelle(9,phi0, phi1);
p10_reel = position_reelle(10, phi0, phi1);
p11_reel = position_reelle(11, phi0, phi1);
p12_reel = position_reelle(12, phi0, phi1);
p13_reel = position_reelle(13, phi0, phi1);
p14_reel = position_reelle(14, phi0, phi1);
p15_reel = position_reelle(15, phi0, phi1);
p16_reel = position_reelle(16, phi0, phi1);
/* position des pixels (il y a le +3 car le premier pic est sur la 3ème colonne de l'image)*/
p1_pixel = 3+inverse_f(p1_reel,phi0,phi1);
p2_pixel = 3+inverse_f(p2_reel,phi0,phi1);
p3_pixel = 3+inverse_f(p3_reel,phi0,phi1);
p4_pixel = 3+inverse_f(p4_reel,phi0,phi1);
p5_pixel = 3+inverse_f(p5_reel,phi0,phi1);
p6_pixel = 3+inverse_f(p6_reel,phi0,phi1);
p7_pixel = 3+inverse_f(p7_reel,phi0,phi1);
p8_pixel = 3+inverse_f(p8_reel,phi0,phi1);
p9_pixel = 3+inverse_f(p9_reel,phi0,phi1);
p10_pixel = 3+inverse_f(p10_reel,phi0,phi1);
p11_pixel = 3+inverse_f(p11_reel,phi0,phi1);
p12_pixel = 3+inverse_f(p12_reel,phi0,phi1);
p13_pixel = 3+inverse_f(p13_reel,phi0,phi1);
p14_pixel = 3+inverse_f(p14_reel,phi0,phi1);
p15_pixel = 3+inverse_f(p15_reel,phi0,phi1);
p16_pixel = 3+inverse_f(p16_reel,phi0,phi1);
/* somme des ecarts des pixels au carré */
somme_ecart_pixel = ecart_pixel(p1_pixel,p1_mesure)+ecart_pixel(p2_pixel,p2_mesure)+ecart_pixel(p3_pixel,p3_mesure)+ecart_pixel(p4_pixel,p4_mesure)+ecart_pixel(p5_pixel,p5_mesure)+ecart_pixel(p6_pixel,p6_mesure)+ecart_pixel(p7_pixel,p7_mesure)+ecart_pixel(p8_pixel,p8_mesure)+ecart_pixel(p9_pixel,p9_mesure)+ecart_pixel(p10_pixel,p10_mesure)+ecart_pixel(p11_pixel,p11_mesure)+ecart_pixel(p12_pixel,p12_mesure)+ecart_pixel(p13_pixel,p13_mesure)+ecart_pixel(p14_pixel,p14_mesure)+ecart_pixel(p15_pixel,p15_mesure)+ecart_pixel(p16_pixel,p16_mesure);
printf("\tSomme_ecart_pixel = %f\n",somme_ecart_pixel);
return 0;
}
/* fonction inverse */
double inverse_f(double x,double phi0, double phi1) /*( x correspond à la position d'un pixel dans l'espace réel)*/
{
double resultat = 0.0;
resultat = ((asin(x)-phi0)/(phi1-phi0))*248; /* fonction de passage de l'etat reel au pixel */
return resultat;
}
/* fonction des positions reelles */
double position_reelle(double n, double phi0, double phi1) /* n correspond à la position du pixel */
{
double resultat;
resultat = sin(phi0) + ((sin(phi1)-sin(phi0))/15)*(n-1);
return resultat;
}
/* écart des pixels au carré */
double ecart_pixel(double p_estime,double p_mesure)
{
double resultat;
resultat = pow((p_estime-p_mesure),2);
return resultat;
} |
Partager