Numérique

Pythagone

J’ai programmé récemment Pythagone, une petite application web en javascript pour mes amis constructeurs et autres bidouilleurs qui permet d’utiliser rapidement le théorème de Pythagore et la Trigonométrie, en me faisant la réflexion qu’il est toujours un peu fastidieux de se souvenir de « SohCahToa » (Ou « CahSohToa », pour les plus agressifs d’entre nous) et de l’appliquer quand on a besoin, dans le speed, dans la vrai vie.

Lire la suite …

Triptyque : Perversion (L’Origine du monde)

Un dimanche 10 mai teinté de répression, j’ai présenté le tryptique Perversion (L’Origine du monde) #001, composé de Perversion (-128,-158,L’Origine du monde), Perversion (-23,-77,L’Origine du monde) & Perversion (6,125,L’Origine du monde). Trois tableaux de glitch de l’Origine du monde de Gustave Courbet, en triptyque devant une toile du graffeur Bebar, pour l’exposition Culture de Paix à Vitry-sur-seine.

La liberté d’expression n’est elle pas la liberté d’utiliser et de modifier nos chefs d’œuvres à notre guise? Le droit d’auteur ne serait il pas une barrière à la liberté d’expression, sachant que toutes œuvre est issue, inspiré ou au moins influencé par l’histoire de l’Art? La véritable paix ne serait elle pas de laisser vivre toutes formes d’Art, de folie, de jugement et d’opinion? Au lieu d’être un moment d’inactivité sans danger, ne serait elle pas plutôt ce moment d’émulsion, voir même de conflits, mais d’échange, où toutes les formes d’expressions ou de réappropriation sont autorisées dans un monde qui l’entend, le voit, l’écoute et le regarde?

L’idée étant de remettre au goût du jour une peinture de Gustave Courbet au travers d’un traitement numérique, soit la série perversion, un programme qui génère des erreurs dans des images, tel le plus simple des chiffrement en intervertissant deux données (bytes) tout le long d’un fichier d’image Jpeg. Comme pour réactualiser des questionnement toujours contemporain d’un pilier de l’histoire de l’Art dans notre sphère numérique.

S’en dégage une esthétique onirique mystérieuse, mi chaotique, mi épurée, dans laquelle on peut farfouiller, explorer, rechercher ou simplement admirer son abstraction.

La force de cette nouvelle représentation étant la manière de modifier et cacher l’image réaliste et figurative de son modèle original, comme un contre pied de cette importance de l’image et de son discours évident, comme une manière de pousser le spectateur à aller chercher son intérêt propre, son imagerie propre, et laisser divaguer son imagination dans cette nouvelle représentation devenue semi-abstraite, ouvrant la porte à des interprétations inattendues.

A l’heure où nos données personnelles sur le réseau sont mises à mal jusque dans notre intimité, autorisons nous à torturer librement du bytes en pagaille à grands coups de randomisation dans du Chef-d’œuvre de poids, afin d’illustrer librement le bordel du flux sensible qui nous entoure dans toute sa complexité à l’époque du partage universelle et de la réappropriation généralisée.

Cette démarche de destruction aléatoire, non maitrisée, est une métaphore de la perte, de la réutilisation et de l’évolution de nos données personnelles et parfois intime dans le monde numérique contemporain qui nous échappe. Le monde numérique n’a pas de propriétaire.

PS : Désolé pour la qualité des photos et mon reflet dedans, j’ai pas réussis à faire mieux. Sinon ils existent toujours en vrai chez moi.

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.

/**
 * Title : Hide vidéo v2
 * Author : Frédéric Pavageau
 * Website : www.fredericpavageau.net
 * Contact : fredericpavageau@gmail.com
 * Date : 11/12/2014
 */

// Sequence d'images
int Seqmin=1; // Première image
int Seqmax=1; // Dernière image

// Paramètres de compression
int umin = 4; // Dimension minimum des carrés de compression
int umax = 256; // Dimension maximum des carrés de compression
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é
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
float tfirst = t;

// Image
String im;
String filename = "Nomdufichier";
String extension = ".jpg";
int nb0 = 3; // nombre de chiffres au total dans le nom du fichier (zéro compris)

// Variables de calcule
int i = 0; // Incrément
float T; // Variable différence Total Max-Min couleurs par carré
float tparticulier; // t adapté proportionnellement aux zones particulières/tronqués

// Coordonnées
int x = 0;
int y = 0;
int x0 = 0;
int y0 = 0;

// Variables
float Rmax = 0;
float Vmax = 0;
float Bmax = 0;
float Rmin = 0;
float Vmin = 0;
float Bmin = 0;
// Pixel total
int pt = 0;
// Couleurs
float R = 0;
float V = 0;
float B = 0;
// Couleurs Total
float Rt = 0;
float Vt = 0;
float Bt = 0;
// Couleurs de la cellule
int Rmoy = 0;
int Vmoy = 0;
int Bmoy = 0;
float CC;

PImage[] img = new PImage[Seqmax-Seqmin+1];
  
