<commit_before>//
//  main_image.c
//  climso-auto
//
//  Created by <NAME> on 21/04/2014.
//  Copyright (c) 2014 <NAME>. All rights reserved.
//

#define IMPULSION_PIXEL_H	25 //ms
#define IMPULSION_PIXEL_V	25 //ms
#define PIN_NORD			12
#define	PIN_SUD				11
#define	PIN_EST				10
#define PIN_OUEST			9

#define ARDUINO_DEV_LIST "/dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2 /dev/tty.usbmodemfa131 /dev/tty.usbmodemfd111"

#include <iostream>
#include <iomanip> // Pour cout << setprecision(4)
#include <csignal> // Pour éviter de ctrl+C sans supprimer les objets en mémoire
using namespace std;

#include "image.h"
#include "cmd_arduino.h"

void boucleDeGuidage(); // Prototype fonction
int main(int argc, char **argv) {
	boucleDeGuidage();
	return 0;
}


int main2(int argc, char **argv) {
	string empl = "images-de-correlation/test-correl-mv/\0";
	Image* obj = Image::depuisTiff(empl+"obj.tif");
	Image* ref = Image::tracerFormeSoleil(221);
	ref->versTiff(empl+"ref.tif");

	Image* obj_lapl = obj->convoluer(NOYAU_LAPLACIEN_TAB,NOYAU_LAPLACIEN_TAILLE);
	Image* ref_lapl = ref->convoluer(NOYAU_LAPLACIEN_TAB,NOYAU_LAPLACIEN_TAILLE);

	Image* correl = obj_lapl->correlation_rapide(*ref_lapl,0.9);
	correl->versTiff(empl+"correl.tif");
	double l_max, c_max;
	correl->maxParInterpolation(&l_max, &c_max);
	cout << "Max : (x=" << c_max << ",y=" << l_max << ")" <<endl;

	cout << "Hauteur relative : " << correl->calculerHauteurRelativeAutour(l_max,c_max) << endl;
	delete correl;
	delete obj; delete ref;
	delete obj_lapl; delete ref_lapl;
}



CSBIGCam* initialiserCamera() {
	CSBIGCam *cam = NULL;
	PAR_ERROR err;
	int num_essai = 0;
	do {
		if (num_essai > 0) {
			sleep(5);
			cout << "Essai de connexion à la caméra numéro " << num_essai << ":"<< endl;
		}
		if(cam != NULL)
			delete cam;
		cam = new CSBIGCam(DEV_USB); // Création du device USB
		if ((err = cam->GetError()) != CE_NO_ERROR) {
			cerr << "Erreur avec la camera lors de la création de l'objet caméra : " << cam->GetErrorString() << endl;
		}
		else if ((err=cam->EstablishLink()) != CE_NO_ERROR) { // Connexion à la caméra
			cerr << "Erreur avec la camera lors de l'établissement du lien: " << cam->GetErrorString() << endl;
		}
		else {
			// Ajustement du mode de lecture en binning 8x8 (cf "start exposure 2 parameters" dans la doc)
			// Pbms rencontrés : le readout-mode "RM_NXN" ne semblait pas fonctionner : il a fallu corriger
			// le mode numéro 10 dans csbigcam.cpp. Je suspecte que cette fonctionnalité n'a pas été implémentée
			// dans csbigcam.cpp.
			cam->SetReadoutMode(RM_3X3); // Binning 3x3 matériel
		}
		num_essai++;
	}
	while(err != CE_NO_ERROR);
	return cam;
}
int initialiserArduino() {
	int num_essai = 0;
	int fd_arduino;
	do {
		if (num_essai > 0) {
			sleep(5);
			cout << "Essai de connexion à l'arduino numéro " << num_essai << endl;
		}
		if((fd_arduino=arduinoInitialiserCom(ARDUINO_DEV_LIST)) == ARDUINO_ERR) {
			cerr << "Erreur de communication avec Arduino" << endl;
			char rep[300];
			arduinoRecevoirReponse(fd_arduino,rep);
			printf("%s",rep);
		}
		num_essai++;
	}
	while(fd_arduino == ARDUINO_ERR);
	return fd_arduino;
}


void signalHandler(int signum)
{
    cout << "Interruption " << signum << " recue\n";
    exit(signum);
}

