Auteur Sujet: Lift-Gamma-Gain-Contrast, maintenant online  (Lu 816 fois)

0 Membres et 1 Invité sur ce sujet

J'ai mis en ligne ce petit outil pour faire des corrections de couleurs assez fine sur une image.

http://www.gamesfrommars.fr/lift-gamma-gain-contrast/

Ca sort les facteurs qu'il faut pour générer la table de look-up. C'est vraiment pensé comme une sorte de touche finale sur une image a présenter aux gens donc pas de gros bouleversement possible dans le look-up. La formule pour générer la table est dans le js.

Pour les paramètres j'ai l'impression qu'il y a un sens, en général je commence par blanc => vert => rouge => bleu, en suivant pour chacun l'ordre contraste => gamma => gain => tilt.
La suite logique serait de rompre l'indépendance des canaux pour faire du gain une matrice 3x3, mais ça rajoute 6 paramètres.

Si il faut imaginer un use case pour quelqu'un d'autre que moi  ;), ben par exemple pour une démo ça serait prendre un screenshot de chaque scène et obtenir des facteurs de corrections pour homogénéiser le tout. Est-ce que vous pouvez vous risquer à un look-up au risque d'augmenter l'aliasing ? J'ai l'impression qu'on le peut souvent même en partant d'une source 8-bit.

j'ai posté vite fait le lien sur "Glitch Artists Collective: Tool Time"  ont sais jamais ça peut excité des curieux et pimenter leurs influences graphique, évidement comme ta page n'index aucune image test comparatif ça attire moins l'attention,

créé c'est bien, vendre c'est bien , mais faire les 2 c'est parfait, faire une pub une accroche un appas sur l’hameçon c'est déjà vendre, vendre à leurs esprit une forme mémorisable qui stimulera une appréhension, et tout est basé sur ça, des-fois je code un truc et j'me dis" personne ne se servira jamais de ce code n'y pour créé n'y même pour récupéré des algos puis-que un codeur qui se respect préférera s'inspiré de ça méditation du sujet plutôt que de pompé du code, bien que dans certain cas extrême ça fait pas de mal,
alors j'me dis "je code pour moi, et mon code survivra seulement si j'en liber un prestige, le produit créé influencera comme un bon roman et d'autre recoderons à leur sauce la recette de cette intrigue,

le principe du "regarde ça existe !"  il n'y a que ça

un sage découvre un vaccin qui guérira les zombies, c'est génial mais si personne ne le sais ça change rien , enfin il y a aussi le fait que si c'est possible un autres le trouvera,  c'est pr gagner le temps , même si il ne détint aucun vaccin il na cas dire que le vaccin existe ça poussera au moins certain à le rechercher,  une manipulation des idéaux collectif,

y a ceux qui tue sans raison , il sont juste fait pour tué, et ceux qui ont besoin d'une raison ,
ben nous c'est pareil, il y a les graindolium qui sont juste faite pour coder des tas de délire sans raison, et y a les poncounet qui ont besoin d'une raison , un bute ,
les butes apporte beaucoup de regret, et de tristesse,
bien sur j'ai des butes  mais j'aime que ça reste flou  bluré, depuis le pacman je ne vise rien , ça viens tout seul et ça prend sont temps, j'en est rien à foutre, y a que le plaisir qui est source !  et pour faire des démo c'est pareil , pas de deadline !

et puis ton correcteur d'image pourrait surtout s'appliqué aux vidéos, pourquoi pas youtube si c'est shader ça peut l'faire, mais justement ça c'est un autres codeur qui par influence devra se refarcir le taff, le bute c'était de lui soumettre l'idée de façon convaincante, la survie viens d'là !

y a la boisson pour les enfants : jus de fruit
la boisson pour les adulte : alcool, les adulte sont tousse des alcoolique seul moyen de redevenir des enfants
la boisson pour les fou : j'préfère rien dire !

en gros; quant ont code un truc ont se dis souvent "mon code s'adresse aux enfant alors je vais essayé d'imaginer en quoi c'est pas évident pour eux de comprendre ",  "mon truc c'est pour les alcooliques alors je vais voir comment les appâtés ", "mon truc c'est pour les fou je vais donc évité de les attirés je sais qu'ils finirons par enfoncé la porte "

les enfants deviens des fous puis deviens des adulte alcoolique, les vieux ont y pense généralement pas dans bien des concepts il sont assimiler à des enfants, ou à des alcooliques blasé



PS: de toute façon j'me demandais ce que tu mijotais , j'me doutais pas que t'était resté perché sur ton gamma correcteur  ::)


ton outil roule bien , y a pas de function équilibre par défaut, puis manipuler les courbes directement sur le canvas-courbe est plus pratique, sur paint.net c'est comme ça,

