Skip to content

adxdits/C-synthese-image

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ne garder que le vert

      

image6image12

La fonction vert manipule une image en réduisant les composantes rouge et bleue de chaque pixel à zéro pour créer une version où seule le vert est présent.

Échanger les canaux

     

image6image28

La fonction "canaux" opère sur une image en utilisant une variable temp pour échanger les valeurs des canaux rouge et bleu pour chaque pixel, puis sauvegarde l'image modifiée en format PNG dans un répertoire de sortie spécifié.

Noir & Blanc

image6image4

On utilise la moyenne des trois couleurs RGB pour donner une image en noir et blanc.

Négatif

                     

image6image15

La fonction “négatif” prend l’inverse de chaque composante r, g, b des couleurs de notre image.

Dégradé

image26

On divise nos couleurs par la largeur de l’image.

Miroir

image21image6

Il faut s’assurer de copier l’image avant d’appliquer le miroir, pour éviter de manipuler des pixels déjà manipulés en parcourant l’image.

Image bruitée

image6image9

On change la couleur d’un pixel sur 7. Pour chaque pixel modifié, on lui génère une couleur aléatoire.

Rotation de 90°

image5image6

Après avoir créé une image avec de nouvelles dimensions, on inverse les coordonnées x et y. Pour obtenir une rotation dans le sens des aiguilles d’une montre au lieu de l’inverse, on applique un miroir horizontal sur la coordonnée x.

RGB split

                        image29image16image6

L’image du milieu est un test, l’image de droite est le résultat final. L’effet souhaité est présent mais on a rencontré une petite difficulté : on ne commence qu’au 20 e pixel et on ignore les 20 derniers pixels. Cela est dû au fait qu’on essayait d’accéder à des pixels qui sortent de l’image.

Luminosité

image19

image1image13

Pour l’assombrissement, on prend le carré de chaque couleur.

Pour l’éclaircissement, on prend la racine carrée de chaque couleur.

Disque

image25

On applique la formule du cercle : ( x − a )^2 + ( y − b )^2 = r^2 avec :

  • x et y coordonnées du pixel
  • a et b coordonnées du centre du cercle
  • r le rayon du cercle.

Cercle

image18

On ajoute une thickness pour ne colorier qu’une fine partie du disque dessiné auparavant.

Rosace

image17

On dessine 6 cercles supplémentaires autour du cercle central. Chaque nouveau cercle voit son centre être éloigné d’un rayon du centre du cercle initial, suivi d’un pivot de multiple de 60°. On obtient PI avec arccos(-1).

Mosaïque

image30image6

Pendant qu’on parcourt la grande image, on reboucle sur chaque cinquième pour dessiner le logo entièrement, nous laissant avec 4 boucles imbriquées.

Mosaïque Miroir

image6image11

On traite chaque cas de figure séparément, selon la ressemblance de comportement :

- les petites images dont la ligne et la colonne sont impaires

- les lignes impaires dont la colonne est paire

- pour les lignes paires : d’abord les colonnes impaires puis les colonnes paires

Glitch

image20image6

On prend un pixel de coordonnées et dimensions aléatoires et le positionne à des coordonnées aléatoires. Les valeurs aléatoires ont des valeurs minimales et des valeurs maximales pour obtenir l’effet souhaité.

Fractale de Mandelbrot

image3

On a séparé partie réelle et partie imaginaire parce que cela nous semblait plus clair. Pour se rapporter à l’intervalle [-2, 2], on a utilisé le produit en croix suivant : (x - a) * (d - c) / (b - a) + c avec x = valeur lue, a = valeur lue min, b = valeur lue max, c = valeur sortie min, d = valeur sortie max.

Vortex

image27image6

Le pixel subit une rotation plus conséquente autour du pixel central à mesure qu’il s’éloigne de ce dernier.

Tramage

image19image24

On applique la matrice 4x4 de Bayer à nos pixels pour voir si on les transforme en noir ou en blanc.

Normalisation de l'histogramme

image7image10

La luminosité d’un pixel est calculée en faisant la moyenne de ses 3 composantes r, g, b. Après avoir trouvé la luminosité la plus faible et la plus forte, on se rapporte à l’intervalle [0, 1] grâce à la formule citée à la fractale de Mandelbrot.

Convolutions / Netteté, Contours, etc

image6image23

image14image22image23image2

Le flou était relativement complexe à faire puisqu’il fallait savoir pour chaque pixel, comment itérer sur le carré de pixels l’entourant et appliquer les bons calculs. On n’a pas utilisé une matrice puisque toutes ses valeurs sont égales (1/taille^2), mais plutôt un float.

Les autres convolutions étaient en revanche beaucoup plus simples puisqu’il s’agit quasiment de la même fonction que pour le flou. Il suffisait d’appliquer une matrice différente pour obtenir un résultat différent.

 

About

workshop effet sur image sur c++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •