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 :

[RVB]Réduction du nombre de couleurs (RVB) à 8


Sujet :

Traitement d'images

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut [RVB]Réduction du nombre de couleurs (RVB) à 8
    Bonjour à tous!
    Première fois d'ma vie que jposte dans cette section, enfin faut un début a tout!

    Bon j'ai une problèmatique à vous soumettre.

    1 - La problèmatique :
    Comment savoir quel code RVB d'une liste connue (8 possibilités) est le plus proche (visuellement) d'un code RVB quelquonque (16 millions de possibilités)?

    2 - Le pourquoi du comment :
    J'ai trouvé un superbe image (http://www.photoway.com/images/marti...elle-plage.jpg) que j'ai convertit en ASCII grace a un soft <strike>pourri</strike>

    Le soft en question m'a généré une page HTML avec "l'image" (les caractères quoi) en couleurs, le rendu étant pas trop mal.

    Mais cet ascii je veux l'afficher dans mon shell Unix (au login de l'utilisateur, ca serai la Classe) et le shell Unix n'a que 8 couleurs.

    Vous saisissez, à grand coup de "sed", il faut que je remplace les RVB (et le reste) du fichier HTML par la couleur Shell la plus proche (en RVB aussi dans un premier temps, je me derm***erai avec les "\033[xxm" du shell)

    3 - La question :
    Quelqu'un connait t'il un algo qui serai succesptible de faire ca ?
    je sais pas, par exemple on sépare les R-V-B de la couleur de base, on les soustrait un a un, a chacun des R-V-B des 8 couleurs de la liste et on retient la couleur dont le résultat des 3 résultant optenues est le plus proche de zéro??? ........C'est n'importe quoi?! Ils ont fait comment dans Photoshop?
    Stay in Bed .. Save Energy

  2. #2
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    sur les compatibles PC, il y a 16 couleurs, pas 8.

    16 pour le fond, et 16 pour les caractères.

    ce qui donne 256 combinaisons de couleurs.

    en jouant sur les caractères ascii, il est possible de multiplier le solutions par 256.
    donc, 65536 couleurs possibles.

    l'image est découpée en blocs de 16*16 pixels.
    ces blocs seront alors convertis en lettres, pour la forme à l'interieur du bloc, et les couleurs assignées, par moyenne.

    chaque combinaison de couleurs (16:16) est mathématique, tandis que les combinaisons de pixels de chaque caractères sont combinatoires, il faut calculer pour chaque caractère le degré de répartition des couleurs. plus ou moins foreground, plus ou moins background.

    ensuite, il faut calculer la moyenne des couleurs présentes dans chaque blocs de l'image originale. et par calcul, trouver la proportion la plus proche du bloc, puis apposer les bons attributs (couleurs) au caractère trouvé.
    et ainsi de suite.

    pour la reduction du nombre de couleurs, il existe plusieurs algorythmes possibles.
    le plus simple étant de juste reduire la resolution au nombre de bits désiré.
    une couleur parmis 16 signifie 4 bits de résolution.
    une oculeur parmis 8 signifie 3 bits.
    le 4ieme etant utilisé pour l'intensité, il sera bon de convertir le modele RVB en modele YUV.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Points : 1 460
    Points
    1 460
    Par défaut
    Salut et merci pour ta réponse!

    Bon au final j'ai pas le temps de coder un truc qui fasse tout ca, faut que je me contente du logiciel que j'ai (Ascgen dotNET, le qualificatif "logiciel" outrepassant l'honneur j'en ai peur).

    Donc voila ce que j'ai fait :
    image source : http://www.photoway.com/images/marti...elle-plage.jpg

    Après passage à la moulinette dotNot_chépakwa : http://vbn.fr/ASCII-plus-belle-plage.html

    Pour réduire le nombre de couleurs j'ai fait ca :
    1) Séparation des composantes RVB de chaque caractère et conversion en décimal.

    2) calcul de l'écart entre chacune de ces composantes et les composantes des couleurs cibles potentielles :
    $total = abs(Rsource - Rcible) + abs(Vsource - Vcible) + abs(Bsource - Bcible)
    J'ai 7couleurs cibles (j'ai viré le noir), j'ai donc 7 totaux

    3) je remplace la couleur source par la couleur cible ayant le "total" le plus faible.

    Rendu final : http://www.facebook.com/photo.php?pi...&id=1056339224

    Bon, c'est la méthode de dédé la bricole, mais tant que ca <strike>fait pleurer</strike> épate mes utilisateurs SSH, ca reste bon!

    Aller merci et Bye

    PS: si tu connais un meilleur convertisseur image to ascii que DotPouet_machin, je suis prenneur.
    Stay in Bed .. Save Energy

  4. #4
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Bonjour

    Tu parles de 8 possibilités de couleurs. C'est le total pour la couleur de fond du caractère ET celle de l'avant plan du caractère ou bien tu as le choix de 8 couleurs pour le fond et 8 supplémentaires pour l'avant plan ? ce qui permettait une combinaison plus grande car j'ai peut-être une solution...

    Pat.
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  5. #5
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    il n'y à pas de mode 8 couleurs sur les PC en VGA.
    il existe le noir et blanc.
    le monochrome (noir et une couleur parmi 16).
    16 couleurs (RVBI).
    256 couleurs parmi 256kilo teintes possibles dans la palette RVB.
    les 8 couleurs, c'est uniquement pour l'avant plan, lorsque le bit 7 des attributs sert pour le clignotement.

    pour convertir une image en ascii art couleur, il faut proceder par etapes.

    d'abord convertir en gris, pour avoir le niveau d'intensité du noir et du blanc pour chaque cellule de l'image.
    une fois cette convertion faite, il faut generer les caractères en fonction de leurs proportions noir/blanc

    puis pour chaque proportion, il faut ensuite determiner les deux couleurs avant plan et arrière plan.

    melanger le tout, et ça donne de l'ascii art en couleurs.


    une solution toute bnete pour les niveaux de noir et blanc, c'est d'utiliser une liste de caratères assignés chacun à une proportion.
    .,:;-=xcoCOW@#

    la liste peut être calculée par l'ordi evidement.

  6. #6
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par --1-- Voir le message
    ... il faut ensuite determiner les deux couleurs avant plan et arrière plan.
    Donc, on peut utiliser 8 couleurs pour l'avant-plan et 8 autres pour l'arrière-plan et ce dans une palette RGB de 16 million de couleurs ?
    Ais-je raison ? (Ou tort...)

    Pat.
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  7. #7
    Membre éclairé
    Avatar de edfed
    Profil pro
    être humain
    Inscrit en
    Décembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : être humain

    Informations forums :
    Inscription : Décembre 2007
    Messages : 476
    Points : 701
    Points
    701
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par DOLPat® Voir le message
    Donc, on peut utiliser 8 couleurs pour l'avant-plan et 8 autres pour l'arrière-plan et ce dans une palette RGB de 16 million de couleurs ?
    Ais-je raison ? (Ou tort...)

    Pat.
    presque ç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
     
     0 - BLACK    4 - RED        8 - DARKGRAY    C - LIGHTRED
     1 - BLUE     5 - MAGENTA    9 - LIGHTBLUE   D - LIGHTMAGENTA
     2 - GREEN    6 - BROWN      A - LIGHTGREEN  E - YELLOW
     3 - CYAN     7 - LIGHTGRAY  B - LIGHTCYAN   F - WHITE
     
     
    ¦7¦6¦5¦4¦3¦2¦1¦0¦ AL
     ¦ ¦ ¦ ¦ ¦ ¦ ¦ +--- blue component of foreground color
     ¦ ¦ ¦ ¦ ¦ ¦ +---- green component of foreground color
     ¦ ¦ ¦ ¦ ¦ +----- red component of foreground color
     ¦ ¦ ¦ ¦ +------ INTENSITY component of foreground color
     ¦ ¦ ¦ +------- blue component of background color
     ¦ ¦ +-------- green component of background color
     ¦ +--------- red component of background color
     +---------- BLINKING of foreground character
    blinking (clignotement) est optionel, en general, il est actif, donc, pour la couleur du fond, il n'y a que les 8 premières couleurs, pour les caractères, il y a les 16.

    pour la palette VGA, c'est pas pareil, c'etait juste pour information, les modes textes n'utilisent pas la palette VGA. ils utilisent les couleurs que j'ai posté ici.

    je pense qu'une traduction de ce tableau serait superflue, tout le monde sais ce que veux dire red, green et blue.

  8. #8
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    OK Merci pour l'info.
    Maintenant tout devient clair. J'ai mes souvenirs d'il y a 25 ans et les début du PC qui reviennent... Cela ne me rajeuni pas.
    Je vais pouvoir mettre mon idée en pratique, histoire de voir si je peux améliorer l'image de boo64. Juste pour le fun...
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  9. #9
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par boo64 Voir le message
    PS: si tu connais un meilleur convertisseur image to ascii que DotPouet_machin, je suis prenneur.
    il y a aussi "img2txt" dans le package libcaca.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 14
    Points : 7
    Points
    7
    Par défaut RGB to !HSV
    Bonjour à tous,

    ayant lu avec interêt les posts ci dessus, j'ai une question ou plus une demande à vous soumettre à propos d'un sujet plus ou moins connexe. Je cherche en effet un bon algorithme (rapide) qui puisse extraire la Saturation (donc la composante vectorielle S dans l'espace HSV) d'une image au départ en RGB. Le fait est que je dois l'utiliser sur une image de grande taille, aussi certains autres algo proposés sur le net ne sont pas complètement adéquats et actuellement j'utilise une bibliothèque (C++) assez restreinte qui ne contient pas la fonction RGB2HSV. Je vous remercie d'avance pour votre bienveillante aide !

    uSimple

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par utilisateursimple Voir le message
    Je cherche en effet un bon algorithme (rapide) qui puisse extraire la Saturation (donc la composante vectorielle S dans l'espace HSV) d'une image au départ en RGB.
    Les formules de passage RGB/HSV sont assez simples : RGB->HSV
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Test Couleurs RVB
    Par TANITE dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 08/04/2013, 19h55
  2. [XL-2007] Conversion couleur RVB
    Par eliot.raymond dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/04/2012, 11h21
  3. Définir sa couleur RVB
    Par Newenda dans le forum MATLAB
    Réponses: 8
    Dernier message: 29/07/2009, 15h16
  4. Normaliser une image couleur RVB
    Par shakoulé dans le forum OpenCV
    Réponses: 2
    Dernier message: 15/07/2009, 14h37
  5. Réponses: 1
    Dernier message: 08/05/2009, 20h37

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