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é.
- 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
- 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
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
là.