void boucleDeGuidage() {
	// Emplacement des images debug
	string emplacement = "images-de-correlation/test-sbig/\0";

	signal(SIGINT, signalHandler);
    signal(SIGABRT, signalHandler);

	int fd_arduino = initialiserArduino();
	
	//
	// Création de l'image ayant la forme du soleil puis laplacien
	//
	Image *ref = Image::tracerFormeSoleil(221);
	//Image *ref_lapl = ref->convoluer(NOYAU_LAPLACIEN_TAB, NOYAU_LAPLACIEN_TAILLE);
	Image *ref_lapl = ref->convoluerParDerivee();
	int larg_img_cam, haut_img_cam;
	double l_max_initial,c_max_initial;
	double l_max, c_max;

	//
	// Connexion à la caméra
	//
	CSBIGImg *obj_sbig = new CSBIGImg;
	CSBIGCam *cam = initialiserCamera();

	//
	// Prise de vue, corrélation et interpolation pour trouver le centre du Soleil
	//<commit_msg>Divers<commit_after>//
//  main_image.c
//  climso-auto
//
//  Created by <NAME> on 21/04/2014.
//  Copyright (c) 2014 <NAME>. All rights reserved.
//

#define IMPULSION_PIXEL_H	25 //ms
#define IMPULSION_PIXEL_V	25 //ms
#define PIN_NORD			12
#define	PIN_SUD				11
#define	PIN_EST				10
#define PIN_OUEST			9

#define ARDUINO_DEV_LIST "/dev/ttyACM0 /dev/ttyACM1 /dev/ttyACM2 /dev/tty.usbmodemfa131 /dev/tty.usbmodemfd111"

#include <iostream>
#include <iomanip> // Pour cout << setprecision(4)
#include <csignal> // Pour éviter de ctrl+C sans supprimer les objets en mémoire
using namespace std;

#include "image.h"
#include "cmd_arduino.h"

void boucleDeGuidage(); // Prototype fonction
int main(int argc, char **argv) {
	boucleDeGuidage();
	return 0;
}


int main2(int argc, char **argv) {
	string empl = "images-de-correlation/test-correl-mv/\0";
	Image* obj = Image::depuisTiff(empl+"obj.tif");
	Image* ref = Image::tracerFormeSoleil(221);
	ref->versTiff(empl+"ref.tif");

	Image* obj_lapl = obj->convoluer(NOYAU_LAPLACIEN_TAB,NOYAU_LAPLACIEN_TAILLE);
	Image* ref_lapl = ref->convoluer(NOYAU_LAPLACIEN_TAB,NOYAU_LAPLACIEN_TAILLE);

	Image* correl = obj_lapl->correlation_rapide(*ref_lapl,0.9);
	correl->versTiff(empl+"correl.tif");
	double l_max, c_max;
	correl->maxParInterpolation(&l_max, &c_max);
	cout << "Max : (x=" << c_max << ",y=" << l_max << ")" <<endl;

	cout << "Hauteur relative : " << correl->calculerHauteurRelativeAutour(l_max,c_max) << endl;
	delete correl;
	delete obj; delete ref;
	delete obj_lapl; delete ref_lapl;
}



CSBIGCam* initialiserCamera() {
	CSBIGCam *cam = NULL;
	PAR_ERROR err;
	int num_essai = 0;
	do {
		if (num_essai > 0) {
			sleep(5);
			cout << "Essai de connexion à la caméra numéro " << num_essai << ":"<< endl;
		}
		if(cam != NULL)
			delete cam;
		cam = new CSBIGCam(DEV_USB); // Création du device USB
		if ((err = cam->GetError()) != CE_NO_ERROR) {
			cerr << "Erreur avec la camera lors de la création de l'objet caméra : " << cam->GetErrorString() << endl;
		}
		else if ((err=cam->EstablishLink()) != CE_NO_ERROR) { // Connexion à la caméra
			cerr << "Erreur avec la camera lors de l'établissement du lien: " << cam->GetErrorString() << endl;
		}
		else {
			// Ajustement du mode de lecture en binning 8x8 (cf "start exposure 2 parameters" dans la doc)
			// Pbms rencontrés : le readout-mode "RM_NXN" ne semblait pas fonctionner : il a fallu corriger
			// le mode numéro 10 dans csbigcam.cpp. Je suspecte que cette fonctionnalité n'a pas été implémentée
			// dans csbigcam.cpp.
			cam->SetReadoutMode(RM_3X3); // Binning 3x3 matériel
		}
		num_essai++;
	}
	while(err != CE_NO_ERROR);
	return cam;
}
int initialiserArduino() {
	int num_essai = 0;
	int fd_arduino;
	do {
		if (num_essai > 0) {
			sleep(5);
			cout << "Essai de connexion à l'arduino numéro " << num_essai << endl;
		}
		if((fd_arduino=arduinoInitialiserCom(ARDUINO_DEV_LIST)) == ARDUINO_ERR) {
			cerr << "Erreur de communication avec Arduino" << endl;
			char rep[300];
			arduinoRecevoirReponse(fd_arduino,rep);
			printf("%s",rep);
		}
		num_essai++;
	}
	while(fd_arduino == ARDUINO_ERR);
	return fd_arduino;
}


void signalHandler(int signum)
{
    cout << "Interruption " << signum << " recue\n";
    exit(signum);
}

void boucleDeGuidage() {
	// Emplacement des images debug
	string emplacement = "images-de-correlation/test-sbig/\0";

	signal(SIGINT, signalHandler);
    signal(SIGABRT, signalHandler);

	int fd_arduino = initialiserArduino();
	
	//
	// Création de l'image ayant la forme du soleil puis laplacien
	//
	Image *ref = Image::tracerFormeSoleil(228);
	//Image *ref_lapl = ref->convoluer(NOYAU_LAPLACIEN_TAB, NOYAU_LAPLACIEN_TAILLE);
	Image *ref_lapl = ref->convoluerParDerivee();
	int larg_img_cam, haut_img_cam;
	double l_max_initial,c_max_initial;
	double l_max, c_max;

	//
	// Connexion à la caméra
	//
	CSBIGImg *obj_sbig = new CSBIGImg;
	CSBIGCam *cam = initialiserCamera();

	//
	// Prise de vue, corrélation et interpolation pour trouver le centre du Soleil
	//
{'fraction_non_alphanumeric': 0.13682242990654206, 'fraction_numerical': 0.015700934579439253, 'mean_word_length': 4.070120025268477, 'pattern_counts': {'":': 2, '<': 125, '<?xml version=': 0, '>': 45, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6568529', 'n_tokens_mistral': 3454, 'n_tokens_neox': 3225, 'n_words': 752}