void setup() {
for (int Seq = Seqmin; Seq <= Seqmax; Seq++) { // Loop de fichier
  String StringSeq = ""+Seq;    // Calcule du nombre de zero necessaire dans le numero du fichier
  int nbchiffre = StringSeq.length();
  int nbdezero = nb0 - nbchiffre;
  String Seqfile = ""+Seq;
  for (int zero=0; zero<nbdezero; zero++) {    // Ecriture du nb de zero a completer dans la variable Seqfile
    Seqfile = "0"+Seqfile;
  }
  String im = filename+Seqfile+extension;
  img[i] = loadImage(im);
  i++;
}
  size(img[0].width,img[0].height);
  i=0;
}

void draw() {
  noLoop();
  for (int Seq = Seqmin; Seq <= Seqmax; Seq++) {  // Loop de fichier
    String StringSeq = ""+Seq;    // Calcule du nombre de zero necessaire dans le numero du fichier
    int nbchiffre = StringSeq.length();
    int nbdezero = nb0 - nbchiffre;
    String Seqfile = ""+Seq;
    for (int zero=0; zero<nbdezero; zero++) {  // Ecriture du nb de zero a completer dans la variable Seqfile
      Seqfile = "0"+Seqfile;
    }
    String im = filename+Seqfile;  
    image(img[i], 0, 0);
    t = tfirst;
    for (int u = umin; u <= umax; u = u*2) {
      for (int x = 0; x < img[i].width; x = x+u) {
        for (int y = 0; y < img[i].height; y = y+u) {
          float Rt = 0;
          float Vt = 0;
          float Bt = 0;
          Rmax = Rmin = red(get(x,y));
          Vmax = Vmin = green(get(x,y));
          Bmax = Bmin = blue(get(x,y));
          pt = 0;
          for (int x0 = x; (x0 < x+u) && (x0 < img[i].width); x0++) {
            for (int y0 = y; (y0 < y+u) && (y0 < img[i].height); y0++) {
              R = red(get(x0,y0));
              V = green(get(x0,y0));
              B = blue(get(x0,y0));
              Rt = Rt+R;
              Vt = Vt+V;
              Bt = Bt+B;
              Rmax = max(R,Rmax);
              Vmax = max(V,Vmax);
              Bmax = max(B,Bmax);
              Rmin = min(R,Rmin);
              Vmin = min(V,Vmin);
              Bmin = min(B,Bmin);
              pt = pt+1;
            }
          }
          T = ((Rmax-Rmin)+(Vmax-Vmin)+(Bmax-Bmin))/pt; // Calcule de l'Amplitude de différence par pixels
          println(T);
          if(pt < (u*u)) {
            println(u*u+"="+pt+" "+T);
            tparticulier = t*((u*u)/(pt));
            if(T > tparticulier) {
              int Rmoy = round(Rt/pt);
              int Vmoy = round(Vt/pt);
              int Bmoy = round(Bt/pt);
              color CC = color(Rmoy,Vmoy,Bmoy);    
              fill(CC);
              noStroke();
              rect(x,y,u,u);
            }
          }
          else {
            if(T > t) {
              int Rmoy = round(Rt/pt);
              int Vmoy = round(Vt/pt);
              int Bmoy = round(Bt/pt);
              color CC = color(Rmoy,Vmoy,Bmoy);    
              fill(CC);
              noStroke();
              rect(x,y,u,u);
            }
          }
        }
      }
      t = t*c;
    }
    save("Out/"+filename+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+"/"+im+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+".jpg");
    println("Saved in : Out/"+filename+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+"/"+im+"_t="+tfirst+"_c="+c+"_umin="+umin+"_umax="+umax+".jpg");
    i++;
  }
  i=0;
}

Imaging (Amour) #001 #002

Imaging (Amour) #001.
Imaging (Amour) #001 | Fichier numérique modifié, 2014.

Imaging (Amour) #002
Imaging (Amour) #002 | Fichier numérique modifié, 2014.

Des mots d’amours interprété par la compression Jpeg…

@

Flaw [Self-Portrait] #001

Flaw [Self-Portrait] #001 Dents sur panneau de plexiglas encadré, 72 x 83 cm, 2012.

Tableau issue d’une collection de dents de sagesses, s’amusant à entremêler les codes : numériques (L’image pixelisée), génétiques (Le défauts récurrent & archaïque de la dent de sagesse chez l’homme), artistiques (Le portrait, le cadre lourd) et symboliques (La dent de « sagesse », le visage, l’expression). Présenté en 2012 à l’Atelier CMH de Bordeaux, lors du Bazar Bizar de Guilux, et à effleurer en vidéo sur youtube ici.

Ce projet a vu le jour grâce à la participation d’Aneymone Wilhelm, Pierre Lapin (Photo du portrait original), mais aussi Alexandre Moyard, Hugo de Oliveira, Anne Dolorez Pineau, Daniel Varotto Couto, Edouard Sufrin, Véronique Lorne, Pierre Gris, Douglas Cavanna, Sebastien Pavageau et Vincent Pradel, ainsi que les généreux donneurs de dents.

@