![Hide [Gaïa] #002, Vidéos sur moniteurs, 2014](https://i0.wp.com/fredericpavageau.net/wp-content/uploads/2014/12/2014_12_Hide_Gaia_002-658x493.jpg?resize=658%2C493&ssl=1)
Hide [Gaïa] #002 | Vidéos sur moniteurs, 2014, Paris.
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;
}