Offusquez-vous !
Dans le cadre du workshop Fabien Zocco, « Intelligence artificielle »
02/2019

"Offusquez-vous !" est un programme « pirate » qui pourrait brouiller l'image des citoyens, faisant face, à son insu, aux systèmes d'analyse d'image.

En reprenant les caractéristiques colorimétriques de chacun, ce programme permet d'être vu sans l'être, de devenir juste un élément graphique au sein de l'image.

L’offuscation (ou l’obfuscation) : l’acte de cacher son code source, de le rendre invisible.

Tandis que d’un côté, les GAFAM et les gouvernements tiennent à garder le contrôle sur les échanges privés des utilisateurs, chacun cherche à préserver ses données privées en ligne.

Ce champ de bataille de la surveillance de masse revêt de multiples formes.

En 2016, par exemple, en Grande-Bretagne, une nouvelle loi de surveillance appelée SNooper’s Charter (la charte des fouineurs) a donné l’autorisation à la police d’accéder à l’historique de navigation de tous les citoyens. Cybersécurité ou immersion dans la vie privée de chacun ?

Aujourd’hui, chaque citoyen vit en ligne dans un monde de surveillance algorithmique mais aussi via les caméras de surveillance du monde entier. Ces caméras dressent potentiellement un profil d’identité de chacun. Je propose donc d’offusquer le profil de chacun ! Devenir illisible devant les caméras de surveillance, ne pas se laisser être lu.

CREDITS

// Anna DIOP DUBOIS

Références :

Antiselfies https://antiselfie.club/?fbclid=IwAR2zZDGPqa_JQkzo89_Jd2d3TEMsdkxqOBfDyQE9GmmcdPB6xKAoLxWSs8Y

Inti Romero https://www.facebook.com/intimidadromero

SICV Constant http://constantvzw.org/site/The-Scandinavian-Institute-of-Computational-Vandalism.html

Alan Sondheim, théories et écrits du cyberespace http://collection.eliterature.org/1/works/sondheim__internet_text/FUTURE.TXT

//CODE PROCESSING

//

import blobDetection.*;

//PImage []troll=new PImage[1];

BlobDetection theBlobDetection;

//
import ipcapture.*;

IPCapture cam;
PImage img, dst;
int cp;
PGraphics pg;

// ==================================================
// setup()
// ==================================================
void setup()
{

size(640, 480);
//size(2048, 1536);
//noCursor();
cam = new IPCapture(this, « http://93.87.72.254:8090/mjpg/video.mjpg#.XFmsph5q9ig.link », «  », «  »);
//cam = new IPCapture(this, « http://92.154.48.50:8083/cgi-bin/faststream.jpg?stream=half&fps=15&rand=COUNTER#.XFmv92dtAbs.link », «  », «  »);
//cam = new IPCapture(this, « http://81.64.209.61:8001/cgi-bin/faststream.jpg?stream=half&fps=15&rand=COUNTER#.XFXR797-Fyc.link », «  », «  »);
cam.start();
img=loadImage(« z.jpg »);

//img = new PImage[n+1];
/* for(int i = 0; i > troll.length; i ++)
{
troll[i] = loadImage(i+ ».png »);
}*/
pg=createGraphics (width, height);
load();
}

//

void load() {

img.resize(width, height);

theBlobDetection = new BlobDetection(img.width, img.height);
theBlobDetection.setPosDiscrimination(false);
theBlobDetection.setThreshold(0.38f);

float f=0.2;

theBlobDetection.setThreshold(f);
theBlobDetection.computeBlobs(img.pixels);
}

// ==================================================
// draw()
// ==================================================
void draw()
{

background(0);

image(img, 0, 0);

println(mouseX+ » « +mouseY);

pg.beginDraw();
if (cam.isAvailable()) {
cam.read();
pg.image(cam, 0, 0);
}
pg.endDraw();

if (cp==0)img = pg.get(0, 0, pg.width, pg.height);
if (cp==5) {
load();
}
cp=(cp+1)%10;

//filter(GRAY);

drawBlobsAndEdges(true, true);

//delay(100);

load();
}

// ==================================================
// drawBlobsAndEdges()
// ==================================================
void drawBlobsAndEdges(boolean drawBlobs, boolean drawEdges)
{
noFill();
Blob b;
EdgeVertex eA, eB;
for (int n=0; n<theBlobDetection.getBlobNb (); n++)
{
b=theBlobDetection.getBlob(n);
if (b!=null)
{

// Blobs
if (drawBlobs)
{

if (b.w*width>20&&b.h*height>100&&
b.xMin*width>width/3&&b.xMin*width<(width/4)*3

) {

/*
noFill();
//if (b.xMin*width<350||b.xMin*width>450) {
stroke(255, 255, 0);
rect(
b.xMin*width, b.yMin*height,
b.w*width, b.h*height
);
*/

for ( int i = (int)(b.xMin*width); i < (int) (b.xMin*width +b.w*width); i += 1)
{
color c = get(i, (int) (b.yMin*height)+5);
stroke(c);
line(i, b.yMin*height-50, i, (b.h*height+ b.yMin*height));
}
}
}
}
}

}

void mousePressed() {
saveFrame();
}