IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement d'images Discussion :

Passer d'un rendu RGB par calculs à un rendu RYB par une table


Sujet :

Traitement d'images

  1. #141
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    Tu as livré un document intéressant, susceptible de conduire à un traitement global de ta palette.
    Merci, ça fait plaisir, si si

    De mon côté, je vais bientôt me prendre pour un light jockey ou plutôt, un ingénieur du son orienté lumières, regardez plutôt :

    Nom : light_console.jpg
Affichages : 215
Taille : 47,4 Ko

    Et c'est vrai que depuis que j'ai découvert Stones, Beatles, rock, jazz, etc., le métier d'ingé son et ses consoles démentes m'a toujours fait rêver… Bah, ça sera pour la prochaine fois.

    Bon, j'ai mis une image réduite de moitié donc esquintez-vous un peu les yeux, chacun son tour, en plus les curseurs sous Lazarus c'est pas vraiment la joie (si encore je pouvais colorier les boutons, mais non…), mais bon, je vous assure que ce que vous peinez à voir représente très exactement les valeurs vues dans le tableur de la fin de matinée.
    Il me faut encore mettre le code sous les curseurs pour avoir une interaction instantanée avec le cercle, ça sera pour demain, à chaque jour suffit sa peine.
    Là j'ai fait l'immeuble avec ses canalisations, ses peintures, demain j'emménage,

    Je n'ai pas perdu de vue tes efforts avec les calculs, je vais voir comment je peux mixer tout ça : en haut à droite de l'outil il y a une zone libre, "reserved for future use",

  2. #142
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Bonsoir,

    Pas bien compris, là :
    Citation Envoyé par wiwaxia Voir le message
    Tu pourrais envisager une modification progressive des teintes par atténuation (ou exaltation) des pics vert et bleu, à l'aide de deux tableaux indépendants,
    Deux tableaux de… 24 cases ? C'est déjà ce que j'ai.
    Regarde les colonnes Green et Blue à gauche sur l'image : ce sont des tableaux verticaux de 24 cases.

    C'est donc ces valeurs qu'il faudrait recalculer à partir de tes formules ? Je vais y réfléchir…

    En fait, tu aurais dû écrire, si j'ai bien compris,
    Tu pourrais envisager une modification progressive des teintes par atténuation (ou exaltation) des pics vert et bleu, en retouchant les valeurs des colonnes Green et Blue,
    c'est ça ?

  3. #143
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table
    Citation Envoyé par Jipété Voir le message
    ... Pas bien compris, là :

    Deux tableaux de… 24 cases ? C'est déjà ce que j'ai.
    Regarde les colonnes Green et Blue à gauche sur l'image : ce sont des tableaux verticaux de 24 cases.

    C'est donc ces valeurs qu'il faudrait recalculer à partir de tes formules ? Je vais y réfléchir…

    En fait, tu aurais dû écrire, si j'ai bien compris,
    Tu pourrais envisager une modification progressive des teintes par atténuation (ou exaltation) des pics vert et bleu, en retouchant les valeurs des colonnes Green et Blue,
    c'est ça ?
    Si c'est plus parlant pour toi ...
    Quel est sont type et le nom de ta palette complète de couleurs ? Ce serait plus simple de me raccorder à tes conventions.

    Nom : Jpt_Matrice_Couleurs.png
Affichages : 186
Taille : 50,3 Ko

    Tu utilises apparemment un tableau de Bytes à 24 lignes et 3 colonnes; il faut lui adjoindre un tableau de fonctions réelles de mêmes dimensions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TYPE Tab24x3R = ARRAY[1..3, 1..3] OF Extended;
    VAR F: Tab24x3R;
    dont la première colonne ne comporterait que ses "1", et le deux autres les facteurs correctifs dont j'ai parlé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    F[i, 1] = 1 ;                                                                 // Pa s de correction des valeurs
    F[i, 2] = Cv[i] = 1 + Kv*Cos(360°*(i - 11)/24) = 1 + Kv*Cos(Pi*(i - 11)/12)   // Correction pour le vert
    F[i, 3] = Cb[i] = 1 + Kb*Cos(360°*(i - 18)/24) = 1 + Kb*Cos(Pi*(i - 18)/12)   // Correction pour le bleu
    Il intervient donc deux variables réelle indépendantes (Kv, Kb) dont j'ai déjà signalé les limitations.

    En déclarant les matrices de couleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TYPE T_Palette = ARRAY[1..24, 1..3] OF Byte;
    VAR Palette_1, Palette_2: T_Palette;
    la nouvelle (Palette_2) découlerait du produit terme à terme de la précédente (Palette_1) par la matrice de correction (F),;
    il suffirait de lancer les instructions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FOR j:= 1 TO 3 DO
      FOR i:= 1 TO 24 DO
        Palette_2[i, j]:= Round(Palette_1[i,j] * F(i, j]);

  4. #144
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    Si c'est plus parlant pour toi ...
    Oh que oui !

    Citation Envoyé par wiwaxia Voir le message
    Quel est son type et le nom de ta palette complète de couleurs ? Ce serait plus simple de me raccorder à tes conventions.
    Pas de type particulier, des bytes qui se suivent et s'empilent, pas de nom spécial, c'est une fonction que j'appelle ainsi, par exemple pour positionner les curseurs à leur bonne valeur au lancement du prog :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    procedure TForm3.SetupLesCurseurs;
    var
      i: integer;
      r,g,b: byte;
    begin
      for i := 0 to nbrecoul-1 do begin // nombre de couleurs, sous-entendu nombre de colonnes verticales pour les présenter/afficher
        // récup. de la couleur et extraction des bytes -- même principe pour peindre le bitmap "map" d'où sortira le cercle
        ColorToRGB( RGBColorsForRYBDisplay(i, nbrecoul), r, g ,b ); 
        // les 3 panneaux contiennent chacun 24 TGroupBox contenant une case à cocher en haut et un curseur vertical dessous
        with pnlRouge do with (Controls[i] as TGroupBox) do (Controls[1] as TTrackBar).Position := r;
        with pnlVerte do with (Controls[i] as TGroupBox) do (Controls[1] as TTrackbar).Position := g;
        with pnlBleue do with (Controls[i] as TGroupBox) do (Controls[1] as TTrackbar).Position := b;
      end;
    end;

    Les détails :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function RGBColorsForRYBDisplay(x, nc: integer): TColor; 
    // x = index pour avancer dans la map, colonne après colonne.  nc = nombre de couleurs (6, 8, 12, 16, 24)
    var
      r,g,b: byte;
    begin
        if nc = 6 then begin
          if x = 0 then begin r:=255; g:=000; b:=000; end;// 1 R
          if x = 1 then begin r:=255; g:=127; b:=000; end;// 2 O
          if x = 2 then begin r:=192; g:=255; b:=000; end;// 3 J
          if x = 3 then begin r:=000; g:=255; b:=063; end;// 4 V
          if x = 4 then begin r:=000; g:=000; b:=255; end;// 5 B
          if x = 5 then begin r:=127; g:=063; b:=192; end;// 6 M
        end;
     
    // je passe les cas 8, 12, 16 qui ne feraient qu'alourdir ici,
    // juste une précision : 8 et 16 induisent des décalages sur le cercle non compatibles avec un dégradé RYB
     
        if nc = 24 then 
          case x of  // avec correction calc
            0: begin r:=237; g:=020; b:=030 end; //1
            1: begin r:=245; g:=053; b:=015 end; //2
            2: begin r:=246; g:=080; b:=009 end; //3
            3: begin r:=247; g:=108; b:=008 end; //4
            4: begin r:=249; g:=136; b:=006 end; //5
            5: begin r:=250; g:=160; b:=005 end; //6
            6: begin r:=255; g:=184; b:=005 end; //7
            7: begin r:=240; g:=201; b:=005 end; //8
            8: begin r:=225; g:=210; b:=005 end; //9
            9: begin r:=200; g:=224; b:=021 end; //10
           10: begin r:=167; g:=227; b:=046 end; //11
           11: begin r:=133; g:=221; b:=070 end; //12
           12: begin r:=073; g:=205; b:=098 end; //13
           13: begin r:=037; g:=173; b:=127 end; //14
           14: begin r:=005; g:=146; b:=174 end; //15
           15: begin r:=012; g:=112; b:=203 end; //16
           16: begin r:=034; g:=086; b:=220 end; //17
           17: begin r:=053; g:=065; b:=225 end; //18
           18: begin r:=080; g:=048; b:=215 end; //19
           19: begin r:=111; g:=036; b:=220 end; //20
           20: begin r:=145; g:=024; b:=203 end; //21
           21: begin r:=168; g:=021; b:=146 end; //22
           22: begin r:=196; g:=018; b:=095 end; //23
           23: begin r:=226; g:=008; b:=052 end; //24
         end;
     
      result := RGBtoColor(r, g, b);
    end;

    Ce qui est intéressant, c'est qu'en jouant avec l'outil de génération de palettes vu il y a quelques jours (2 semaines déjà  !, comme le tampax vite [trop facile, ]), celui-ci incorpore un bouton "copier/coller" qui me permet de récupérer toute cette section case x of... end; d'un seul coup pour venir la coller dans cette fonction, très rapide et très pratique, mais je vais peut-être bosser sur une version encore plus interactive avec les 24 curseurs.
    Ça va dépendre de ce que me sortent tes calculs.
    Parce que si j'ai bien compris, ce sont toutes les valeurs G et B qui vont être redéfinies ?

    Allez, je m'y colle…

  5. #145
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Bon voilà,

    l'ami wiwaxia avait laissé traîner une blagounette, pour voir si je suivais plutôt que de rêvasser en regardant par la fenêtre, au fond, contre le radiateur, mais je l'ai trouvée (grâce entre autres à ma manie de bien aligner les choses) !
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Table24x3 = ARRAY[1..3, 1..3] OF Extended; // original 
      // pourquoi 24x3 et 1..3 1..3 ? Tentons :
      Table24x3 = ARRAY[1..24, 1..3] OF Extended;


    J'ai également remplacé deux-trois bricolettes, histoire de mieux m'y retrouver (genre Palette_1 et Palette_2 non mais allô quoi ! Palette_Old et Palette_New, quand on relit, c'est 'achement + cool !), j'ai ajouté les variables qui manquaient, j'ai concocté ça, et ma foi…
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    procedure TForm3.btnCorrectionsWWXClick(Sender: TObject);
    TYPE
      Table24x3 = ARRAY[1..24, 1..3] OF Extended;
      T_Palette = ARRAY[1..24, 1..3] OF Byte;
    VAR
      F: Table24x3;
      i,j: integer;
      Kv,Kb: Extended;
      Palette_Old, Palette_New: T_Palette;
      r,g,b: byte;
    begin
    //  Kv := 0.12;  Kb := 0.13;
      Kv := 0.08;  Kb := 0.09;
    //  Kv := 0.02;  Kb := 0.03;
     
      for i := 1 TO 24 do begin
        F[i, 1] := 1;                          // Pas de correction des valeurs
        F[i, 2] := 1 + Kv*Cos(Pi*(i - 11)/12); // Correction pour le vert
        F[i, 3] := 1 + Kb*Cos(Pi*(i - 18)/12); // Correction pour le bleu
      end;
     
      FOR j:= 1 TO 3 DO
        FOR i:= 1 TO 24 DO begin
          // -1- "fabrication" de Palette_Old :
          case j of  // 'tention pas confondre "i" et "1" dans la pile de Controls[x]
            1:with pnlRouge do with (Controls[i-1] as TGroupBox) do
                Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
            2:with pnlVerte do with (Controls[i-1] as TGroupBox) do
                Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
            3:with pnlBleue do with (Controls[i-1] as TGroupBox) do
                Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
          end;
          // -2- corrections wwx
          Palette_New[i, j]:= Round(Palette_Old[i, j] * F[i, j]);
        end;
     
      // résultats :
    {  FOR j:= 1 TO 3 DO begin
        FOR i:= 1 TO 24 DO
          memo1.Lines.Add(format('%3d %3d', [Palette_New[i,j], Palette_Old[i,j]]));
        memo1.Lines.Add('');
      end;}
      FOR i:= 1 TO 24 DO begin
        FOR j:= 1 TO 3 DO
        case j of
          1: r := Palette_New[i,j];
          2: g := Palette_New[i,j];
          3: b := Palette_New[i,j];
        end;
    //    memo1.Lines.Add(format('%3d %3d %3d', [r,g,b]));
        memo1.Lines.Add(format('%.3d;%.3d;%.3d', [r,g,b]));// pour tableur
      end;
    end;

    … ça l'a fait :

    Nom : résultats_corrections_wwx.png
Affichages : 184
Taille : 52,5 Ko

    Comparez attentivement les 2e et 3e colonnes d'une sortie à l'autre, ainsi qu'avec l'original, c'est instructif


    Mon gars, t'es le plus fort ! Sans toi je ne sais pas où je serais, à ce jour.

    Bon, plus qu'à balancer les valeurs dans le tableur, puis dans le "case of" dont j'ai causé un peu plus tôt et qui permettra de voir irl ce que ça donne, mais d'abord à taaaaaaable que c'est l'heure de l'apéro, bien mérité,

  6. #146
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Allez, je vais un peu laisser décanter/reposer, avant d'y retourner, car si j'ai bien des résultats corrects dans le tableur :

    Nom : compar_correct_wwx_v2.gif
Affichages : 1021
Taille : 124,4 Ko

    1re image, l'original avec les valeurs en couleurs d'hier
    2e avec les correction Kv 0.08 Kb 0.09 en mode 1 to 24
    3e avec les correction Kv 0.08 Kb 0.09 en mode 0 to 23 (oui, je me suis rendu compte qu'il y avait une différence, visible au niveau des valeurs, surement pas dans le dégradé)
    4e avec les correction Kv 0.12 Kb 0.13 en mode 1 to 24
    5e avec les correction Kv 0.02 Kb 0.03 en mode 1 to 24

    il nous faudra quand même l'avis de l'expert pour nous expliquer qu'est-ce que c'est que ce dos de chameau sur les courbes bleues (sauf l'original).

    Par ailleurs, j'ai eu une intuition et j'ai lancé le prog en lui forçant une couleur rouge 255,0,0 partout, et ça donne ça :

    Nom : color_red_only.png
Affichages : 185
Taille : 39,1 Ko

    Alors àmha autant la partie dégradée de l'extérieur noir au milieu de la zone (où se trouve deux "bourrelets" rouge clair et rouge foncé) est correcte, autant je trouve atroce l'autre partie, du bourrelet foncé au centre blanc en passant par plein de gris moches,

    Vos avis, les gens ?

  7. #147
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table
    C'est quoi, cette multiplication ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Palette_New[i, j]:= Round(Palette_Old[i, j] * F[i, j]);
    Peux-tu m'indiquer la source au sujet du produit de deux tableaux en Free Pascal ?

    Et il ne devrait pas y avoir de dos de chameau. Exclusivement des dromadaires.

    Je n'ai pas le temps de rester.

    PS: J'ai le vague pressentiment que tu as décalé les valeurs en ne modifiant pas correctement des formules. Je reste zen.

  8. #148
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    PS: J'ai le vague pressentiment que tu as décalé les valeurs en ne modifiant pas correctement des formules. Je reste zen.
    Tu as raison de rester zen, comme ça tu pourras te flageller en toute tranquillité,

    Citation Envoyé par wiwaxia Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Palette_New[i, j]:= Round(Palette_Old[i, j] * F[i, j]);
    Peux-tu m'indiquer la source au sujet du produit de deux tableaux en Free Pascal ?
    Mais bien sûr :

    Citation Envoyé par wiwaxia Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Palette_2[i, j]:= Round(Palette_1[i,j] * F(i, j]);


    Citation Envoyé par wiwaxia Voir le message
    Et il ne devrait pas y avoir de dos de chameau. Exclusivement des dromadaires.
    Ah, les mystères de l'informatique…

    Je viens de revérifier, y a d'lézard, juste une microscopique différence selon que j'utilise for i := 0 to 23 ou for i := 1 to 24, mais le creux reste bien présent.
    Tiens, juste avec 012-013 :
    Nom : 012013_v23-24.gif
Affichages : 224
Taille : 43,9 Ko

    Et comme l'animation va vite, si tu veux les valeurs, les voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    mode24 012013
    237;018;029
    245;049;014
    246;075;008
    247;105;007
    249;136;005
    250;165;004
    255;195;004
    240;218;004
    225;232;005
    200;250;020
    167;254;044
    133;247;070
    073;226;101
    037;188;135
    005;155;190
    012;115;226
    034;086;248
    053;063;254
    080;045;242
    111;033;245
    145;022;222
    168;019;155
    196;016;098
    226;007;052
     
    mode23 012013
    237;018;030
    245;047;014
    246;073;008
    247;102;007
    249;132;005
    250;160;004
    255;190;004
    240;213;004
    225;228;004
    200;247;019
    167;253;043
    133;248;068
    073;229;098
    037;191;131
    005;158;185
    012;119;222
    034;089;245
    053;065;253
    080;047;243
    111;034;248
    145;022;226
    168;019;159
    196;016;101
    226;007;054

  9. #149
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Ah, les mystères de l'informatique…
    Elle a bon dos, l'informatique (répartie digne d'un chameau)

    Ma calculette me dit;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Kv = 0.12
     i    Iv       Fv   Jv(reel)   Jv
    09   210   1.10392   231.82   232  
    10   224   1.11591   249.96   250
    11   227   1.12000   254.24   254
    12   221   1.11591   246.62   247
    13   205   1.10392   226.30   226
    
    Kb = 0.13
     i    Ib       Fb   Jb(reel)   Jb
    16   203   1.11258   225.85   226
    17   220   1.12557   247.63   248
    18   225   1.13000   254.25   254
    19   220   1.12557   247.63   248
    20   203   1.11258   225.85   226
    Nom : Jpt_Matrice_Couleurs_Extraits.png
Affichages : 190
Taille : 200,9 Ko

  10. #150
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Les mystères de l'informatique… (suite)
    Il faut le maximum de l'indice de couleur I(i) coïncide avec celui du facteur de correction F(i), sinon le produit correspondant
    J(i) = I(i)*F(i) présente de nouveaux extremums par dédoublement du pic initial, et ses variations n'ont aucun sens.

    En conséquence tout changement concernant l'indexation de la palette doit s'accompagner d'une modification appropriée de l'expression de F(i):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    F[i, 1] = 1 ;                                                                       // Pas de correction des valeurs
    F[i, 2] = Cv[i] = 1 + Kv*Cos(360°*(i - ImaxV)/24) = 1 + Kv*Cos(Pi*(i - ImaxV)/12)   // Correction pour le vert
    F[i, 3] = Cb[i] = 1 + Kb*Cos(360°*(i - ImaxB)/24) = 1 + Kb*Cos(Pi*(i - ImaxB)/12)   // Correction pour le bleu
    Là-dessus, je remballe l'ordinateur.

  11. #151
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Je ne comprends rien à tes explications sibyllines : tu encadres en rouge les valeurs de l'original, très bien, et alors ? Et après ? Qu'est-ce qu'on est censé y comprendre et en déduire ?
    Oui, que j'aurais dû incorporer la colonne qui indique la numérotation des lignes, pour s'y retrouver ça aurait été plus sympa (j'y penserai la prochaine fois), mais sinon, tu nous mets en rouge un 254 à la ligne 11 pour V et à la ligne 18 pour B, très bien, ce sont les valeurs qu'on retrouve sur le gif où il n'y a que 2 images, plus particulièrement sur l'image taggée version for i := 1 to 24, donc les calculs sont en phase avec ta calculette, et ?

    Si je prends l'image avec les valeur calculées avec 0.12 et 0.13 et for i := 1 to 24, voilà ce que ça donne :

    Nom : 11-254_18-254.png
Affichages : 181
Taille : 10,4 Ko

    Qu'en conclure ?


    Autre post, nouveaux calculs, nouvelles variables, dont on ne connaît pas la valeur.
    C'est quoi ces ImaxV et ImaxB ? La valeur maximum parmi les 24 valeurs des colonnes V et B respectivement ? Ou bêtement 255 ?

    Parce que la phrase précédant les formules et censée donner des indications me plonge en plein brouillard, désolé, pour moi, ça
    Citation Envoyé par wiwaxia Voir le message
    Il faut [que] le maximum de l'indice de couleur I(i) coïncide avec celui du facteur de correction F(i)
    c'est un charabia totalement incompréhensible que je suis parfaitement incapable d'appréhender et donc de mettre en œuvre.

    Un jour j'ai demandé à ce qu'on m'explique comme à un gamin de 5 ans, mais ce souhait est grave passé à la trappe…

  12. #152
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 442
    Points : 5 862
    Points
    5 862
    Par défaut
    salut

    il as déjà expliqué à quoi correspond le maximum en prenant l'exemple du 11 et du 18

    voici la citation
    Tu pourrais envisager une modification progressive des teintes par atténuation (ou exaltation) des pics vert et bleu, à l'aide de deux tableaux indépendants,
    - l'un pour le vert (Cv[i]) présentant un maximum au 11me terme, correspondant à un angle de 165 ° = 360*11/24 ;
    - l'autre pour le bleu (Cv[i]) présentant un maximum au 18me terme, correspondant à un angle de 270 ° = 360*18/24 .

    Il interviendrait dans les deux séquences le même type de loi sinusoïdale

    Cv[i] = 1 + Kv*Cos(360°*(i - 11)/24) = 1 + Kv*Cos(Pi*(i - 11)/12) <= 1 + Kv (valeur maximale correspondant à i = 11) ;

    Cb[i] = 1 + Kb*Cos(360°*(i - 18)/24) = 1 + Kb*Cos(Pi*(i - 18)/12) <= 1 + Kb (valeur maximale correspondant à i = 18) .

    permettant de calculer les nouvelles valeurs (Jv, Jb) des composantes du vert et du bleu en fonction des anciennes, par un simple produit terme à terme:
    Jv[i] = Iv[i] * Cv[i] = Iv[i] * (1 + Kv*Cos(Pi*(i - 11)/12)) ;
    Jb[i] = Ib[i] * Cb[i] = Ib[i] * (1 + Kb*Cos(Pi*(i - 18)/12)) .

  13. #153
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Yep !
    Citation Envoyé par anapurna Voir le message
    voici la citation
    Oui, merci, mais tu en as oublié un bout :

    Citation Envoyé par wiwaxia Voir le message
    Il te faut faire une série d'essais sur les deux coefficients indépendants (Kv, Kb) afin de parvenir au résultat optimal; la solution est purement pratique, et liée à l'appréciation de chacun.

    Les rapports sont bornés supérieurement, et doivent vérifier:
    # pour le vert: 1 + Kv <= 255/227 d'où: Kv <= 28/227 = 0.1233 ;
    # pour le bleu: 1 + Kb <= 255/225 d'où: Kb <= 30/225 = 0.1333 .
    Une valeur négative (pour le vert ?) n'est pas exclue.
    Pour en revenir à la nouvelle formule, j'écris ça comme ça :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // nouvelle proposition :
    F[i, 1] = 1 ;                                                                       // Pas de correction des valeurs
    F[i, 2] = Cv[i] = 1 + Kv*Cos(360°*(i - ImaxV)/24) = 1 + Kv*Cos(Pi*(i - ImaxV)/12)   // Correction pour le vert
    F[i, 3] = Cb[i] = 1 + Kb*Cos(360°*(i - ImaxB)/24) = 1 + Kb*Cos(Pi*(i - ImaxB)/12)   // Correction pour le bleu    
    // dont on déduit formule v2
    F[i, 1] := 1 ;                                // Pas de correction des valeurs
    F[i, 2] := 1 + Kv*Cos(Pi* (i - ImaxV)/12 );   // Correction pour le vert
    F[i, 3] := 1 + Kb*Cos(Pi* (i - ImaxB)/12 );   // Correction pour le bleu  
    // à comparer avec formule v1
    F[i, 1] := 1;                            // Pas de correction des valeurs
    F[i, 2] := 1 + Kv*Cos(Pi* (i - 11)/12 ); // Correction pour le vert
    F[i, 3] := 1 + Kb*Cos(Pi* (i - 18)/12 ); // Correction pour le bleu
    Et rien pour me dire précisément comment calculer ImaxV et ImaxB (ma supposition d'hier soir à pas d'heure n'avait pas trop de sens, mais il était tard).

    Kv et Kb, il a donc été dit qu'il fallait faire des essais, d'où mes tests avec les couples 0.02 0.03, 0.08 0.09 et 0.12 0.13, avec les dos de chameau en résultat, et je ne sais pas quoi mettre à la place de ImaxV et ImaxB.

  14. #154
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table
    Citation Envoyé par Jipété Voir le message
    ... Et rien pour me dire précisément comment calculer ImaxV et ImaxB (ma supposition d'hier soir à pas d'heure n'avait pas trop de sens, mais il était tard).

    Kv et Kb, il a donc été dit qu'il fallait faire des essais, d'où mes tests avec les couples 0.02 0.03, 0.08 0.09 et 0.12 0.13, avec les dos de chameau en résultat, et je ne sais pas quoi mettre à la place de ImaxV et ImaxB.
    (ImaxV) et (ImaxB) désignent , dans la liste d'origine, les rangs (ou les ordinaux) des valeurs maximales pour chacune des composantes verte et bleue; on a donc:
    ImaxV = 11 , ImaxV = 18
    si le dénombrement n'a pas été modifié.
    Nom : Formules_ImaxV_ImaxB.png
Affichages : 254
Taille : 7,7 Ko
    Je pensais la notation suffisamment transparente.

    Il n'y a pas de "dos de chameau", en aucune façon. Je ne comprends pas ce que tu as fait - ou plus exactement je le devine, mais ne vois pas comment se sont introduites de pareilles complications. .

  15. #155
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Bonsoir,

    Donc tu es parti l'autre jour dans une explication qui avait déjà été donnée, si je comprends bien ton image :
    Citation Envoyé par wiwaxia Voir le message
    Nom : Formules_ImaxV_ImaxB.png
Affichages : 254
Taille : 7,7 Ko
    Le problème, c'est que comme c'est EXACTEMENT ce qu'il y a dans mon code, donc le problème doit être ailleurs… :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Kv := 0.12;  Kb := 0.13;
    //  Kv := 0.08;  Kb := 0.09;
    //  Kv := 0.02;  Kb := 0.03;
     
      for i := START TO NCOL do begin // constantes pour tester avec 0..23 ou 1..24
        F[i, 1] := 1;                          // Pas de correction des valeurs
        F[i, 2] := 1 + Kv*Cos(Pi*(i - 11)/12); // Correction pour le vert
        F[i, 3] := 1 + Kb*Cos(Pi*(i - 18)/12); // Correction pour le bleu
      end;
    Là-dessus on voit bien "11" à la même place que dans ton image, et pareil pour "18".

    À part faire tourner une table, là je ne vois pas ce qu'il faut faire.

    Citation Envoyé par wiwaxia Voir le message
    Je pensais la notation suffisamment transparente.
    Dans la mesure où j'avais exactement le même code que toi, ça a plus embrouillé qu'autre chose, je suis parti chercher une erreur qui n'existait pas.

    Citation Envoyé par wiwaxia Voir le message
    Je ne comprends pas ce que tu as fait - ou plus exactement je le devine, mais ne vois pas comment se sont introduites de pareilles complications. .
    Explique, au lieu de jouer aux devinettes, parce que là, ça me dépasse. Il n'y avait aucune bonne raison pour que je modifie quoi que ce soit dans la mesure où j'aurais été incapable d'écrire l'original.
    Allez, je retourne à mes dégradés, dans ces deux jours je vais te pondre un post à tomber par terre, un peu de patience…

  16. #156
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table
    Citation Envoyé par Jipété Voir le message
    ... il nous faudra quand même l'avis de l'expert pour nous expliquer qu'est-ce que c'est que ce dos de chameau sur les courbes bleues (sauf l'original) ...
    Je l'ai déjà dit: les abscisses des valeurs maximales des deux termes intervenant dans le produit

    Icouleur(i) * Ccouleur(i)

    sont décalées d'une ou deux unités: c'est patent.

    Citation Envoyé par Jipété Voir le message
    ... Le problème, c'est que comme c'est EXACTEMENT ce qu'il y a dans mon code, donc le problème doit être ailleurs… :
    ... / ...
    À part faire tourner une table, là je ne vois pas ce qu'il faut faire.
    ... / ...
    Explique, au lieu de jouer aux devinettes, parce que là, ça me dépasse. Il n'y avait aucune bonne raison pour que je modifie quoi que ce soit dans la mesure où j'aurais été incapable d'écrire l'original.
    Allez, je retourne à mes dégradés, dans ces deux jours je vais te pondre un post à tomber par terre, un peu de patience…
    Je ne saurais jouer aux devinettes: j'ai largement dépassé l'âge.

    Comment ta liste est-elle indexée ? De 0 à 23 ou de 1 à 24 ? Tes hésitations sur ce point m'ont dès le début mis la puce à l'oreille.

    Citation Envoyé par Jipété Voir le message
    ... Alors àmha autant la partie dégradée de l'extérieur noir au milieu de la zone (où se trouve deux "bourrelets" rouge clair et rouge foncé) est correcte, autant je trouve atroce l'autre partie, du bourrelet foncé au centre blanc en passant par plein de gris moches,
    Vos avis, les gens ?
    Illusion d'optique résultant de la proximité de teintes très différentes allant du rouge vif (255, 0, 0) au blanc (255, 255, 255).
    Sont présentes toutes les variantes du rose (255, m, m), comme on peut le vérifier sur cet extrait de ton image; il n'y a objectivement pas de gris (m, m,m):
    Nom : Dégradé_Rouge-Blanc.png
Affichages : 168
Taille : 10,1 Ko

  17. #157
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Citation Envoyé par wiwaxia Voir le message
    Je l'ai déjà dit: les abscisses des valeurs maximales des deux termes intervenant dans le produit

    Icouleur(i) * Ccouleur(i)

    sont décalées d'une ou deux unités: c'est patent.
    où ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    procedure TForm3.btnCorrectionsWWXClick(Sender: TObject);
    Const
      START = 1;
      NCOL = 24;
    //  START = 0;
    //  NCOL = 23;
    TYPE
      Table24x3 = ARRAY[START..NCOL, 1..3] OF Extended;
      T_Palette = ARRAY[START..NCOL, 1..3] OF Byte;
    VAR
      F: Table24x3;
      c,i,j: integer;
      Kv,Kb: Extended;
      Palette_Old, Palette_New: T_Palette;
      r,g,b: byte;
    begin
      // note : le fait de passer de 1..24 à 0..23 change un peu les valeurs,
      // normal, "i" participe aux calculs
     
      Kv := 0.12;  Kb := 0.13;
    //  Kv := 0.08;  Kb := 0.09;
    //  Kv := 0.02;  Kb := 0.03;
     
      for i := START TO NCOL do begin
        F[i, 1] := 1;                          // Pas de correction des valeurs
        F[i, 2] := 1 + Kv*Cos(Pi*(i - 11)/12); // Correction pour le vert
        F[i, 3] := 1 + Kb*Cos(Pi*(i - 18)/12); // Correction pour le bleu
      end;
     
      FOR j:= 1 TO 3 DO
        FOR i:= START TO NCOL DO begin
          // -1- "fabrication" de Palette_Old, basée sur la position des 72 valeurs des trackbars, lues depuis un fichier ini
          if NCOL = 23 then c := i else c := i-1;// astuce car les "Controls[x]" commencent à 0.
          case j of 
            1:with pnlRouge do with (Controls[c] as TGroupBox) do
                Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
            2:with pnlVerte do with (Controls[c] as TGroupBox) do
                Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
            3:with pnlBleue do with (Controls[c] as TGroupBox) do
                Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
          end;
          // -2- corrections wwx
          Palette_New[i, j]:= Round(Palette_Old[i, j] * F[i, j]);
        end;
     
      // résultats :
      // 1er test rapide
      FOR j:= 1 TO 3 DO begin
        FOR i:= START TO NCOL DO
          memo1.Lines.Add(format('%3d %3d', [Palette_New[i,j], Palette_Old[i,j]]));
        memo1.Lines.Add('');
      end;
     
      // deuxième
      FOR i:= START TO NCOL DO begin
        FOR j:= 1 TO 3 DO
        case j of
          1: r := Palette_New[i,j];
          2: g := Palette_New[i,j];
          3: b := Palette_New[i,j];
        end;
    //    memo1.Lines.Add(format('%3d %3d %3d', [r,g,b]));
        memo1.Lines.Add(format('%.3d;%.3d;%.3d', [r,g,b]));// pour tableur
      end;
    end;
    Merci,

  18. #158
    Membre émérite

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Points : 2 570
    Points
    2 570
    Billets dans le blog
    9
    Par défaut Passer d'un rendu RGB par calculs à un rendu RYB par une table
    Tu n'a pas fourni la source des valeurs numériques (Palette_Old[i,j]).

    Un problème se niche probablement là (lignes 30 à 41).

    Serait-ce en rapport avec ce que tu as donné auparavant (#144)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    function RGBColorsForRYBDisplay(x, nc: integer): TColor; 
    // x = index pour avancer dans la map, colonne après colonne.  nc = nombre de couleurs (6, 8, 12, 16, 24)
    var
      r,g,b: byte;
    begin
        if nc = 6 then begin
          if x = 0 then begin r:=255; g:=000; b:=000; end;// 1 R
          if x = 1 then begin r:=255; g:=127; b:=000; end;// 2 O
          if x = 2 then begin r:=192; g:=255; b:=000; end;// 3 J
          if x = 3 then begin r:=000; g:=255; b:=063; end;// 4 V
          if x = 4 then begin r:=000; g:=000; b:=255; end;// 5 B
          if x = 5 then begin r:=127; g:=063; b:=192; end;// 6 M
        end;
     
    // je passe les cas 8, 12, 16 qui ne feraient qu'alourdir ici,
    // juste une précision : 8 et 16 induisent des décalages sur le cercle non compatibles avec un dégradé RYB
     
        if nc = 24 then 
          case x of  // avec correction calc
            0: begin r:=237; g:=020; b:=030 end; //1
            1: begin r:=245; g:=053; b:=015 end; //2
            2: begin r:=246; g:=080; b:=009 end; //3
            3: begin r:=247; g:=108; b:=008 end; //4
            4: begin r:=249; g:=136; b:=006 end; //5
            5: begin r:=250; g:=160; b:=005 end; //6
            6: begin r:=255; g:=184; b:=005 end; //7
            7: begin r:=240; g:=201; b:=005 end; //8
            8: begin r:=225; g:=210; b:=005 end; //9
            9: begin r:=200; g:=224; b:=021 end; //10
           10: begin r:=167; g:=227; b:=046 end; //11
           11: begin r:=133; g:=221; b:=070 end; //12
           12: begin r:=073; g:=205; b:=098 end; //13
           13: begin r:=037; g:=173; b:=127 end; //14
           14: begin r:=005; g:=146; b:=174 end; //15
           15: begin r:=012; g:=112; b:=203 end; //16
           16: begin r:=034; g:=086; b:=220 end; //17
           17: begin r:=053; g:=065; b:=225 end; //18
           18: begin r:=080; g:=048; b:=215 end; //19
           19: begin r:=111; g:=036; b:=220 end; //20
           20: begin r:=145; g:=024; b:=203 end; //21
           21: begin r:=168; g:=021; b:=146 end; //22
           22: begin r:=196; g:=018; b:=095 end; //23
           23: begin r:=226; g:=008; b:=052 end; //24
         end;
     
      result := RGBtoColor(r, g, b);
    end;
    Parce que l'on y trouve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            8: begin r:=225; g:=210; b:=005 end; //9
            9: begin r:=200; g:=224; b:=021 end; //10
           10: begin r:=167; g:=227; b:=046 end; //11
           11: begin r:=133; g:=221; b:=070 end; //12
           12: begin r:=073; g:=205; b:=098 end; //13
    d'où: ImaxV = 10 (au lieu de 11) ,
    et plus loin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
           15: begin r:=012; g:=112; b:=203 end; //16
           16: begin r:=034; g:=086; b:=220 end; //17
           17: begin r:=053; g:=065; b:=225 end; //18
           18: begin r:=080; g:=048; b:=215 end; //19
           19: begin r:=111; g:=036; b:=220 end; //20
           20: begin r:=145; g:=024; b:=203 end; //21
    d'où ImaxB = 17 (au lieu de 18), et un maximum secondaire ...

    Cela ne colle pas la liste initiale:
    Nom : Jpt_Liste_1_01@24.png
Affichages : 169
Taille : 32,1 Ko

  19. #159
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Tu as bien fait d'insister, ça m'a permis de constater que le fait de reporter des corrections avec les curseurs n'était pas répercuté plus loin, d'où un défaut d'origine (je viens de le reproduire) qui se répandait sur tous les graphiques, tous les essais.

    Bon, ce programme devient une usine à gaz recyclée en raffinerie, si tu vois le truc.

    Je reprendrai tout ça demain à tête reposée, là je fatigue un peu.

    Merci merci merci,

  20. #160
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Bonjour,

    J'ai découvert avec stupéfaction qu'un de mes outils ne répercutait pas bien les valeurs que je me décarcassais visuellement à affiner, normal qu'après ça, tout parte en sucette,
    Faudra que je revoie tout, hop !, sur la pile des trucs urgentissimes (qui touche bientôt le plafond).

    En faisant les corrections qui vont bien directement dans le code, puis en y appliquant les formules magiques de wiwaxia, en rajoutant des petits ajustements à la main pour le rouge (les curseurs sont visuellement bien pratiques pour ça), on a ces valeurs toutes fraiches datées d'il y a une heure :
    Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    // 9 mai 2019 : corrections wwx + moi à la main pour le rouge
    case x of
       0: begin r:=237; g:=018; b:=014 end; //1
       1: begin r:=240; g:=049; b:=011 end; //2
       2: begin r:=243; g:=075; b:=008 end; //3
       3: begin r:=246; g:=105; b:=007 end; //4
       4: begin r:=249; g:=136; b:=006 end; //5
       5: begin r:=252; g:=165; b:=005 end; //6
       6: begin r:=255; g:=195; b:=004 end; //7
       7: begin r:=240; g:=218; b:=009 end; //8
       8: begin r:=225; g:=232; b:=014 end; //9
       9: begin r:=200; g:=250; b:=020 end; //10
      10: begin r:=167; g:=254; b:=039 end; //11
      11: begin r:=133; g:=247; b:=060 end; //12
      12: begin r:=073; g:=226; b:=093 end; //13
      13: begin r:=037; g:=188; b:=135 end; //14
      14: begin r:=015; g:=155; b:=190 end; //15
      15: begin r:=021; g:=115; b:=226 end; //16
      16: begin r:=042; g:=086; b:=248 end; //17
      17: begin r:=063; g:=068; b:=255 end; //18
      18: begin r:=095; g:=052; b:=251 end; //19
      19: begin r:=124; g:=033; b:=244 end; //20
      20: begin r:=145; g:=022; b:=202 end; //21
      21: begin r:=168; g:=019; b:=155 end; //22
      22: begin r:=196; g:=016; b:=120 end; //23
      23: begin r:=226; g:=007; b:=052 end; //24
    end;

    valeurs qui donnent une image comme ça,
    Nom : nouvelle_boule.jpg
Affichages : 165
Taille : 15,1 Ko

    où l'on est bien forcé de constater qu'il subsiste un cercle intermédiaire trop fort, du rouge au vert, particulièrement dans le jaune-orange.

    Peut-être que ça se corrigera si on arrive à comprendre ce qui se passe avec ce que je vais vous narrer maintenant :
    ---
    Chaque fois que je veux insérer une image dans un post, le navigateur me propose un outil de choix d'images avec une visualisation des derniers fichiers insérés, et en ce moment j'ai sans arrêt cette boule rouge sous les yeux :
    Nom : preview_dégradé_rouge.png
Affichages : 174
Taille : 5,6 Ko

    Et là, tout le monde voit bien qu'on est loin d'avoir un dégradé uni, alors que je me suis bêtement contenté de demander à la fonction qui fait le boulot de partir du noir, d'aller au rouge et de terminer au blanc.
    J'ai repris cette formule pour lui faire afficher le même dégradé, en horizontal, et si vous voyez 3 dégradés c'est parce qu'en fait j'ai 3 fonctions différentes pour faire ce boulot :
    Nom : 3dégradés.png
Affichages : 160
Taille : 5,6 Ko

    Première chose, qu'est-ce que c'est que cette brillance qu'on retrouve dans les 3 images sous le dernier "0" de la barre de titre, suivie d'une zone sombre (bien visible si on regarde l'image de côté) qui pour moi n'a rien à faire là puisqu'on va vers le blanc ?
    Sont-ce mes yeux qui me jouent des tours ? Non, puisque sur l'image ronde c'est flagrant.
    Précisons que cette zone n'est pas au milieu (128) des images de 255 de large, mais un peu avant, vers 115-120.

    Comme à l'œil on ne voit pas de différences j'ai utilisé un outil pour analyser les images semblant identiques, et j'ai donc comparé img1 et 2 tout en haut, img1 et 3 au milieu et img2 et 3 en bas, et dans le résultat tout ce qui est en couleur est différent d'une image à l'autre :
    Nom : 3comparaisons.png
Affichages : 163
Taille : 24,7 Ko

    Donc les 3 formules génèrent des dégradés différents 2 à 2, différences non visibles à l'œil nu,

    Je peux bien sûr fournir les codes des fonctions, mais je me demande si je ne préférerais pas avoir ma (notre !) propre fonction perso, le truc dont on est sûr et certain, basé sur de l'arithmétique élémentaire dans un premier temps : quelle formule mettre en œuvre pour aller de couleurgauche à couleurdroite en passant par couleurcentre, les couleurs étant réparties sur une longueur allant de position_pixel_couleurgauche à position_pixel_couleurdroite.

    En voilà un challenge sympatoche !

    Pour mettre les mains dans le cambouis sans trop salir le smoking, on pourrait s'inspirer de ce code, qui est l'un des trois que j'utilise.

+ Répondre à la discussion
Cette discussion est résolue.
Page 8 sur 17 PremièrePremière ... 456789101112 ... DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/06/2007, 11h40
  2. [SQL] calcul de plusieurs variables dans une table
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2006, 21h53
  3. Etat bloqué par une table
    Par aujero dans le forum Access
    Réponses: 4
    Dernier message: 06/02/2006, 17h53
  4. Réponses: 12
    Dernier message: 21/10/2005, 14h35
  5. Réponses: 4
    Dernier message: 13/10/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo