Git Product home page Git Product logo

c-synthese-image's Introduction

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.

 

c-synthese-image's People

Contributors

anassdoublal avatar adxdits avatar julesfouchy avatar

Watchers

 avatar

Forkers

cours-prog-imac

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.