Accueil > Forum > > > > creer une mosaique à partir d'une image
creer une mosaique à partir d'une image
samedi 20 juin 2009 à 23:48:11 |
creer une mosaique à partir d'une image

gillardg
|
Bonjour, je suis occupé depuis un moment sur un programme pour créer des mosaiques à partir d'une image un peu comme celle ci http://gillardg.deviantart.com/art/Ann-so-M-126477495 j'ai donc commencé par me créer une liste d'images (Pix), avec la couleur dominante, le problème que je rencontre c'est au moment de comparer le pixel de l'image principale avec la couleur dominante des images de (pix) impossible de trouver 2 couleurs les mêmes pourtant je m'étais dit qu'avec 10000 images ça devrait marcher :) quelqu'un aurait il une idée??
|
|
dimanche 21 juin 2009 à 00:04:43 |
Re : creer une mosaique à partir d'une image

Mayzz
|
Heu... je pige rien du tout la, tu peux détailler ? Pas de source, pas de programme, pas de code, Juste une image... Peut être sur www.devinsfrance.com ^^ Plus serieusement, expose mieux ton problème si tu veux de l'aide. @+ Mayzz. Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
|
|
dimanche 21 juin 2009 à 09:30:21 |
Re : creer une mosaique à partir d'une image

gillardg
|
Bonjour, bonjour , je pensais que l'image était parlante :) 1 chaque image à une couleur dominante que l'on peut déduire avec un algo simple et arbitraire je fais donc un tableau avec la structure thumb avec 10000 images :)
'struct thumb = filename + dominant color
PublicStructure thumb Dim FilePath AsString Dim colo As Color EndStructure
maintenant j'ouvre une image on va l'apeler bmp que je mets dans un tableau de structure pixel 'struct pixel = position + color PublicStructure pixel Dim x AsInteger Dim y AsInteger Dim col As Color EndStructurepour créer une mosaique à partir de bmp : mosaic qui sera une représentation de bmp ou chaque pixel de l'image sera un carré de 50*50 ( thumb ) mosaic sera donc 50 X plus grand pour chaque pixel trouver dans tableau thumb couleur correspondante ( c'est la que j'ai un problème car tout le reste fonctionne )
j'ai un tableau de structure contennant 10000 images qui ont chacune une couleur dominante j'ai un tableau de pixel contenant 10000 pixel ce qui me donnera une mosaic de 5000*5000 mais impossible de trouver les couleurs correspondantes j'ai pensé peut être limiter le nombre de couleurs aux couleur WEB mais comment trouver la couleur web la plus proche de la couleur thumb et la couleur web la plus proche de la couleur pixel ??
mettre thumb dans mosaic position = pixel.x*50 pixel.y*50
a+
|
|
dimanche 21 juin 2009 à 11:29:36 |
Re : creer une mosaique à partir d'une image

Mayzz
|
Tu souhaite donc remplacer un pixel par une image, ok
Petite correction 10000 * 50 = 500 000 ^^
Pour commencer, tu peux travailler avec les pixels en mode RGB, ou en mode HSB, le problème vien du fait qu'il va faloir substituer des couleurs, car ta palette d'image est restreinte par rapport au couleurs 24Bits (je ne compte pas le Plan Alpha).
Si tu part du principe qu'un pixel est composé de 3Bytes (toujours sans compter le plan A), un pour le Rouge, un pour le vert, et un pour le bleu, cela te donne donc une palette de 255 ^ 3 = 16 581 375, on est donc loin de ta palette de 10 000...
Chacune des images de ton tableau devra donc être marqué pour appartenir non pas à une couleur, mais à une fourchette de couleur à fin de réduire cette palette, pour le calcul, je ne sais pas vraiement, et je t'avoue que ca m'a l'air assez complexe, de plus je n'ai pas le temps de me penché la dessus...
Petit conseil, récupere les pixels de ton image sous forme de System.Drawing.Color, celle ci te donnerai les infos sur le RGB/HSB sans avoir de code à saisir. Pour moi le plus simple serait de travailler avec le HSB étant donné que tu va subtituer des couleurs, je pense qu'il faut prendre en compte que la teinte devrat être respecté, mais ton image aura moins de précision quand à la saturation et à la luminosité. Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
|
|
dimanche 21 juin 2009 à 12:23:43 |
Re : creer une mosaique à partir d'une image

