libimage / effets

dernière mise à jour: 14 décembre 2013

Cette page décrit les "effets spéciaux" que l'on peut appliquer sur une image graçe à la libimage. Et je suis bien d'accord, il manque des exemples. Vous pouvez en générer rapidement quelque-uns, en faisant appel à une fonction de test. Ou plus simplement en utilisant l'outil approprié.

effets

int Image_water(Image_Desc *source, Image_Desc *but, int intensite)
déplace randomatiquement les pixels comme si de l'eau était tombé sur une aquarelle. Attention, il semble y avoir un bug dans cette fonction.
int Image_noise(Image_Desc *source, Image_Desc *but, int intensite)
Rajoute du bruit aléatoire absolu dans une image. Une intensité de 10 donne un effet moyen. Chaque composante est traitée séparément.
int Image_mirror(Image_Desc *src, Image_Desc *dst, int res)
retourne une image rgb[a] de droite à gauche, comme dans un miroir.
int Image_upside_down(Image_Desc *src, Image_Desc *dst, int res)
Renverse une image de haut en bas ou de droite à gauche. Il ne faut pas mettre la même image en source et destination.
int Image_swap_lines(Image_Desc *src, Image_Desc * dst)
int Image_swap_cols(Image_Desc *src, Image_Desc * dst)
Echange des lignes (colonnes) paires et impaires de l'image. RGB uniquement hélas...

haut de page

effets 2

int Image_sinwave_1(Image_Desc *source, Image_Desc * but, double table[6])
Déformation étrange d'une image. Je ne sais absolument pas ce que doit contenir la table.
int Image_sinwave_2(Image_Desc *source, Image_Desc * but, double table[6])
Déformation étrange d'une image. Je ne sais absolument pas ce que doit contenir la table.

haut de page

effets 3

Dans cette section, il y a des effets plus ou moins pas trop finis. Certains d'entre eux ont été conçus pour mon (futur) logiciel de montage de vidéos povesques. Ensuite, quand ils seront fixés, peut-être je changerais leur nom, tout en gardant un alias dans le source effects3.c.

int Image_effect_x_0(Image_Desc *src, Image_Desc *dst, int kr, int kg, int kb)
Déja plus de 4 ans de mise au point, et c'est pas encore fini...
int Image_effect_x_1(Image_Desc *src, Image_Desc *dst)
Déja plus de 4 ans de mise au point, et c'est pas encore fini...
int Image_effect_x_3(Image_Desc *src, Image_Desc *dst, int kx, int ky, char *comp)
Déja plus de 4 ans de mise au point, et c'est pas encore fini...

haut de page

rgbmask

C'est nouveau, ça vient de sortir. Le principe est simple: éliminer, sur des critères divers, une ou deux composantes RGB de l'image, en les remplaçant par une valeur constante. Hélas, ces effets ont un défaut: ils survivent très mal à la compression JPEG.

int Image_rgbmask_H(Image_Desc *src, Image_Desc *dst, int gris);
Dans le sens horizontal...
int Image_rgbmask_V(Image_Desc *src, Image_Desc *dst, int gris);
Dans le sens vertival...
int Image_rgbmask_2(Image_Desc *src, Image_Desc *dst, int gris);
Bon, c'est pas mal, mais c'est quand même très dépendant des dimensions de l'image.
int Image_rgbmask_R(Image_Desc *src, Image_Desc *dst, int gris);
Ah, celle-là semble prometteuse. En jouant sur la pondération de l'aléa, on doit pouvoir obtenir quelques trucs sympas...

haut de page

colorize

C'est nouveau, ça vient de sortir. Ce sont des expérimentations sur les relations entre la luminosité, la couleur, et surtout la percevance des gens face à une nouvelle vision du monde.

int Image_BiColor_0(Image_Desc *src, Image_Desc *dst, int k)
Si c'est clair, ça devient sombre. Si c'est sombre, ça devient clair. Vice-versa et réciproquement inclus. Le paramètre k ne sert à rien et doit être mis à 0.

Oh, bien entendu, ces tripotages de pixels ça n'est pas au niveau de la troiD de merde faite sous Linux, mais j'ai quand même dans l'idée d'appliquer ces trucs à des séquences vidéo ou des GIfs animées.

haut de page

Quelques essais

La rubrique des trucs improbables, des tentatives avortées, des machins pas finis. Nous allons commencer par un vieux truc : l'utilisation de la récursion.

int Image_call_recursion(Image_Desc *image, Image_Desc *dest, int param);
Euh, c'est une peu difficile d'expliquer ce que ça fait, mais il suffit de savoir que certaines valeurs du paramètre sont meilleures que d'autres.

Et des fonctions dans ce genre, il y en a d'autres. Par exemple, pour obtenir un effet assez peu similaire à la récursion, mais quand même, j'ai de la mosaique sous le coude.

int Image_mosaic_simple(Image_Desc *src, Image_Desc *dst);
Comme le nom l'indique clairement, c'est un truc simple.
int Image_mosaic_0(Image_Desc *src, Image_Desc *dst, int sx, int sy, int flg);
Comme le montre clairement le prototype, il y a des paramètres. sx et sy sont les dimensions des pavés (il parait qu'il faut dire "tuiles" maintenant) que l'on va examiner et traiter. Quand à flg, je pense qu'il ne sert à rien, et qu'il faut mettre 0.

haut de page

liens

La classique rubrique des liens, toujours aussi vide. Rattrapez vous ici ou .