Voici une chose que je voulais faire depuis un moment, un truc débile et futile pour lequel je ne parvenais pas à trouver un peu de temps : je voulais trouver un moyen de transcoder une vidéo, d'une webcam par exemple, pour que l'image ait l'air d'une image imprimée, avec cette trame CMYK (cyan, magenta, yellow, black, en français CMJN) si caractéristique de l'impression avec son tramage similigravure, les anglais disent Halftone, demi-ton.

 

Le principe est doublement pervers parce qu'en numérique l'univers chromatique RGB (Red/Green/Blue) n'est pas le même qu'en impression et que la trame est différente, de forme rectangulaire ou carrée (pixels) contre une trame elliptique chez les imprimeurs.

 

processing_icon.gif

Pour mener l'expérience à bien, j'ai choisi d'utiliser le programme Processing, un outil libre et gratuit développé par des artistes pour rendre la programmation accessible à des néophites, dont d'ailleurs est issu le projet P5.js que j'ai utilisé plusieurs fois.

 

La difficulté de l'opération c'est que les trames imbriquées du CMYK sont orientées de façon à éviter les moirages et la superposition, un angle qui va de 15 à 45° en fonction des couches.

C'est un détail mais c'est ce qui fait que ce tramage est si reconnaissable, formant des motifs de petites rosaces. Parce que tramer une vidéo de façon orthogonale, lignes et colonnes, est assez simple comme dans l'image ci-dessous : il suffit de prendre un pixel sur X en largeur puis hauteur, d'en analyser les composants de couleur et luminance (le Magenta est extrait de la valeur du Vert - sa complémentaire - le Cyan du Rouge, le Jaune du Bleu et le Noir de la luminance globale ou d'une moyenne des trois couleurs RGB) et de tracer un cercle dont la taille est proportionnelle à la valeur extraite.

cmyk_explain1.gif

Mais la superposition de ces quatre trames ne donne pas un effet convaincant, même en décalant les origines.

Il m'a donc fallu passer par une forme plus sophistiquée d'analyse : orienter la vidéo dans le bon angle, l'analyser par ligne, orienter la trame d'une valeur inverse pour redessiner la source tramée. La superposition donnant enfin l'effet voulu, youpi !

cmyk_explain2.gif

Le souci c'est que l'opération doit être réalisée quatre fois pour chaque image de la vidéo, ce qui relie le débit d'image de la caméra à la puissance de calcul de l'ordinateur sur lequel tourne le petit programme.

Nul doute que mon programme n'est pas le premier du genre, ni qu'il soit parfait, je suis bien persuadé qu'il est perfectible, notamment avec la création de fonctions qui éviteraient les répétitions inutiles, mais j'y ai ajouté un petit habillage et des options qui permettent d'afficher et masquer les différentes couches (en appuyant sur les touches C, M, Y ou K) et de grossir la trame (flèches HAUT et BAS). J'ai fait cela en pensant à ces enseignants de technologie qui ont besoin d'expliquer le principe des trames. Enseignants dont je suis... hé.

 

CMYK_ai_pdf.gif

L'avantage de travailler avec Processing c'est qu'on peut également utiliser assez simplement des fonctions d'export d'images (en appuyant sur la touche S pour sauvegarder un PNG) et même sous forme de fichier PDF (appuyer sur la touche P).

Le PDF étant ensuite éditable via Illustrator, chaque point représenté par un cercle, idéal pour de la découpe laser ou autre exploitation par la suite...

CMYK_result.gif

Le petit bout de programme - dont j'ai commenté le code en anglais comme le veut l'usage - est disponible au téléchargement ci-dessous. Il suffit pour l'exécuter de télécharger Processing (disponible pour Mac, PC, Unix) et d'installer la librairie Vidéo (dans le menu Sketch > Importer une librairie).

 

Il va de soi que le programme est éditable et que la trame peut être interchangée avec n'importe quelle forme (rectangle, ligne, fichier SVG...).


CMYK Halftone Webcam Processing Sketch
 

Je ne résiste pas au plaisir de citer ici une inspiration de longue date, ce petit extrait des photomatons de Roland Topor.

topor_con.jpg