je suis influencer , j'ai envie de faire du shader , ça peut booster mes effets, faut juste que je trouve comment récupéré mon buffer en flottant,


    function GET_elem(x)
    { return parseFloat( ( document.getElementById(x) ).value ) }
    function SET_elem(x,y)
    { (document.getElementById(x)).innerHTML = y }

    var lift = GET_elem('lift'),
       gamma = 1.0 + GET_elem('gamma'),
        gain = 1.0 + GET_elem('gain'),
    contrast = GET_elem('contrast'),

        liftR = GET_elem('liftR'),
       gammaR = GET_elem('gammaR'),
        gainR = GET_elem('gainR'),
    contrastR = GET_elem('contrastR'),

        liftG = GET_elem('liftG'),
       gammaG = GET_elem('gammaG'),
        gainG = GET_elem('gainG'),
    contrastG = GET_elem('contrastG'),

        liftB = GET_elem('liftB'),
       gammaB = GET_elem('gammaB'),
        gainB = GET_elem('gainB'),
    contrastB = GET_elem('contrastB');

    SET_elem('liftV'     , "Lift = " + lift );
    SET_elem('gammaV'    , "Gamma = " + gamma );
    SET_elem('gainV'     , "Gain = " + gain );
    SET_elem('contrastV' , "Contrast = " + contrast );

    SET_elem('liftRV'     , "Lift = " + liftR );
    SET_elem('gammaRV'    , "Gamma = " + gammaR );
    SET_elem('gainRV'     , "Gain = " + gainR );
    SET_elem('contrastRV' , "Contrast = " + contrastR );

    SET_elem('liftGV'     , "Lift = " + liftG );
    SET_elem('gammaGV'    , "Gamma = " + gammaG );
    SET_elem('gainGV'     , "Gain = " + gainG );
    SET_elem('contrastGV' , "Contrast = " + contrastG );

    SET_elem('liftBV'     , "Lift = " + liftB );
    SET_elem('gammaBV'    , "Gamma = " + gammaB );
    SET_elem('gainBV'     , "Gain = " + gainB );
    SET_elem('contrastBV' , "Contrast = " + contrastB );

au lieu de
    function elem(x) { return document.getElementById(x); }

    var lift =  parseFloat(elem('lift').value);
    var gamma = 1.0 + parseFloat(elem('gamma').value);
    var gain = 1.0 + parseFloat(elem('gain').value);
    var contrast = parseFloat(elem('contrast').value);

    var liftR = parseFloat(elem('liftR').value);
    var gammaR = parseFloat(elem('gammaR').value);
    var gainR = parseFloat(elem('gainR').value);
    var contrastR = parseFloat(elem('contrastR').value);

    var liftG = parseFloat(elem('liftG').value);
    var gammaG = parseFloat(elem('gammaG').value);
    var gainG = parseFloat(elem('gainG').value);
    var contrastG = parseFloat(elem('contrastG').value);

    var liftB = parseFloat(elem('liftB').value);
    var gammaB = parseFloat(elem('gammaB').value);
    var gainB = parseFloat(elem('gainB').value);
    var contrastB = parseFloat(elem('contrastB').value);

    elem('liftV').innerHTML = "Lift = " + lift;
    elem('gammaV').innerHTML = "Gamma = " + gamma;
    elem('gainV').innerHTML = "Gain = " + gain;
    elem('contrastV').innerHTML = "Contrast = " + contrast;

    elem('liftRV').innerHTML = "Lift = " + liftR;
    elem('gammaRV').innerHTML = "Gamma = " + gammaR;
    elem('gainRV').innerHTML = "Gain = " + gainR;
    elem('contrastRV').innerHTML = "Contrast = " + contrastR;

    elem('liftGV').innerHTML = "Lift = " + liftG;
    elem('gammaGV').innerHTML = "Gamma = " + gammaG;
    elem('gainGV').innerHTML = "Gain = " + gainG;
    elem('contrastGV').innerHTML = "Contrast = " + contrastG;

    elem('liftBV').innerHTML = "Lift = " + liftB;
    elem('gammaBV').innerHTML = "Gamma = " + gammaB;
    elem('gainBV').innerHTML = "Gain = " + gainB;
    elem('contrastBV').innerHTML = "Contrast = " + contrastB;


uais enfaite ta juste amélioré l'interface, j'aime bien ton code pour une fois, il est claire,  et puis tu utilise une lib pour généré le shader pratique,


ça c'est un gros badnav !!
//Table = new Array(256);
canvas.draw(texture).curves(redTransferTable, greenTransferTable, blueTransferTable).update();

et si mon image n'est pas 24bits moisi !!  ça veux dire que cette lib est limité , vas falloir que je me code ma lib pour généré un shader, cool y a du taff comme toujours


ué ont peut pas save le canvas !
y a trop de truc à déjoué, j'ai de quoi coder un fragment shader, je pousse tout ça de côté  ont verra plus tard, franchement c'est puissant pour mes blur ça serait parfait, les rotations c'est trop non linéaire, pour les distordions parfait, et même quelques autres effet bidon, reste à charger une texture et trouvé comment intercepté un buffer, ah oui et faut que j'me retape toute mes functions en langage glsl super merde,
:)  ont à jamais fini,

comment récupéré la puissance de cette salope de carte graphique ?!

PS:  suffit d'utiliser canvas.getContext("experimental-webgl", {preserveDrawingBuffer: true});  pour pouvoir save le canvas ,  là elle fait moins ça salope,