1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4.  
  5. #include "image.h"
  6.  
  7. /* calcule la distance au carré entre 2 pixels */
  8. int dist2(pixel p1, pixel p2) {
  9. int dr = p1.r - p2.r;
  10. int dv = p1.v - p2.v;
  11. int db = p1.b - p2.b;
  12. return dr * dr + dv * dv + db * db;
  13. }
  14.  
  15. /* renvoie l'indice du centroide le plus proche de p */
  16. int classer(pixel p, pixel* centroides, int k){
  17. // A FAIRE
  18. return 0;
  19. }
  20.  
  21.  
  22. /* applique l'algorithme de kmeans
  23. - pix : les npix à clusteriser
  24. - classes : pour indiquer les classes finales des pixels
  25. - centroides : tableau des k centroides */
  26. void kmeans(pixel* pix, int* classes, int npix, pixel* centroides, int k){
  27. // initialisation des classes
  28.  
  29. // A FAIRE
  30.  
  31. // initialisation des centroides
  32.  
  33. // A FAIRE
  34.  
  35. // Algo Kmeans
  36. bool changed = true;
  37. while (changed) {
  38. printf("Etape kmeans\n");
  39. changed = false;
  40. // A FAIRE
  41. }
  42. }
  43.  
  44. int main() {
  45. int k = 4;
  46.  
  47. printf("Lecture de l'image\n");
  48. Image* im0 = importerImage("johnR.ppm");
  49.  
  50. printf("Modification de l'image\n");
  51.  
  52. for (int i = 140; i < 180; i += 1) {
  53. for (int j = 262; j < 302; j += 1) {
  54. pixel p = {.r = 255, .v = 0, .b = 0};
  55. setPix(im0, i, j, p);
  56. }
  57. }
  58.  
  59. printf("Ecriture de l'image\n");
  60. exporterImage(im0, "johnR_avec_un_nez_rouge.ppm");
  61.  
  62. detruireImage(im0);
  63. return 0;
  64. }