Couleur

Hide [Gaïa] #002

Hide [Gaïa] #002, Vidéos sur moniteurs, dimensions variables, 2014.

Voici quelques photos de l’installation de Hide [Gaïa] à l’expo faite maison, une version plus fournie que celle présenté lors de fragilité au donjon de maîtresse Cindy.

Cette installation vidéo a poussé dans les écrans d’une colocation fertile à Gambetta, c’est une respiration infinie dans un espace commun, un flux flou en constante déformation, à la recherche d’une beauté neutre et universelle en mouvement.

Hide est un processus de malcompression picturale, à l’opposé de la compression seul les parties fertiles de l’image y sont généralisées et cachés, ne laissant transparaître plus que les détails fin et réguliers de l’image.

Pour faire une impressions ou planter une vidéo dans vos écrans salon, n’hésitez pas à me contacter.

Ci-dessous le code source Processing donnant naissance à ces images. Attention ce code permet de traiter plusieurs fichiers d’affilés, de type Nomdufichier00X.jpg, qu’il faut ensuite monter ensemble pour donner une vidéo.

  1. /**
  2. * Title : Hide vidéo v2
  3. * Author : Frédéric Pavageau
  4. * Website : www.fredericpavageau.net
  5. * Contact : fredericpavageau@gmail.com
  6. * Date : 11/12/2014
  7. */
  8.  
  9. // Sequence d'images
  10. int Seqmin=1; // Première image
  11. int Seqmax=1; // Dernière image
  12.  
  13. // Paramètres de compression
  14. int umin = 4; // Dimension minimum des carrés de compression
  15. int umax = 256; // Dimension maximum des carrés de compression
  16. float t = 1.25; // Taux de compression, minimum de différence par pixel pour généraliser, Plus la valeur est basse et plus l'image sera compressé
  17. float c = 0.435; // multiplicateur de t, plus il est grand au dessus de 1 moins les grand carré seront fort, entre 0 et 1 plus il est faible plus les grand carré serons importants
  18. float tfirst = t;
  19.  
  20. // Image
  21. String im;
  22. String filename = "Nomdufichier";
  23. String extension = ".jpg";
  24. int nb0 = 3; // nombre de chiffres au total dans le nom du fichier (zéro compris)
  25.  
  26. // Variables de calcule
  27. int i = 0; // Incrément
  28. float T; // Variable différence Total Max-Min couleurs par carré
  29. float tparticulier; // t adapté proportionnellement aux zones particulières/tronqués
  30.  
  31. // Coordonnées
  32. int x = 0;
  33. int y = 0;
  34. int x0 = 0;
  35. int y0 = 0;
  36.  
  37. // Variables
  38. float Rmax = 0;
  39. float Vmax = 0;
  40. float Bmax = 0;
  41. float Rmin = 0;
  42. float Vmin = 0;
  43. float Bmin = 0;
  44. // Pixel total
  45. int pt = 0;
  46. // Couleurs
  47. float R = 0;
  48. float V = 0;
  49. float B = 0;
  50. // Couleurs Total
  51. float Rt = 0;
  52. float Vt = 0;
  53. float Bt = 0;
  54. // Couleurs de la cellule
  55. int Rmoy = 0;
  56. int Vmoy = 0;
  57. int Bmoy = 0;
  58. float CC;
  59.  
  60. PImage[] img = new PImage[Seqmax-Seqmin+1];
  61.  
  62. void setup() {
  63. for (int Seq = Seqmin; Seq <= Seqmax; Seq++) { // Loop de fichier
  64.   String StringSeq = ""+Seq;    // Calcule du nombre de zero necessaire dans le numero du fichier
  65.   int nbchiffre = StringSeq.length();
  66.   int nbdezero = nb0 - nbchiffre;
  67.   String Seqfile = ""+Seq;
  68.   for (int zero=0; zero<nbdezero; zero++) {    // Ecriture du nb de zero a completer dans la variable Seqfile
  69.     Seqfile = "0"+Seqfile;
  70.   }
  71.   String im = filename+Seqfile+extension;
  72.   img[i] = loadImage(im);
  73.   i++;
  74. }
  75.   size(img[0].width,img[0].height);
  76.   i=0;
  77. }
  78.  
  79. void draw() {
  80.   noLoop();
  81.   for (int Seq = Seqmin; Seq <= Seqmax; Seq++) {  // Loop de fichier
  82.     String StringSeq = ""+Seq;    // Calcule du nombre de zero necessaire dans le numero du fichier
  83.     int nbchiffre = StringSeq.length();
  84.     int nbdezero = nb0 - nbchiffre;
  85.     String Seqfile = ""+Seq;
  86.     for (int zero=0; zero<nbdezero; zero++) {  // Ecriture du nb de zero a completer dans la variable Seqfile
  87.       Seqfile = "0"+Seqfile;
  88.     }
  89.     String im = filename+Seqfile;  
  90.     image(img[i], 0, 0);
  91.     t = tfirst;
  92.     for (int u = umin; u <= umax; u = u*2) {
  93.       for (int x = 0; x < img[i].width; x = x+u) {
  94.         for (int y = 0; y < img[i].height; y = y+u) {
  95.           float Rt = 0;
  96.           float Vt = 0;
  97.           float Bt = 0;
  98.           Rmax = Rmin = red(get(x,y));
  99.           Vmax = Vmin = green(get(x,y));
  100.           Bmax = Bmin = blue(get(x,y));
  101.           pt = 0;
  102.           for (int x0 = x; (x0 < x+u) && (x0 < img[i].width); x0++) {
  103.             for (int y0 = y; (y0 < y+u) && (y0 < img[i].height); y0++) {
  104.               R = red(get(x0,y0));
  105.               V = green(get(x0,y0));
  106.               B = blue(get(x0,y0));
  107.               Rt = Rt+R;
  108.               Vt = Vt+V;
  109.               Bt = Bt+B;
  110.               Rmax = max(R,Rmax);
  111.               Vmax = max(V,Vmax);
  112.               Bmax = max(B,Bmax);
  113.               Rmin = min(R,Rmin);
  114.               Vmin = min(V,Vmin);
  115.               Bmin = min(B,Bmin);
  116.               pt = pt+1;
  117.             }
  118.           }
  119.           T = ((Rmax-Rmin)+(Vmax-Vmin)+(Bmax-Bmin))/pt; // Calcule de l'Amplitude de différence par pixels
  120.           println(T);
  121.           if(pt < (u*u)) {
  122.             println(u*u+"="+pt+" "+T);
  123.             tparticulier = t*((u*u)/(pt));
  124.             if(T > tparticulier) {
  125.               int Rmoy = round(Rt/pt);
  126.               int Vmoy = round(Vt/pt);
  127.               int Bmoy = round(Bt/pt);
  128.               color CC = color(Rmoy,Vmoy,Bmoy);    
  129.               fill(CC);
  130.               noStroke();
  131.               rect(x,y,u,u);
  132.             }
  133.           }
  134.           else {
  135.             if(T > t) {
  136.               int Rmoy = round(Rt/pt);
  137.               int Vmoy = round(Vt/pt);
  138.               int Bmoy = round(Bt/pt);
  139.               color CC = color(Rmoy,Vmoy,Bmoy);    
  140.               fill(CC);
  141.               noStroke();
  142.               rect(x,y,u,u);
  143.             }
  144.           }
  145.         }
  146.       }
  147.       t = t*c;
  148.     }
  149.     save("Out/"+filename+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+"/"+im+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+".jpg");
  150.     println("Saved in : Out/"+filename+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+"/"+im+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+".jpg");
  151.     i++;
  152.   }
  153.   i=0;
  154. }

Peintures [sans-titre]

Mon intervention dans le Collège Descartes de Tremblay en France, dans le cadre de [Méta] morphoses, m’a permis de remettre le nez dans des vieux travaux universitaires.

A cette époque j’ai tenté de donner à voir l’énergie en peinture, peintes avec des cartes bleus, des bombes, des mouchoirs, des vaporisateurs Cillit Bang, ou des planches de medium, j’essayais de détourner tout ces outils pour en dégager des émotions, farfouiller les possibilités des objets qui m’entouraient.

J’en ai profité pour réactiver les commentaires, comme ça vous pouvez dire des saloperies.