gillardg
|
salut , merci pour ta réponse , j'ai trouvé plus simple , une petite classe qui trouve la webcolor la plus proche, ça limite évidement le résultat mais c'est pas trop grave :) voici le code mais c'est pas parfait , à mon sens on peut faire encore mieux ' ' * This code is provided "as is". Without any warranty. ' Imports System Imports System.Collections Imports System.Drawing Imports System.Reflection Public NotInheritable Class ColorManagement Private Shared WebColors As ArrayList ''' ''' Returns the "nearest" color from a given "color space" ''' ''' The color to be approximated ''' The nearest color Private Sub New() End Sub Public Shared Function GetNearestWebColor(ByVal input_color As Color) As Color ' get the colorspace as an ArrayList WebColors = GetWebColors() ' initialize the RGB-Values of input_color Dim dbl_input_red As Double = Convert.ToDouble(input_color.R) Dim dbl_input_green As Double = Convert.ToDouble(input_color.G) Dim dbl_input_blue As Double = Convert.ToDouble(input_color.B) ' the Euclidean distance to be computed ' set this to an arbitrary number ' must be greater than the largest possible distance (appr. 441.7) Dim distance As Double = 500.0 ' store the interim result Dim temp As Double ' RGB-Values of test colors Dim dbl_test_red As Double Dim dbl_test_green As Double Dim dbl_test_blue As Double ' initialize the result Dim nearest_color As Color = Color.Empty For Each o As Object In WebColors ' compute the Euclidean distance between the two colors ' note, that the alpha-component is not used in this example dbl_test_red = Math.Pow(Convert.ToDouble((CType(o, Color)).R) - dbl_input_red, 2.0) dbl_test_green = Math.Pow(Convert.ToDouble((CType(o, Color)).G) - dbl_input_green, 2.0) dbl_test_blue = Math.Pow(Convert.ToDouble((CType(o, Color)).B) - dbl_input_blue, 2.0) temp = Math.Sqrt(dbl_test_blue + dbl_test_green + dbl_test_red) ' explore the result and store the nearest color If temp < distance Then distance = temp nearest_color = CType(o, Color) End If Next o ' done :-) Return nearest_color End Function ''' ''' Returns an ArrayList filled with "WebColors" ''' ''' WebColors ''' Many thanks to Julijan Sribar for his excellent article (http://www.codeproject.com/cs/miscctrl/MultiTabColorPicker.asp) Private Shared Function GetWebColors() As ArrayList Dim color As Type = (GetType(Color)) Dim propertyInfos() As PropertyInfo = color.GetProperties(BindingFlags.Public Or BindingFlags.Static) Dim colors As New ArrayList() For Each pi As PropertyInfo In propertyInfos If pi.PropertyType.Equals(GetType(Color)) Then Dim c As Color = CType(pi.GetValue(CObj(GetType(Color)), Nothing), Color) colors.Add(c) End If Next pi Return colors End Function End Class
|
|
dimanche 21 juin 2009 à 12:27:31 |
Re : creer une mosaique à partir d'une image

gillardg
|
décidément la freetxtbox n'aime pas chrome , ou est ce le contraire ??? svp pourrais on avoir une freetextbox compatible chrome ??mdr je vais poser la question à google pour voir si on peut rendre chrome compatible avec la freetextbox
|
|
dimanche 21 juin 2009 à 13:02:02 |
Re : creer une mosaique à partir d'une image

Mayzz
|
D'après une infos des admins le nouveau site est en cours de développement... (Ya pas que chrome, ya Opéra et IE8 en mode normal aussi...) Sinon pour le code, d'après ce que je peux voir il convertit les couleurs 24/32 en couleurs web ? Mais cela ne va pas trop réduire ta palette ??? Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
|
|
dimanche 21 juin 2009 à 13:27:06 |
Re : creer une mosaique à partir d'une image

gillardg
|
ça réduit à 141 :( mais j'ai pas d'autres idées pour l'instant. si tu vois un moyen simple de faire une palette de disons 2560 couleurs, je suis preneur :)
|
|
dimanche 21 juin 2009 à 13:37:14 |
Re : creer une mosaique à partir d'une image

Mayzz
|
ben heu... en fait non, mis à part ce que j'ai posté plus haut... Sinon diviser les Bytes de couleur / 16, ce qui donne 256 / 16 = 16 Puis une palette de 4096 soit 16 ^ 3 Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
|
|
dimanche 21 juin 2009 à 13:56:19 |
Re : creer une mosaique à partir d'une image

gillardg
|
ben oui l'idée est vraiment bonne :) faut juste trouver les images pour ce faire vais essayer :)
|
|
Cette discussion est classée dans : images, creer, partir, image, mosaique
Répondre à ce message
Sujets en rapport avec ce message
comment creer une image a partir d'une matrice en memoire [ par thebob ]
je cherche un procede rapide qui permettrer de convertir la matrice d'une image en image(que je pourrais afficher a partir de la procedure paint pictu
creer image a partir d une zone de texte [ par smoron ]
salutje voudrais creer une image contenant le texte d un textbox.comment faire?
Creer des images dynamiquement [ par Xneo ]
Voila, je vous explique mon souci! Je suis sous VB6.0. J'ai une image "Image1" que j'aimerai dupliquer dynamiquement afin que chacune des images est l
Lien pour images dan un dossier [ par medpurple ]
Bonjour a touss voila j'ais un ptit prob je voudrai faire une chose pour mon module de news je voudrai crer un bouton apeler image pour incerer une im
Lien pour images dan un dossier [ par medpurple ]
Bonjour a touss voila j'ais un ptit prob je voudrai faire une chose pour mon module de news je voudrai crer un bouton apeler image pour incerer une im
Ouvrir une image dans l'aperçu d'image windaube? [ par turlututuchapopointu ]
Salut à tous,J'ai intégré dans ma base de donnée Access un aperçu d'image associé à mes enregistrements. Comme ce n'est qu'un aperçu, j'aimerai que l'
Comment faire pour ... [ par Danyelk ]
Salut,Comment faire pour definir un nom d'objet a partir d'une donnee string ?Je m'explique :Je recupere par une routine, le nom d'un objet image, dan
Aide : Détection d'une image et récupération de sa position [ par Warnings ]
Hello, Je débute en VB donc je ne sais même pas s'il est possible de faire cela. Je cherche en faite une source ou un bout de code qui permet de dét
Creer repertoire a partir de la date de fichier [ par acornuez ]
Bonjour, J'ai un repertoire avec plusieurs photos. Je souhaite ranger mes photos par date. Pour ce faire, il faudrait créer un repertoire par date et
<tr> + images [ par kyript ]
peut on charger une image dans une balise ? en je veut une seul image pour mes 6 cases et pas 6 images qui en font une
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LES SERVICES D'APPLICATIONS DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Xavier Moreels et Julien Bakmezdjian Ce sujet est lié au partage des applications comme services dans SharePoint 2010, ceci représente la possibilité de créer sa propre application qui sera utilisable comme ceux en standard : Search...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA GED ET SHAREPOINT 2010TECHDAYS PARIS 2010 : LA GED ET SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Etienne Lacour Cette session a commencé par un rappel de la gestion de contenu et surtout une résumé des points ayant été amélioré avec 2010. Accompagné d'un point sur le cycle de vie des documents. Un rappel du fonctionnement de S...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : SHAREPOINT 2010 ET LES RéSEAUX SOCIAUXTECHDAYS PARIS 2010 : SHAREPOINT 2010 ET LES RéSEAUX SOCIAUX par ROMELARD Fabrice
Animé par: Olivier Lepeltier et Karim Manar Cette session commence par la présentation du concept de réseau social, mais surtout de la particularité de du réseau social dans une entreprise. La vision du réseau social est donc une extension du MyS...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : SHAREPOINT 2010 - DESCRIPTION ET NOUVEAUTéSTECHDAYS PARIS 2010 : SHAREPOINT 2010 - DESCRIPTION ET NOUVEAUTéS par ROMELARD Fabrice
Animé par: Karim Manar et Laurent Beaudouin Cette session a pour but de revenir sur ce qu'est SharePoint globalement, mais aussi de voir les évolutions liées avec l'avènement de la version 2010. A partir de la marguerite de...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE LUNDITECHDAYS PARIS 2010 : PLEINIèRE LUNDI par ROMELARD Fabrice
Comme chaque année, c'est le grand rassemblement autour des technologies Microsoft qui se déroule donc à Paris au Palais des Congrès. Cette année est riche pour Microsoft en terme de livraison produit, paris l...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SDKRE : SDK par ucfoutu
Cliquez pour lire la suite par ucfoutu
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|