CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Théorie]Désaturer un bitmap

fil_razorback
fil_razorback
Niveau 10
02 octobre 2006 à 16:14:37

Pour une fois que j´ai un problème intelligent, je vais vous en faire profiter.

Mon objectif est simple : désaturer une image bitmap (l´équivalent de saturation -100 sous photoshop) c´est à dire la passer en niveau de gris.
Toutes mes couleurs ont la forme 0xRRVVBBAA (rouge, vert, bleu...et alpha mais on s´en fout)

Mes investigations m´ont permis de remarquer qu´un gris à la meme valeur en RR, VV et BB. Pour désaturer une couleur il suffirait donc d´aligner RR, VV et BB sur la plus élevée de ces valeurs. Exemple : la version insaturée de FF002E serait FFFFFF
Jusque là je crois que j´ai bon.

Là ou ça devient problématique c´est qu´en Flash je n´ai pas accès à toutes les données necessaires, j´en ai peur. Worse case scenario, je peux tout régler pixel par pixel à la main mais j´aimerais mieux reussir à traiter toute l´image d´un coup.

Les méthodes à ma disposition sont :
:d) Modifier les 3 canaux de l´image selon la formule suivante :
nouvelle valeur canal rouge (de chaque pixel) = (ancienne valeur canal rouge * A) + B
où A (entre 0 et 1) et B (entre -255 et +255) sont deux nombres que je choisis arbitrairement. La meme formule s´applique aux canaux vert et bleu avec des valeurs différentes de A et B.

:d) Remplacer la valeur d´un canal de chaque pixel par une autre.
Cette methode est tres proche de ce que je veux faire, ça me permet d´égaliser les 3 canaux de chaque pixel (et donc vraisemblablement avoir du gris)...sauf que je ne peux pas savoir quel canal à la valeur la plus élevée. Mon FF0E4B pourrait aussi bien devenir 0E0E0E ou encore 4B4B4B...

Voilà voilà, si quelqu´un a une idée sur la question, merci de me le faire savoir.

grosbill7b
grosbill7b
Niveau 10
02 octobre 2006 à 16:31:03

hum j´ai du mal à voir clairement à quel point exactement tu bloques. si je comprends bien, tu veux faire sous flash une désaturation? impossible de le faire sous toshop?

fil_razorback
fil_razorback
Niveau 10
02 octobre 2006 à 16:34:13

Dans le jeu je vais avoir besoin de mes icones en saturée ET en désaturée. Si je stocke tout à l´avance c´est deux fois plus lourd (et aussi plus chiant à faire).
Etant donné qu´il risque d´y avoir beaucoup d´icones, j´ai tout interet à le faire via le code.

grosbill7b
grosbill7b
Niveau 10
02 octobre 2006 à 16:45:03

ah ok je vois!

tu ne peux pas créer un filtre ayant les memes dimensions que tes icones, qui se placerait devant les icones à désaturer, et qui les "filtrerait"? comme ça tu n´as que tes icones saturées et un filtre.

ce systeme était utilisé par un jeu de role... mais j´ai oublié lequel... je me demande si ce n´était pas baldur´s gate

fil_razorback
fil_razorback
Niveau 10
02 octobre 2006 à 17:26:56

Ben tout mon probleme c´est de créer le filtre en question. Malheuresement, on a pas encore inventé bitmap.desaturate();

godrik
godrik
Niveau 30
02 octobre 2006 à 17:33:13

fil, il faut en effet le faire pixel par pixel, tu n´as pas trop le choix...
Comment penses tu que fait photoshop ?
en vrai, lui il doit utiliser ta carte graphique pour faire les calculs plus rapidement, mais fondamentalement, ilfait les calculs pixel par pixel.

PS: je ne connais pas le calcul de désaturation.

fil_razorback
fil_razorback
Niveau 10
02 octobre 2006 à 17:44:18

En fait je me suis mal expliqué. Je me doute bien que au final tout se passe pixel par pixel mais flash propose des methodes de traitement appliquées à l´image entiere (les methodes évoquées dans mon premier post). J´oppose ces methodes à un calcul codé main (et donc bien plus lent) sur chaque pixel.

LGV
LGV
Niveau 28
02 octobre 2006 à 19:52:29

pour tout ce qui est luminosite/saturation/etc. travaille en YUV c´est bcp plus pratique (et reconverti en RGB apres).

Photoshop ne se base pas sur la carte graphique, car le resultat des shaders dependent des reglages des drivers (et de toute maniere, faire par ex. du gaussian blur avec des kernels de convolution de 256 , mieux vaut le faire sur CPU en SSE)

pour des operations per-pixel cote GPU, la vectorisation est souvent interessante (encore faut il avoir access a du tres bas niveau)

LGV
LGV
Niveau 28
02 octobre 2006 à 20:04:23

cette fonction d´edition manque toujours autant..

lire "pour faire du per-pixel cote *CPU* la vectorisation" etc.

(le parallelisme est plus ou moins harcode pour les GPUs)

godrik
godrik
Niveau 30
02 octobre 2006 à 22:58:26

LGV: ah bon, j´avais cru comprendre qu´une partie des opératio faites par phtoshop et cie utilisait la CG pour faire les calculs plus vite ?

Sinon, la vectorialisation des SSE doit en effet etre efficace, mais y a t´on access a partir de flash ?

fil_razorback
fil_razorback
Niveau 10
02 octobre 2006 à 23:05:47

Merci LGV, je n´ai pas accès au bas niveau (du tout) mais par contre le YUV m´interesse. Seul souci : je me trompe surement mais sur le spectre YUV (
http://upload.wikimedia.o.org/wikipedia/fr/e/ec/Yuv.png ) je ne vois ni blanc, ni noir ni gris. J´ai raté un épisode ?

godrik
godrik
Niveau 30
02 octobre 2006 à 23:42:16

ca c´est U/V que tu présente, ou est Y ?

LGV
LGV
Niveau 28
03 octobre 2006 à 09:53:50

Y c´est justement la composante de luminance ; U et V sont des offsets dans un espace arbitraire (on trouve par exemple des appelations YU1U2 ou YUW pour des codages differentes de la teinte).

et non en effet je ne pense pas que le SSE soit accessible en flash (trop hardware specifique pour qqch qui se veut abstrait).

pour photoshop, rien n´est impossible, mais je n´ai jamais entendu qqch de la sorte, et j´en doute toujours du simple fait que le resultat depend du hardware et des reglages ; a priori Photoshop se veut un soft deterministe

fil_razorback
fil_razorback
Niveau 10
03 octobre 2006 à 16:59:03

Donc si Y=0 la saturation est nulle ?

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment