Logicielsmoto.com

Nous sommes le 28 Mar 2024, 18:06

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 165 messages ]  Aller à la page Précédente  1 ... 3, 4, 5, 6, 7, 8, 9 ... 11  Suivante
Auteur Message
 Sujet du message: Re: Convertion images & photos
MessagePosté: 12 Fév 2015, 19:39 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Ah ouais... ca le fait carrément!
Fichier(s) joint(s):
jp2.gif
jp2.gif [ 12.23 Kio | Vu 15324 fois ]
Fichier(s) joint(s):
jp1.gif
jp1.gif [ 11.6 Kio | Vu 15324 fois ]
Fichier(s) joint(s):
jp3.gif
jp3.gif [ 10.19 Kio | Vu 15324 fois ]
Et dire que tout le truc était de travailler à intensité/3.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 12 Fév 2015, 20:44 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Étonnant. Surtout en 3 couleurs.

Cette image-ci est quand même la meilleure :
Samuel Devulder a écrit:
Image
... mais l'échelle des détails y est certainement pour beaucoup.
Le plus fort, c'est de croire voir des points blancs et quand on s'approche, on se rend compte qu'ils sont verts :voyons:

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 12 Fév 2015, 22:47 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
Serait-il intéressant de travailler dans l'espace de couleurs HSV plutôt qu'en RGB? ça permettrait de jouer sur la saturation et la luminosité sans toucher à la teinte, et donc de garder des couleurs qui se rapprochent moins du gris?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 12 Fév 2015, 22:53 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Même sur des détails fins on voit des couleurs virtuelles.
Fichier(s) joint(s):
10epyfb.gif
10epyfb.gif [ 12.82 Kio | Vu 15319 fois ]
Fichier(s) joint(s):
1142919-mandrill.gif
1142919-mandrill.gif [ 12.65 Kio | Vu 15319 fois ]
Fichier(s) joint(s):
batman_forever_original.gif
batman_forever_original.gif [ 9.38 Kio | Vu 15318 fois ]

Pour l'instant je suis plutot content de mon algo. Il est simple, va très vite, et donne des résultats de qualité relativement constante.

@pulko: je travaille justement dans un espace non RGB (LUV) et qui est plus homogène au niveau de la distance des couleurs
Code:
sub prep4096 {
   my($img) = @_;
   my($t) = $img->Clone();
   #$t->Blur(sigma=>2);
   #$t->Scale(width=>$t->Get('Width')>>2, height=>$t->Get('Height')>>2);
   #$t->Fx(expression=>"u/exp((i/w-0.5)^2+(j/h-0.5)^2)", channel=>"RGB");   
   #$t->Fx(expression=>"u>0?u/max(r,max(g,b)):0", channel=>"RGB");
   #$t->Fx(expression=>"intensity>0?u/intensity:0", channel=>"RGB");
   #$t->Set(colorspace=>"LUV");
   #$t->Set(colorspace=>"YUV");
   #$t->Set(colorspace=>"RGB");
   #$t->Set(colorspace=>"Lab");
   
   #$t->Set(colorspace=>"HSB");
   #$t->Evaluate(value=>-1, operator=>"or", channel=>"Blue");
   #$t->Set(colorspace=>"YUV");
   
   $t->Set(colorspace=>"RGB");
   $t->Scale(width=>$t->Get('Width')>>3, height=>$t->Get('Height')>>3);
   #$t->Blur(sigma=>0.5);
   #$t->Set(colorspace=>"YUV");
   $t->Set(colorspace=>"LUV");
   return $t;
}
Trouver un bon espace de couleur est délicat. J'ai du essayer pleins de trucs. Certains font trop de couleurs pour certaines images, et pas assez pour d'autres images. Le LUV est celui qui me semble le mieux pour l'instant (mieux que le "Lab" dont pourtant tout le monde dit que c'est le meilleur... jusqu'à ce qu'on le teste et qu'on est déçu :) )

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 15 Fév 2015, 21:26 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
Je ne sais pas si c'est seulement un problème d'homogénéité ou de linéarité des couleurs. Si je comprends bien dans l'espace de couleurs LUV on a 3 axes: un axe de luminosité, un axe rouge/vert, et un axe bleu/jaune. Si on tente de minimiser l'erreur dans une réduction de couleur, on va avoir tendance à prendre des points proche du centre de l'espace de couleurs, donc, un gris moyen qui ne ressemble pas à grand chose (saturation moyenne, luminosité moyenne, etc).

En plus, ton algo a l'air d'utiliser systématiquement du noir comme "base", et à l'éclaircir avec les couleurs choisies. Donc, il vaut mieux choisir des couleurs assez lumineuses (à équilibrer en fonction de l'image).

Dans l'espace LUV, ça serait donc par exemple une contrainte du genre sqrt(u²+v²) > L (ou un truc du genre, faut voir ce qui marche bien), peut-être même u²+v² > constante. Une contrainte de ce genre va forcer à garder des couleurs saturées, que l'on peut ensuite "diluer" par des tramages pour obtenir d'autres couleurs moins saturées. Alors que si on part d'une palette de couleurs toutes délavées, c'est moins facile de fabriquer des couleurs vives.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 15 Fév 2015, 21:51 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
La convergence vers les gris est une propriété de la moyenne qui n'est effectivement jamais dans les valeurs extrêmes. C'est le même soucis que dans la réduction de couleur. Si on a un beau dégradé du noir au blanc pur et qu'on choisi 2 couleurs, les algos ne choisissent pas le noir et le blanc, mais deux gris d'intensité 1/3 et 2/3, ce qui minimise l'erreur moyenne, mais fait tout moche au final.

Ca n'est pas lié spécialement à l'espace de couleur utilisé, mais on peut faire des algos qui évitent ce problème.

A une époque pour les images 16 couleurs, je recherchais des points dans l'enveloppe convexe du nuages de couleurs de l'image. En effet toute coueur interne du nuage peut être réalisée par une combinaison des couleurs de l'enveloppe convexe. L'algo "Maximum diversity" donnait de bon résultats car en choisissant les points les plus éloignés les uns des autres, il trouve naturellement ceux de l'enveloppe convexe.

Comme l'enveloppe convexe contient beaucoup de points, cette technique marche bien quand on a la possibilité de choisir beaucoup de couleurs (16 ou mieux: 256). Avec 4 couleurs ca marche moins bien car 4 points ne sont pas suffisants pour écrire l'enveloppe. En fait ce qu'il faut avec 4 couleurs, c'est décrire une approximation de l'enveloppe convexe. Et là ca marche bien. Je pense que je vais créer une nouvelle page ou écrire ici l'algo que j'ai trouvé car il marche pas mal du tout.

[EDIT]en fait c'est étrange.. Un bug dans mon algo fait qu'il marche mieux que ce que je pensais... Il me faudra comprendre pourquoi.. Je suis perplexe: la pratique mieux que la théorie? non c'est la théorie qui n'est pas complète :)

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 19 Fév 2015, 01:46 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Punaise... j'ai un algo qui donne des résultats assez corrects, mais je ne me l'explique pas pourquoi.

L'algo essaye outre la combinaison R,G,B séparés, des combinaisons R+G G+B et R+B. Je change d'un pouillème les paramètres "magiques" et les images sont nettement moins bonnes. Certaines valeurs R+G, G+B et R+B améliorent un grand nombre d'images alors que d'autres valeurs pour ces couples de couleurs ne sont pas meilleurs que R,G,B séparés, et je ne comprends pas pourquoi l'aspect magique de ces paramètres. Rahhh ca me perturbe de ne pas réussir à théoriser ce qu'il se passe. :bah:

Si je veux expliquer le truc: pour convertir l'image réduite à 1/3 d'intensité en 4 couls avec l'algo initial, on génère toutes les combinaisons de 3 couleurs parmi 0xF00, 0x0F0, 0x00F, 0xFF0, 0xF0F, 0x0FF, 0xFFF (C(3,7) = 35 choix possibles) et on prend la combinaison qui fait le moins d'erreur par rapport à l'image d'origine.

Ca marche pas mal, mais souvent c'est le couple 0xF00, 0x0F0, 0x00F qui produit le moins d'erreur. C'est assez cohérent car avec le dither cela revient à avoir toutes latitudes pour mettre autant de rouge 0x00F sans perturber le bleu 0xF00. Les couleurs sont indépendantes d'un pixel sur l'autre.

Or pour les images à forte composantes coupléees (jaunes=R+V) par exemple, il et avantageux de remplacer deux pixels 0x00F et 0x0F0 par un seul pixel 0x0FF. Or non l'image est évaluée moins bonne avec 0x0FF et l'algo préfère R+V séparés plutôt que couplés dans un jaune. Ainsi avec cette image où la couleur jaune de la peau de shrek est dominante
Fichier(s) joint(s):
1168063487_B972109706Z.1_20140226125111_000_GP8215N2M.1-0.jpg
1168063487_B972109706Z.1_20140226125111_000_GP8215N2M.1-0.jpg [ 17.51 Kio | Vu 15287 fois ]
l'algo préfère
Fichier(s) joint(s):
1168063487_B972109706Z.1-0.jpg2.gif
1168063487_B972109706Z.1-0.jpg2.gif [ 6.11 Kio | Vu 15287 fois ]
qui n'est formée que de R, V et B purs. Le jaune de la peau de shrek est fait en alternant un pixel R avec un pixel V, et le blanc de ses yeux en alternant R,V,B.

Bon soit. Mais là où c'est étrange c'est qu'en modifiant un peu la formule, le résultat est totalement opposé.

Ainsi, si on choisi 3 couleurs parmi 0xF00,0x0F0,0x00F, 0x880,0x808,0x008, 0x888 (8 à la place de F dès qu'on a pas une couleur pure) on obtient:
Fichier(s) joint(s):
1168063487_B972109706Z.1-0.jpg.gif
1168063487_B972109706Z.1-0.jpg.gif [ 7 Kio | Vu 15287 fois ]
qui est carrément mieux. Elle contient une vraie composante 0x088 jaune pour la peau de shrek, ainsi que du vrai blanc 0x888 pour son oeil.

Cette image de shrek ne fait pas exception, pleins d'autres sont meilleurs avec la série en 8. Pire si on met du 7 ou du 9, alors on retombe sur l'image de la série avec des F. Ce "8" a un truc magique que je ne m'explique pas. Pourquoi le jaune 0x088 est mieux que le 0x0FF. C'est illogique. Il est juste plus sombre, chose que l'algo peut faire en alternant noir+0x0FF.

Je ne comprends pas :voyons:

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 19 Fév 2015, 07:50 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
Dans tes images il y a toujours beaucoup de pixels noirs, qui vont assombrir le résultat mais permettre de simuler des couleurs sombres avec des tramages.

Si on met un jaune ou un blanc pur (FF0 ou FFF), on a une couleur très lumineuse et du coup il faut mettre beaucoup de noir pour compenser. Et on s'éloigne d'autant de l'image d'origine.

Avec une couleur sombre (genre 330 ou 333), on ne peut pas l'éclaircir avec du noir, du coup elle n'est pas utilisable.

En visant juste entre les deux on trouve une couleur qui peut s'utiliser directement dans les zones les plus lumineuses de l'image, et avec un tramage dans les zones plus sombre.

A priori, prendre une couleur 880 est un bon choix car elle a à peu près la même luminosité que F00 ou 0F0, donc l'algo marche bien.

On doit donc pouvoir trouver la luminosité idéale à partir de l'image source, en la choisissant pour couvrir toutes les zones claires sans tramage, et les zones plus sombres avec un tramage avec du noir.

En plus de ça, comme il n'y a que 4 couleurs, on accumule vite des erreurs sur celles qu'on a du enlever (par exemple sur shrek il n'y a pas du tout de bleu dans la deuxième version). ça fait tout de suite une grosse erreur donc l'algo va dire que la conversion n'est pas terrible. Je ne sais pas comment on peut exprimer le fait qu'une dérive des couleurs n'est pas un problème, à condition que les différences d'un pixel à l'autre soient préservées... ou quelque chose du genre...


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 19 Fév 2015, 08:52 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
PulkoMandy a écrit:
Dans tes images il y a toujours beaucoup de pixels noirs, qui vont assombrir le résultat mais permettre de simuler des couleurs sombres avec des tramages.
Oui c'est parce que l'intensité est réduite au tiers. Pourquoi au tiers? Parce que le blanc est obtenu sur 3 pixels avec 0xF00 + 0x0F0 + 0x00F. Donc l'intensité moyenne maximale du blanc vaut 1/3.
Citation:
Si on met un jaune ou un blanc pur (FF0 ou FFF), on a une couleur très lumineuse et du coup il faut mettre beaucoup de noir pour compenser. Et on s'éloigne d'autant de l'image d'origine.
En fait pas beaucoup de noir. Le niveau 8 correspond à 67% de l'intensité max. Donc si on utilise le niveau 15, cela revient à avoir un pixel noir sur 3.
Citation:
Avec une couleur sombre (genre 330 ou 333), on ne peut pas l'éclaircir avec du noir, du coup elle n'est pas utilisable.
Oui.
Citation:
En visant juste entre les deux on trouve une couleur qui peut s'utiliser directement dans les zones les plus lumineuses de l'image, et avec un tramage dans les zones plus sombre.
Oui mais le truc curieux est que la valeur magique tombe pile à 8, pas 7 ou 9, mais 8 (67%).
Citation:
A priori, prendre une couleur 880 est un bon choix car elle a à peu près la même luminosité que F00 ou 0F0, donc l'algo marche bien.
Je ne sais pas si la luminosité compte car 880 a l'intensité 0.2989 * .67 + 0.5870 *.67 + 0.1140*0 = 0.59, alors que F00 a .30 d'intensité. Ca fait un sacré écart.
Citation:
On doit donc pouvoir trouver la luminosité idéale à partir de l'image source, en la choisissant pour couvrir toutes les zones claires sans tramage, et les zones plus sombres avec un tramage avec du noir.
En fait par la suite l'algo part du support trouvé, par ex F00, 0F0, 088 et essaye toutes les valeurs ayant 0 aux mêmes places (800, 0A0, 0FF par exemple) ce qui améliore encore le résultat. Ainsi à partir de F00,0F0,088 qui fait une image avec 0.7% d'erreur par pixel), il descend vers A00,060,066 qui n'a plus que 0.5% d'erreur par pixel.

Donc la valeur 8 sert avant tout à trouver le support (les composantes non nulles) à utiliser. Ce qui est magique est que c'est F et 8 qu'il faut utiliser pour le support et pas F et 7 ou F et 9. C'est étrangement hyper-sélectif.
Citation:
En plus de ça, comme il n'y a que 4 couleurs, on accumule vite des erreurs sur celles qu'on a du enlever (par exemple sur shrek il n'y a pas du tout de bleu dans la deuxième version). ça fait tout de suite une grosse erreur donc l'algo va dire que la conversion n'est pas terrible. Je ne sais pas comment on peut exprimer le fait qu'une dérive des couleurs n'est pas un problème, à condition que les différences d'un pixel à l'autre soient préservées... ou quelque chose du genre...
Je mesure l'erreur moyenne par pixel et je la maintiens à moins de 1% tout en choisissant les 3 couleurs les plus variées et en augmentant l'intensité globale de l'image initialement à 1/3 pour la faire revenir à 1 histoire de converger vers l'image d'origine.

Pour l'instant je ne suis pas déçu du résultat, même si je me demande encore pourquoi ca marche mieux avec le 8 qu'avec 7 ou 9.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 19 Fév 2015, 09:33 
Hors ligne

Inscription: 24 Juil 2010, 16:08
Messages: 454
Localisation: France
Samuel Devulder a écrit:
PulkoMandy a écrit:
Citation:
A priori, prendre une couleur 880 est un bon choix car elle a à peu près la même luminosité que F00 ou 0F0, donc l'algo marche bien.
Je ne sais pas si la luminosité compte car 880 a l'intensité 0.2989 * .67 + 0.5870 *.67 + 0.1140*0 = 0.59, alors que F00 a .30 d'intensité. Ca fait un sacré écart.


Ah, la fameuse formule magique de calcul de la luminosité d'une couleur :)
C'est pas sur que ça fonctionne comme prévu, surtout quand il y a des mélanges de couleurs. Par exemple, on a donc plusieurs solutions pour faire du jaune:

Avec du rouge et du vert séparés:
Code:
F00,0F0


Avec du jaune pur:
Code:
FF0,000


Ces deux là ont exactement la même luminosité "globale" sur deux pixels (0.8859 si je ne me trompe pas). Et donc avec une demi teinte:
Code:
880,880


Une luminosité de 0.59 pour chacun des deux pixels. Mais on ne peut pas dire que le total est de 1.2. Je ne sais pas quelle est la bonne formule.

A l'oeuil, sur mon écran de PC il faut du #CC0 pour avoir une couleur "proche" des tramages vert/rouge et jaune/noir. Mais sur Thomson #880 ne me paraît pas délirant compte tenu de la courbe gamma bizarre :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re:
MessagePosté: 23 Fév 2015, 20:42 
Hors ligne

Inscription: 13 Mai 2005, 19:44
Messages: 182
Localisation: limoges
Fool-DupleX a écrit:
:eek: Tu m'as scotché là :eek:

Pas de réaction du reste de la communauté ? :tourne:

Fool

Bonjour,

Je passe rarement ces photos sont bien et cela me rappel les images de Blédor, il faudrait reprendre contact avec lui il doit bien avoir d'autres combines.

_________________
Cordialement
Louis


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Re:
MessagePosté: 23 Fév 2015, 21:00 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
louis a écrit:
Bonjour,

Je passe rarement ces photos sont bien et cela me rappel les images de Blédor, il faudrait reprendre contact avec lui il doit bien avoir d'autres combines.

Il peut même s'inscrire ici. Ça fait trop longtemps qu'on n'a pas entendu parler de lui, il sera le bienvenu. Blédor, si tu nous écoutes...

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 16 Sep 2015, 00:28 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Oulà je suis content j'ai découvert un truc que le code (initialement destiné à la vidéo) présent sur http://pastebin.com/ZAuknzYw ([EDIT: était] http://pastebin.com/bP4ftG4x) sait faire et que je n'avais pas prévu.... Saurez vous trouver de quoi il s'agit ? (je donnerais plus de détails plus tard.. là je suis trop content de cette découverte +/- fortuite qui a toute sa place dans ce fil :sol: )

_________________
Good morning, that's a nice Tnetennba


Dernière édition par Samuel Devulder le 17 Sep 2015, 20:11, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 16 Sep 2015, 09:31 
Hors ligne

Inscription: 27 Juin 2006, 19:44
Messages: 1061
Localisation: France (24)
Wow :beuh: Tu veux qu'on trouve en peu de temps quelque chose qui n'a rien d'évident dans un code que tu travailles depuis plusieurs années et que tu viens juste de découvrir ? Moi je veux bien, mais il ne faudra pas t'attendre (même longtemps) à des miracles...

_________________
Marche a suivre pour s'inscrire sur ce forum
Do not forget to contact one of the administrators to validate your registration.
Le site des démos de Puls
L'émulateur Teo


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Convertion images & photos
MessagePosté: 16 Sep 2015, 09:51 
Hors ligne

Inscription: 21 Aoû 2006, 09:06
Messages: 1802
Localisation: Brest
Oui oui je suis taquin, et en plus je travaille encore sur le cod. Il me stimule les neurones, et ca c'est bon. :)

Un indice cependant: 48.

_________________
Good morning, that's a nice Tnetennba


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 165 messages ]  Aller à la page Précédente  1 ... 3, 4, 5, 6, 7, 8, 9 ... 11  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 40 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages
Vous ne pouvez pas joindre des fichiers

Rechercher:
Aller à:  
Développé par phpBB® Forum Software © phpBB Group
Traduction par phpBB-fr.com