Skip to content
Snippets Groups Projects
Commit 3029b37e authored by poulpe's avatar poulpe
Browse files

[Update] Add comment in code

parent 29b3e83a
No related branches found
No related tags found
No related merge requests found
......@@ -15,6 +15,14 @@ void Convolution_test(void);
void Convolution_1d(void);
/**
* @brief Create file and write data of eror computed inside
*
* @param filename The filename to use for the file created
* @param size_n The array of size for data
* @param error_n The array of error computed
* @param length_data The length of data for both
*/
void write_error_graphic_file(const char *filename, const uint32_t size_n[], const double error_n[], const uint32_t length_data)
{
FILE *f = fopen(filename, "w");
......@@ -26,6 +34,10 @@ void write_error_graphic_file(const char *filename, const uint32_t size_n[], con
fclose(f);
}
/**
* @brief Compute the difference between
*
*/
void Integration_numerique()
{
uint32_t size_n[] = {5, 10, 50, 100, 500, 1000};
......@@ -41,6 +53,10 @@ void Integration_numerique()
write_error_graphic_file("graphique_data.txt", size_n, error_n, 6);
}
/**
* @brief Convolve with filter for image reading and display
*
*/
void Convolution_filtrage()
{
char filname[] = "part3_1.pgm";
......@@ -90,6 +106,10 @@ void Convolution_filtrage()
matrix_destroy(kernel);
}
/**
* @brief Convolve 1D signal
*
*/
void Convolution_1d(void)
{
int PeriodeEchentillonage = 400;
......
......@@ -69,6 +69,14 @@ double h_x(double x, double psi)
return (1 / sqrt(2 * M_PI * psi)) * exp(-pow(x, 2) / (2 * psi));
}
/**
* @brief Normalise the matrix for get more contrast for zone
*
* @param orig The original matrix will be affected
* @param min The minimum in the matrix
* @param max The maximum in the matrix
* @param lumMax The composant max in the matrix in header
*/
void normalise_matrix(matrix *orig, int32_t min, int32_t max, int32_t lumMax)
{
for (uint32_t i = 1; i < orig->col-1; i += 1)
......@@ -80,6 +88,14 @@ void normalise_matrix(matrix *orig, int32_t min, int32_t max, int32_t lumMax)
}
}
/**
* @brief Convolve matrix and return the output in matrix conv, The factor is used for divide the result of kernel
*
* @param conv The convolve matrix output
* @param orig The original matrix to use for the convolve
* @param kernel The kernel to apply to the matrix
* @param factor The factor for divide
*/
void convolve_matrix(matrix *conv,matrix * orig, const matrix *const kernel, const int32_t factor)
{
int32_t pixels = 0;
......@@ -159,6 +175,14 @@ double funH(double *signal,int index, int N, int len)
return res;
}
/**
* @brief Convolve the signal passed in param and return in the out
*
* @param signal The signal to use for convolution
* @param out The double array alloced for get data after convolve
* @param len The length of data in signal
*/
void convolution_signal(double *signal, double *out, int len)
{
for (int i = 0; i < len; i++)
......
......@@ -111,7 +111,7 @@ Sur ces deux graphiques, on peut constater que l'erreur diminue plus l'itératio
# Convolutions et filtrage
Afin de se familiariser avec les convolutions, nous allons filtrer des signaux à 1 dimension.
Pour cela nous définition un signal composé de deux signaux avec chacun une fréquence différents w1 et w2.
Pour cela nous définissons un signal composé de deux signaux avec chacun une fréquence différents w1 et w2.
\begin{equation}
s(x)=\sin(2\pi\omega_1 x)+\sin(2\pi\omega_2 x).
......@@ -507,4 +507,4 @@ Résultat finalement obtenu:
# Conclusion
Ce TP nous a permis de travailler avec des intégrales, des matrices et des signaux, nous avons donc implémenté les équations mathématiques que nous avions dû calculer et résoudre. Nous avons également fait le traitement analytique des intégrales et ensuite numérique pour constater leurs différences, de plus, nous avons effectué la convolution de matrice pour pouvoir appliquer des filtres, cela nous à permis de filtrer les images reçues et donc de les "décodées".
\ No newline at end of file
Ce TP nous a permis de travailler avec des intégrales, des matrices et des signaux, nous avons donc implémenté les équations mathématiques que nous avions dû calculer et résoudre. Nous avons également fait le traitement analytique des intégrales et ensuite numérique pour constater leurs différences, de plus, nous avons effectué la convolution de matrice pour pouvoir appliquer des filtres, cela nous à permis de filtrer les images reçues et donc de les "décodées".
\ No newline at end of file
#include "traitementPGM.h"
/**
* @brief The read of PGM file in P5 format
*
* @param p The PGM struct where data is set and stored
* @param filename The filename to read all data
* @return int32_t Return -1 if error
*/
int32_t pgm_read_from_file(pgm *p, char *filename)
{
if (filename == NULL || p == NULL)
......@@ -30,6 +37,12 @@ int32_t pgm_read_from_file(pgm *p, char *filename)
return 0;
}
/**
* @brief Write output file PGM version P2 beceause P5 not working but is best
*
* @param p The PGM pointer of struct to use
* @param filename The filename of file to create and write inside
*/
void pgm_write_to_file(pgm *p, char *filename)
{
FILE *f = fopen(filename, "w");
......@@ -50,6 +63,12 @@ void pgm_write_to_file(pgm *p, char *filename)
fclose(f);
}
/**
* @brief Display the image with SDL
*
* @param img The image PGM to display
* @param filname The name of the window or the filename displayed
*/
void PrintImagePGM(pgm img, char * filname)
{
printf("Image sélectionnée '%s' de taille %dx%d lumMax:%d\n", filname, img.pixels.col, img.pixels.row, img.max);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment