Réaliser une matrice avec Excel

SERIEUXETCOOL

XLDnaute Occasionnel
Bonsoir le Forum,

J'ai un petit problème de codage... Voici ce que je cherche à faire. Je dispose d'un axe X définit sur une plage [XD;XF]. Je parcours l'axe X en incrémentant d'un pas nommé PX.
J'ai la même chose avec un second axe, l'axe Y. Il est définit par une plage [YD;YF]. Et on parcours l'intégralité de cet axe avec un pas qui vaut PY.

XD,XF,PX, et YD,YF,PY sont des variables de types Double et sont à fixer par l'utilisateur. Elles sont donc connues et le système est donc paramétré.

Maintenant je cherche à remplir 2 colonnes dans une feuille Excel de la manière suivante :

Colonne A / Colonne B
XD / YD
XD / YD+PY
XD / YD+PY+PY
...
XD / YF
XD+PX / YD
XD+PX / YD+PY
XD+PX / YD+PX+PX
...
XD+PX / YF
XD+PX+PX / YD
ETC

Je ne parviens pas à réaliser cette matrice ! Un peu d'aide serait la bien venue si possible.

Au cas ou ma méthodologie ne soit pas la bonne, je donne quelques détails sur ce que je souhaite faire du code. En gros j'ai 2 axes X et Y qui représentent une largeur de photo en pixel et une hauteur de photo en pixel. Je désire placer un certains nombre de points sur cette photo avec la résolution que je veux. Mais je n'arrive pas à automatiser le placement des points car je ne sais pas créer la matrice.

Je reste disponible si vous avez besoin de plus d'infos.

André
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Bonjour.
Ne sois pas trop pressé d'enlever des trucs: il sera toujours temps de le faire.
La propriété Visible du contrôle Iimage pourrait être mise à False. Ce serait un coup à oublier son existence alors qu'il est essentiel au fonctionnement. Je ne vois vraiment pas en quoi ce simple petit aperçu (vu de l'usager) peut gêner, il suffit de lui trouver la bonne place dans l'application définitive !
Je n'ai pas vu beaucoup de couleurs dans ton image. En fait je n'en vois pas bien le rapport avec le reste.
Dans la Worksheet_Change de Feuil1 ajoute la 1ère de ce deux instructions devant la 2ième qui existe déjà :
VB:
         Me.[PixX].Rows(2).EntireRow.Copy
         Me.[PixX].Rows(2).Resize(L).EntireRow.Insert
Ainsi d'éventuelles formules identiques sur toutes les ligne derrière le tableau géré par la macro seraient reconduites en cas d'agrandissement. Je n'ai aucune idée de ce que tu veux y mettre. Il se pourrait bien que tout ce que tu veux calculer se le puisse non pas par des formules s'appuyant sur un nombre restreint de pixels, mais par une analyse de tous ! J'ai vu un cercle dans l'image ?... je pourrais calculer l'angle de teinte moyen de tous les pixels compris entre deux distances voisines d'un centre, la direction du gradient si ce n'est pas équilibré etc. Il s'agit de définir ce qu'on veut exactement.
Et établir une correspondance entre mes angles et les épaisseurs. 5 points seulement pourraient l'établir à l'aide d'une courbe conique.
À +
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonjour Dranreb,

En effet il est toujours plus simple de supprimer des choses que d'en rajouter. Ces infos ne me gênent pas en soit. Ma crainte est de voir un ralentissement du code de calcul si on le sollicite sur beaucoup de lignes avec beaucoup de colonnes. C'est uniquement en ce sens que je pensais essayer d’alléger au maximum le code. Mais ça peut attendre encore un peu en effet :eek:

En ce qui concerne le contrôle image, la aussi c'est la même remarque. J'ai peur que ça contribue au ralentissement de l'enssemble. Sinon de la place, il y en sur une feuille Excel tout de même. On va bien lui trouver un coin pépère^^. En plus j'aime bien quand l'image est chargée dans le contrôle image. On garde donc toutes les données pour le moment, ainsi que le contrôle image dans sa taille actuelle.
(En tout cas je suis content de voir que le contrôle image se manipule assez aisément avec ses propriétés. Merci pour l'info)



Je n'ai pas vu beaucoup de couleurs dans ton image. En fait je n'en vois pas bien le rapport avec le reste

En effet, l'image que j'ai envoyé représente seulement un schéma grossier. L'image en elle même n'a rien à voir. Je ne voulais pas vraiment faire transiter ce genre d'images ici, mais il me semble naturel de partir sur une image de référence sinon c'est trop compliqué en effet.
Je met donc à disposition en pièce jointe une image typique de celles que j'utilise habituellement. Le code devra donc être adapté pour ce genre d'images. Tu voulais des couleurs ? Il y en a pleins sur cette image^^. Ce sera idéal pour faire progresser le code je pense. Et puis c'est plus intéressant de travailler sur du concret. Nous utiliseront donc cette image comme référence.


En ce qui concerne la ligne de code que tu m'a demandé de changer je ne vois pas son influence. Je pense que tu veux mettre cette ligne, au cas ou j'ai d'autres colonnes à calculer. Hors si je ne met pas ta ligne de code, je peux très bien rajouter des formules sur des colonnes en rapport avec la table qui est déjà créée et ça ne pose pas de problème. Donc j'ai mal compris. Alors à quoi sert cette ligne de code car je n'en comprends pas le sens (même en lisant ton explication). Dsl je suis lent à comprendre parfois. Du coup j'ai préféré ne rien changer sur le code pour le moment.


Je n'ai aucune idée de ce que tu veux y mettre. Il se pourrait bien que tout ce que tu veux calculer se le puisse non pas par des formules s'appuyant sur un nombre restreint de pixels, mais par une analyse de tous !

Euh...comment dire, c'est exactement ça que je cherche à faire en fait. Si j'ai décidé de mettre en place une maille X, Y c'est justement pour placer un certains nombre de points sur la photo afin d'en extraire les informations voulues (X,Y,Angle). C'est aussi pour cette raison que je voulais avoir la possibilité de régler la finesse de la maille au travers du pas pour obtenir une bonne image. Mon but est de prendre le plus de pixels possible afin d'avoir la meilleure précision possible. Je ne savais pas qu'on pouvait traiter tous les pixels dans leurs ensemble. Ce serait génial en effet. Mais je me dis que de toute façon plus j'aurais de points, plus les fichiers seront gros et gourmands en temps de calcul. (Sauf si on ne traite pas les choses par des formules de manière itératives en effet. Mais je ne vois pas comment on pourrait faire autrement de toute façon).
Je ne sais pas quoi répondre la. Traiter tous les pixels dans leur globalité serait super en effet. Mais j'ai des doutes quand à la faisabilité du truc.
Pourquoi ne pas essayer un coup !
De plus, sois rassuré je n'ai pas 36 mille calculs à faire en plus. Mon but est de convertir mon image qui est en Pixel vers une unité métrique. En gros au lieu de travailler avec des pixels j'aimerais avoir des micromètres. C'est une simple règle de proportionnalité qui me permet de faire ça. Je sais que 691 pixels correspondent à 642,153 microns. Du coup je pensais afficher les coordonnées X et Y des pixels, puis juste à côté les coordonnées X et Y en microns. Mais moi à pars boucler sur toutes les lignes pour recalculer la conversion je ne sais pas faire !
Dans le même style je souhaite normaliser mon angle pour qu'il soit compris entre 0 et 1. Donc je pensais rajouter une colonne à coté de celle de l'ange et qui contiendrait un angle normalisé. J'en ai besoin sous cette forme la pour la suite.

Voila les seules formules que je dois calculer en plus des données déjà présentes sur le fichier actuel. C'est pas franchement méchant, mais je suis capable de faire ramer le code si je ne programme mal le tout :rolleyes:. A mon avis la forme itérative n'est pas la plus adaptée ici.



J'ai vu un cercle dans l'image ?... je pourrais calculer l'angle de teinte moyen de tous les pixels compris entre deux distances voisines d'un centre, la direction du gradient si ce n'est pas équilibré etc. Il s'agit de définir ce qu'on veut exactement.

Dans le schéma que j'ai envoyé il y a bien un cercle. C'est justement le cercle dont je faisais référence dans les premiers posts. (Tu le verras très bien sur la nouvelle image en pièce jonte). Sur l'ensemble de la photo, SEUL l'intérieur de ce cercle m'intéresse. TOUT le reste qui se trouve en dehors du cercle ne m'intéresse pas. Voila également pourquoi je disais que j'avais créé ma propre maille circulaire. Une maille qui prends en compte UNIQUEMENT les points disposés dans un cercle.
Tu touche du doigts la suite du projet Dranreb !!! Té carrément calé sur le sujet dis donc ??? En effet, je vais chercher à faire la moyenne des angles sur une petite surface circulaire. Cette moyenne d'angle est primordiale pour la suite. La direction du gradient ne m'intéressera pas ici. Seul la définition du cercle (centre et rayon), les pas en X et Y ainsi que la moyenne des angles m'importent.
Mais attention c'est un peu plus délicat qu'il n'y parait. En effet il y a deux cercles à définir. Les deux cercles ont le même centre mais pas le même rayon. Le premier cercle va définir l'enveloppe extérieur de l'ensemble des points qui m'intéressent. Il s'agit en quelque sorte d'un rognage de la photo. On ne garde que les points présents à l'intérieur du cercle. Il aura généralement un rayon de 125 microns et la résolution la plus haute possible en terme de maillage.
Uns fois ce premier cercle correctement paramétré et fonctionnel, le but du jeu va être de trouver la teinte moyenne du centre du cercle. Il faut donc définir un deuxième cercle de même centre que le premier mais avec un rayon très petit (10 Microns environ). Pour ce faire il faudra utiliser le même centre de cercle et définir une toute petite maille circulaire ou seront disposés soit une Centaines de pixels, soit tous les pixels comme tu le sous-entendais. C'est juste pour avoir l'angle au centre même de mon image. Il ne s'agit pas de calculer l'angle moyen sur le grand cercle, mais sur le petit cercle.


Je ne sais pas si je suis clair. Mon dieu que je m'exprime mal ! Pourtant c'est très simple il me semble (simple à comprendre je veux dire, pas à faire). Dans tous les cas, si tu as des questions Dranreb n'hésite surtout pas. Je ferais de mon mieux pour redéfinir les choses.



Et établir une correspondance entre mes angles et les épaisseurs. 5 points seulement pourraient l'établir à l'aide d'une courbe conique.

La je suis bluffé si tu fais un truc comme ça ! Moi j'utilise la teinte au centre du cercle pour justement faire une correspondance avec l'épaisseur. J'aimerais comprendre comment tu compte t'y prendre pour faire le lien entre angle d'un pixel et son épaisseur ??? Je ne vois pas trop le coup venir. Mais l'idée est la même. Je veux représenter en 3D ET en échelle d'épaisseur l'image initiale. Quand je dis en 3D, c'est à dire utilisé les cordonnées X,Y,Angle faire un tableau croisé dynamique, pour afficher la matrice et enfin avec Excel 2007 utiliser un graph de surface. J'obtiens alors très facilement et surtout très visuellement une image 3D de la photo initiale.


Tu vois Dranreb, il y a énormément d'informations à manipuler pour obtenir le résultat escompté. C'est pourquoi je désirais alléger le code au maximum pour ne pas se noyer. Mais si on arrive à disposer proprement l'ensemble ça devrait être jouable. C'est du costaud en tout cas...


Il est bon de faire un résumer pour ne pas se perdre dans toutes ces propositions :

-Garder le contrôle image pour le moment ainsi que toutes les données de la table déjà calculées
-Travailler uniquement avec l'image de référence que j'ai placé en pièce jointe
-Vérifier si l'idée de créer une maille rectangulaire ou circulaire est la plus adaptée à ce projet. Tu parlais de traiter tous les pixels dans leur globalité. Je demande à voir un exemple pour mieux comprendre le truc. Il ne faut pas oublier que je veux tracer des graphiques en surfaces au final. J'aurais donc besoin de coordonnées pour ce faire, donc d'un ensemble de points
-Rajouter une colonne de correspondance entre Pixels et Microns, ainsi qu'une colonne qui contient l'angle normalisée
-Essayer de se pencher sur le problème de maillage circulaire qui reste le cœur de ce post. Pour le grand cercle, il faudrait entrer le centre du cercle (en pixels ou bien en microns peut importe), le rayon que l'on désire, et le pas en X, Y
-Une fois l'enveloppe extérieur définie, c'est pratiquement gagné. Il suffit de récupérer un échantillon de points au centre du cercle pour en obtenir la valeur en Angle moyenne


On vas déjà essayer de tendre vers un fichier qui réalise plus ou moins l'ensemble des demandes. On verras ensuite ce que l'on pourra en dire. Dranreb, j'avoue que ça deviens de plus en plus complexe. Si tu veux continuer de m'aider, prends ton temps je ne suis pas pressé. Je préfère avancer pas à pas pour que ça arrange tout le monde. Par contre si jamais c'est un jeu d'enfant pour toi, n'hésite pas à m'en demander plus car j'ai pleins d'idées pour faire évoluer le code :D

Mais bon chaque chose en son temps. Si déjà j'obtiens une première version stable ce serait top.


Bien cordialement,

André


Ps : En cadeau j'ai mis un fichier Excel (2007) qui contient les fameux graphs 3D que je réalise actuellement et qui me prennent un temps phénoménal !!!! L'axe X est en pixel, Y en pixel et Z en HUE non normalisé. Mon logiciel me donne un HUE compris entre 0 et 65535 due au fait qu'il convertisse mon image .tif en 48 bit. Dranreb, tu devrais toi aussi parvenir à obtenir ce genre de graphs avec ton fichier Excel. J'ai testé et ça marche bien aussi ;)
 

Pièces jointes

  • IMAGE DE REFERENCE.BMP.zip
    878.4 KB · Affichages: 76
  • EXEMPLE DE GRAPHS 3D.xlsx
    855.2 KB · Affichages: 104
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Aïe ! Comme je le subodorais la teinte ne suffit pas à déterminer l'épaisseur, à moins qu'on ne s'intéresse qu'aux plus grandes forces
Ai-je bien compris que l'épaisseur va en s'accroissant vers l'extérieur du cercle ? En sortant du disque ça parcourt l'arc-en-ciel dans l'ordre Bleu-Vert-Rouge, donc longueurs d'ondes croissantes. De plus des couleurs sont ensuite sautée et deviennent indistinctes en raison du mélange de plusieurs résonances possibles à diverses longueurs d'ondes dans cette épaisseur. Non, non c'est sûr c'est croissant !
Je serais intéressé même pour ma culture personnelle d'avoir la correspondance entre mes angles de teintes et les épaisseurs d'huile.

Écoute, il serait par exemple possible de spécifier juste 3 points et une teinte imposée.
D'exécuter une procédure qui trouve dans l'image le gradient de teinte dans le voisinage et corrige la position de chaque point une dizaine de fois jusqu'à atteindre la teinte demandée. C'est plus rien ensuite de calculer le centre et le rayon du cercle passant par les 3 points !
Je pense qu'il va falloir passer par d'autres unités de mesure que le pixel. Donc spécifier une échelle du pixel. L'origine en haut à gauche c'est bon ? Ne vaudrait-il pas mieux l'avoir en bas à gauche et croissant verticalement ?
Hé! Avec 5 points je peux même te trouver une ellipse, c'est une conique après tout, et je me suis fait un module qui leur est dédié !
À +
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

En effet la teinte seule ne permet pas de mesurer l'épaisseur de film (du moins sans courbe de calibration). Je vais essayer d'expliquer brièvement comment on peut faire la correspondance entre une teinte et une épaisseur.

Tout d'abord il faut imposer une référence. Hors la seule référence possible ou l'on peut connaitre l'épaisseur en fonction de la teinte...est pour l'épaisseur nulle. C'est ainsi que j'utilise une photo de calibration statique, ou je suis sur que l'épaisseur de film de d'huile soit nulle. De cette façon j'obtiens ma correspondance entre Angle et épaisseur.

Une fois cette courbe de calibration obtenue, pour toute nouvelle photo ouverte, il suffit d'utiliser l'échelle de correspondance entre Angle et épaisseur. C'est ainsi que je procède.

Mais tu te rends compte qu'il est très difficile à la main d'obtenir la correspondance pour chaque pixel en épaisseur. C'est pourquoi je n'utilise qu'une valeur moyenne d'angle précisément au centre du cercle. C'est la ou se trouve l'épaisseur la plus intéressante. Mais si l'on dispose de tous les pixels, on peut aisément convertir non plus une simple petite zone du contact, mais bel et bien l'intégralité du contact. Et la c'est la grande classe !!!!


L'objectif final est donc de récupérer tous les pixels du cercle, et de convertir tous les angles en épaisseur de manière à obtenir un graph 3D non plus en Angle mais en épaisseur. Le chalenge est grand mais réalisable. J'en suis convaincu.



Ai-je bien compris que l'épaisseur va en s'accroissant vers l'extérieur du cercle ? En sortant du disque ça parcourt l'arc-en-ciel dans l'ordre Bleu-Vert-Rouge, donc longueurs d'ondes croissantes. De plus des couleurs sont ensuite sautée et deviennent indistinctes en raison du mélange de plusieurs résonances possibles à diverses longueurs d'ondes dans cette épaisseur. Non, non c'est sûr c'est croissant !

Tu es décidément bien plus au courant du sujet que je ne le pensais Dranreb ! Ça fait plaisir d'ailleurs de savoir que tu es dans le bain. Tu as une bonne culture en tout cas. J'ai mis du temps à comprendre ces choses la personnellement. Je vais donc t'en dire un peu plus, et tu vas voir que tes suppositions sont bonnes. L'image que je t'ai envoyée correspond au contact entre une bille et un disque. Le disque est transparent et donc on peut envoyer de la lumière au travers pour voir le contact. D'après la Théorie de Hertz, une bille au contact d'un disque donne un contact circulaire en prenant en compte les déformées des éléments.
Ce que tu vois sur la photo en forme de cercle, est justement le contact. Ensuite la bille roule sur le disque et de l'huile est injectée. C'est ce qui donne les couleurs de l'arc en ciel que tu as pu observer.
Pour en revenir à ta supposition qui est que l'épaisseur crois vers l'extérieur du disque, si tu visualise la bille sur le plan, l'épaisseur est minimale au centre du cercle, et va en s’accroissant au fur et à mesure que tu t'éloigne du centre. La bille est circulaire, donc les franges interférométriques le sont aussi. Voila pourquoi tu as des cercles. Chaque de couleur de l'arc en ciel correspond à une épaisseur. Au bout d'un moment, l'épaisseur est trop grande et on perd le signal.
Tu as donc tout juste Dranreb. Et tu as trouvé ça sans même savoir réellement de quoi il s’agissait. Je suis scotché la ! Respect


Je serais intéressé même pour ma culture personnelle d'avoir la correspondance entre mes angles de teintes et les épaisseurs d'huile.

Et moi donc !!! Mais justement c'est le but de ma venue ici. Obtenir l'intégralité du contact en 3D et en épaisseur. Hors pour ce faire il faut utiliser une courbe de calibration. Je te ferais passer la photo du contact statique et qui permet de faire la correspondance. C'est seulement la que tu pourras associer une couleur à une épaisseur. Mais c'est pas aussi simple qu'il n'y parait donc ça attendra que l'on débroussaille mieux le fichier Excel actuel.

Malheureusement il y a un problème. Ce n'est pas aussi simple en réalité. Si tu remarque bien les couleurs, elles sont cycliques. C'est à dire que si tu pars du centre du cercle, on parcours l'arc en ciel une fois, puis on recommence et ainsi de suite en allant vers l'extérieur (l'épaisseur crois toujours). Donc en conclusion, pour une même teinte par exemple un Vert, il y aura plusieurs épaisseur possible. Je ne sais pas si je suis clair, mais si tu relis calmement ces lignes tu comprendras ce que je veux dire.


En ce qui concerne le fait de trouver le centre du cercle, il est imposé par l'utilisateur. C'est à dire que c'est moi qui vais placer le centre à l'oeuil. Le centre ne seras pas bien précis, mais tant que l'on voit tout le contact ça me va. Je ne suis pas sur que l'on puisse trouver le centre du contact en mode automatique ??? Ça parait compliqué vraiment.
Si je dois entrer manuellement les coordonnées du centre du cercle pour chaque photo, ça ne me dérange pas. C'est acceptable. Du coup ça facilite pas mal de chose. J'impose le centre du cercle, j'impose le rayon du grand cercle (il ne varie quasiment pas), et le pas en X et en Y de la maille. Tout se fait quasiment en automatique pour récupérer le reste des données. Qu'en pense tu ?
Ça me parais plus raisonnable en tout cas pour commencer.


Et pour finir, en ce qui concerne l'origine du repère, je pense que l'on peut le placer ou l'on veut c'est presque pareil. Essaye donc de le placer de manière classique. C'est à dire origine en bas à gauche, axe horizontal croissant vers la droite, et axe y vertical croissant vers le haut.
Pour convertir les pixels en Microns, j'ai donné la règle de 3 à utiliser. C'est très simple à programmer.



Je vais manger,

A plus...
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Après une petite réflexion, je suis arrivé à la conclusion qu'il est trop tôt pour parler d'épaisseur de films. Il reste un paquet de petites choses à faire avant de pouvoir se lancer sur ce chemin.

En effet il est indispensable de pouvoir disposer des coordonnées des pixels en X et Y, de leurs conversions en Microns, de l'angle ainsi que de l'angle normalisé (compris entre 0 et 1).
Une fois cela fait, il est indispensable de tracer des graphs 3D avec l'angle NORMALISE. Exactement les mêmes graphiques que j'ai mis en pièce jointe au post numéro 32.
En fait si tu veux, on ne peut pas tricher avec l'angle. C'est à dire que pour un pixel il y a un seul angle possible. Ce sont des valeurs brutes en quelques sorte. Il est indispensable pour moi de représenter ces valeurs brutes dans un premier temps. C'est seulement après avoir fait tout ça correctement que l'on pourra essayer de se pencher sur la correspondance avec l'épaisseur. Convertir l'angle en épaisseur demande des règles de décisions qui feront que le signal peut être faussé. C'est pourquoi il faut tracer les graphs en 3D avec l'angle et plus tard la conversion avec l'épaisseur. C'est beaucoup trop délicat sinon.


Je conseille donc d'essayer dans un premier temps de progresser calmement en affichant des graphs 3D de l'angle NORMALISE uniquement.(Graphs de surface sous excel 2007). Et de rajouter les colonnes de données qui manquent cruellement actuellement.


C'est le premier défit. La suite seras simple à construire.


André

Ps : Il faudrait tracer 3 fois le même graph 3D mais avec une orientation dans l’espace différente. Une vue de dessus, une vue de face, et une vue en 3D (comme sur le fichier excel que j'ai mis au post 34)
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Bonjour.
Je vois de moins en moins l'utilité des graphiques.
Surtout celui de la vue de dessus: l'image me semble parler d'elle même suffisamment.
On pourrait profiter du fait que seules les teintes sont intéressantes pour dessiner des courbes de niveaux avec la luminosité dans une image recalculée.

Bon ben je l'ai fait ! Le temps de calcul est de l'ordre de la minute. Il produit un fichier nommé "Recalculée.bmp" sur le même dossier que l'image d'origine. Une fois obtenue, le bouton affiche alternativement l'image d'origine ou la recalculée dans le graphique.

Dernière minute: on ne s'intéresse qu'au forces>125. Ça peut mettre en évidence des zones à problème comme ce curieux croissant au bord, en ne montre plus les zones peu significatives. Ça réduit aussi légèrement les temps de calcul.

À +
 

Pièces jointes

  • ImgMicrons.xls
    303.5 KB · Affichages: 62
  • ImgMicrons.xls
    303.5 KB · Affichages: 66
  • ImgMicrons.xls
    303.5 KB · Affichages: 69
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonjour Dranreb,

Il est vrai que le graphique en vue dessus est peu intéressant lorsque l'on a l'image devant soit. C'est la même représentation au final. C'est d’ailleurs pour cette raison la, que j'évoquais le fait de masquer le contrôle image à un moment. Car sinon on a l'image du contrôle image, l'image dans le fond de plan du graphique et la représentation de l'image en vue de dessus sur le graphique 3D. Ça fait redondant je trouve.

Étant mécanicien à la base, je préfère représenter une image 3D sous sa forme 2D par projection suivant des plans. C'est plus facile à lire et à interpréter. Voila pourquoi je veux un graph en vue de dessus, un graph en vue de fasse et un graph en vue d’ensemble. C'est ainsi que je véhicule l'information. Bien que l'image suffise, je ne suis pas sur qu'il soit simple pour tout le monde d'imaginer la forme du contact dans l'espace. L’œil se focalise sur une couleur et en interprète une hauteur éventuellement. Mais il n'est pas capable de visualiser l'ensemble de l'image pour se dire " tiens la photo représente une forme qui ressemble à ça dans l'espace". L'image 3D est bien plus rapide d'interprétation et me facilite vraiment la vie.

D'autre part, j'ajouterais que l'image que je t'ai fait parvenir est plutôt jolie. Les couleurs sont contrastées, on voit bien les choses. Sauf que dans mon application mes images sont vraiment moins jolies. Elles sont sombres et peu contrastées. De plus, je me suis rendu compte que bien que mon image soit "jolie" visuellement, il se peut que si l'on regarde uniquement les angles, et bien on se retrouve avec une information non exploitable. C'est en ce sens la que je veux représenter une image en graphs 3D pour visualiser en un instant si mon image est exploitable ou non pour la suite, et dans quelles mesures elle ne l'est pas.
Et c'est la que l'image de base ne suffit vraiment plus à elle tout seule. On a beaucoup de mal à imager le contact dans sa vue 3D tellement l'image présente des disparités. La encore, la décomposition de l'image de base en variation de teintes ne suffirais pas non plus. On aurait une image en nuances de gris mais ce serais tjs délicat de bien cerner les "dégâts".

La meilleur solution pour moi, est actuellement de représenter le contact en 3D avec les graphs. L'image est superbement riche en informations. Beaucoup plus que ne l'est l'image de base.

Je maintiens donc mon souhait d'obtenir les graphs 3D calculés automatiquement en fonction de la table de données. Le graphique qui contient l'image en fond de plan, ne me sert qu'a placer correctement le centre de mon contact. Ainsi je place un point et je regarde s'il est bien centré ou pas. Dès que je suis bien centré, je fait alors calculer les 3 graphiques 3D.

Je ne suis pas arrivé à faire afficher l'image en variations de teintes chez moi ??? J'ai bien le bouton mais quand je clique dessus tout se fige sans que rien ne se passe. J'essaierai de nouveau ce soir en laissant tourner 20 minutes...on sait jamais. Mon pc peut être moins performant. De toute façon je doute que cette image en dégradé de teintes me soit utile Dranreb. Vraiment ce qui m’intéresse ici, c'est de pouvoir ouvrir une image, définir un centre et voir ou ce point se trouve sur l'image, lancer le maillage circulaire, tracer les 3 graphiques de surfaces ensuite.

Le reste risque de me compliquer la tâche même si tu penses le contraire. Mais je peux me tromper évidement. Je te laisse faire comme tu le sens, mais je ne suis pas sur de vouloir changer d'avis pour le moment...


Bien cordialement,

André


Ps : Super la conversion Pixels/microns. Et aussi bravo pour le maillage circulaire. La encore ta maille circulaire calcule 100 à 200 fois plus vite que celle que j'avais programmé au début. Un vrai plaisir de jouer avec la résolution du pas !

Question, pourquoi n'as tu pas créé une colonne supplémentaire avec l'angle normalisé ? Il suffit de diviser la colonne des angles par sa valeur maximum, soit 6 dans ce cas. Tu dois avoir eu une raison pour ne pas le faire. Puis-je savoir ?
 

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Parce que je n'étais pas sûr que c'était ça que tu entendais par "normalisé". Pourquoi le rouge devrait-il coïncider à la fois avec 0 et 1, et pourquoi devrait-il progresser dans le sens des fréquences ou de leurs harmoniques plutôt que dans celui des longueurs d'ondes ?
Mais pas de problème: écris =Angle/6 dans une colonne supplémentaire (autant utiliser le nom puisqu'il existe)
Vérifie si le répertoire contenant le fichier source est bien accessible en écriture. Ça ne devrait pas prendre 5 minutes quand même ! Dois-je ajouter une barre de progression ?
Cordialement.
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonsoir le forum,

Dranreb je vais profiter du weekend pour me concentrer sur ton code. Faut que j'arrive à le lire comme dans un livre. Si j'y parviens, et j'espère !, ben je vais procéder à des petites modifs.

On verra bien si j'y parviens.

Pour normaliser l'angle je m'en charge. Mais par contre j'ai eu la curiosité de faire des tests sur cet angle. Tout d'abord la première curiosité est le fait que si je prends un RGB de la maille correspondant à un pixel, et si je compare à ce que donne ton programme "couleur"...Je ne trouve plus les mêmes valeurs d'angle pour un même couple RGB !!! Comment est possible ?
De plus, la valeur d'angle normalisée que donne le fichier Excel ou celle du code couleur est différente de la valeur normalisée donnée par mon logiciel. L'erreur est faible, mais tout de même la valeur n'est pas égale. J'ai trouvé sur le net une formule qui convertit un couple RGB en Angle. Je met le pdf en pièce jointe. Cette formule me permet à partir d'un couple RGB de retomber parfaitement sur la même valeur d'angle normalisée que celle qui est donnée par mon logiciel.

Comment peux tu expliquer quelle formulation est plus juste qu'une autre ?



Pourquoi le rouge devrait-il coïncider à la fois avec 0 et 1, et pourquoi devrait-il progresser dans le sens des fréquences ou de leurs harmoniques plutôt que dans celui des longueurs d'ondes ?

La je ne sais pas quoi répondre très sincèrement.



Finalement sur mon pc perso j'ai réussi à afficher l'image avec le bouton que tu as rajouté. Inutile de rajouter une barre de progression. Mais à quoi peux me servir cette nouvelle image du coup ? Je n'arrive pas à saisir.


Bonne nuit.

André
 

Pièces jointes

  • RGB_to_HSI.pdf
    135.3 KB · Affichages: 69

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Les calculs spécifiés dans le PDF seraient sans doute justes si les valeurs de composantes RGB étaient proportionnelles aux intensités lumineuses photographiées. Mais je suppose que ce n'est pas le cas puisque les écrans sont censés restituer une intensité lumineuse de chaque pixel proportionnelle à celle des points correspondants de l'image originale à reproduire, or une croissance linéaire de l'intensité restituée ne résulte pas d'une croissance linéaire des valeurs RGB correspondantes. J'ai déjà parlé de ce problème de gamma.
La valeur d'angle affichée par mon programme est arrondie au huitième le plus proche car l’œil on ne distingue pas de différences de teintes plus fines.
L'image calculée avait pour ambition de remplacer le graphique de la vue de dessus en ajoutant des fronts de contrastes à certaines valeurs d'angles, et en visualisant tous les pixels et non pas ceux d'un maillage. La teinte n'est pas modifiée, et la force y est constante.
Cordialement.
 

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonjour le Forum

Dranreb je ne pense pas parvenir de moi même à modifier le fichier aussi facilement que je le pensais. Malheureusement c'est bien ce qu'il me semblais, le code est relativement poussé pour mon niveau actuel.

Néanmoins je ne ne baisserai pas les bras car j'en ai trop vu si on peut dire^^. Je vais donc aborder une autre approche si je peux me permettre bien sur. Je m'explique.

Avant de partir dans un code encore plus poussé et finalement me noyer de plus en plus dans l'information, je vais repartir calmement du début en ré-agençant les données qui me sont utiles à l'endroit ou je les veux sur la feuille, avec la mise en forme que je souhaite.

Car je me rend compte que je ne parviens même pas à faire calculer les données dans d'autres cellules au lieu de celles que tu as utilisés. Je me connais, je suis lent pour modifier les codes dû à mon niveau, mais en général j'y parviens avec un peu d'aide. Maintenant que j'ai vu que l'on peut faire ce que je rêvais de faire avec Excel, je vais essayer de ré-agencer suivant mes gouts.

Une fois que j'aurais fait ça, le tour sera pratiquement joué.


Ça sera également pour moi l'occasion de maitriser le code que tu as mis au point et qui est superbe je trouve. Mais trop évolué malheureusement pour moi.


Une chose est sur, c'est faisable ! Et parce que c'est faisable, je prendrai le temps qu'il faut pour y parvenir à ma façon en essayant de comprendre au max.


Pour le moment je repars de 0 tranquillement. Pour ce faire et pour m'aider à avancer plus rapidement, Dranreb, pourrais tu m'envoyer un fichier Excel ou il y a seulement le contrôle image chargé, le paramétrage de la maille circulaire (Pixels et Microns), et les points de la maille qui sont calculés (PixelsX,Y, MicronsX,Y et RGB uniquement).
En gros j'aimerais partir de cette base.
Ce qui veut dire un code sans les calculs d'énergie, d'angle et de force. Et un code sans la partie qui traite de l'affichage du graphique avec la photo. J’intégrerai ça au fur et à mesure.

Mais la base c'est le contrôle image et la maille circulaire. Comme tu l'avais dit avant, il est plus facile de supprimer des morceaux que de les créer. Les morceaux sont créés, ils existent. Alors on peut mettre des bouts de coté pour le moment je pense afin de m'aider à avancer avec le minimum d'information.


Si ce n'est pas trop demandé, j'apprecierai ce fichier Excel epuré. Sinon tant pis, je consacrerais plus de temps à la reconstruction du nouveau fichier. Le travail que tu as fait est déjà remarquable à mon gout. Et en si peu de temps en plus. Piouf la class Dranreb !


Bien cordialement,


André


Ps : Je reviens dès que possible ici avec mon fichier Excel qui sera la nouvelle référence pour la suite (enfin si j'arrive à faire un truc quand même^^)
 

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Je suis un peu vexé à vrai dire que tu veuille te débarrasser de mon module de calcul de couleurs...
J'aurais préféré avoir des informations sur les relations qui existent entre les composantes RGB informatiques et les véritables intensités lumineuses à partir desquelles elles sont déterminées. Tu sembles avoir du matériel, tu ne pourrais pas faire des mesures ? Tu me devrais bien ça ! Et ça pourrait te servir à calculer des angles de teintes plus justes. Tu pourrais même définir des constantes ExGamma et GLimite dans CouleursCalculs et orienter la compilation du module vers tes valeurs à l'aide de la constante de compilation SysGamma (les instructions commençant par # sont des directives de compilation).
Sinon si tu ne veux plus certaines colonnes il suffit de les supprimer et de ne plus envoyer les valeurs dans TRésu, lequel doit être redimensionner différemment au début. Revoir toutes les instructions avec TRésu en fait. Fais une recherche.
Et quoi que tu fasse, un conseil: continue d'utiliser partout des plages nommées et surtout pas des adresses de cellules.

En attendant je te livre quand même la bête avec un bouton de plus pour effacer ou afficher la trame et ...j'ai quand même mis ma barre d'avancement.
À +
 

Pièces jointes

  • ImgMicrons.xls
    314 KB · Affichages: 57
  • ImgMicrons.xls
    314 KB · Affichages: 72
  • ImgMicrons.xls
    314 KB · Affichages: 78
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Bonsoir Dranreb,

Je suis dsl si je t'ai vexé. On m'a déjà fait la remarque comme quoi je m'exprime parfois mal et que je peux dire des choses maladroites voir blessantes alors que je ne le pense pas.

Je te rassure je ne cherche pas à me débarrasser des calculs qui ont déjà été posés. C'est juste qu'ils représentent une très très grosse partie du code et je suis clairement noyé dans l'information la. La base c'est récupérer les composantes RGB d'un pixel. Ensuite ce sont des calculs qui sont rajoutés.

Or moi si je veux comprendre et me dépatouiller, je dois commencer uniquement avec l'extraction RGB pour un pixel donné. Ensuite seulement je m'attaquerais aux valeurs calculées :). Rien ne seras supprimé car je veux offrir un fichier riche en informations. Mais pas je ne peux pas gérer tout d'un coup. C'est trop pour moi.

Autre chose, tes calculs d'Angles sont extrêmement précis je te rassure. De mémoire l'erreur est de moins de 5 % !!! C'est juste que la valeur n'était pas exactement la même que celle donnée par mon logiciel alors que la formulation du document pdf permettait de trouver les valeurs à la virgule prêt. En tout honnêté je ne sais dire qui est le plus juste. Tout ce que je sais, c'est que je veux me rapprocher le plus possible de ce que fait le logiciel de traitement d'images. Il représente ma référence en gros.

Je ne sais pas si je dispose du matériel qui permets de réaliser les mesures dont tu parle (je ne pense pas malheureusement). Tu devrais m'en dire plus pour savoir si oui ou non je peux faire un truc. Et comme tu le dis, Je te dois bien ça en effet. Je te dois même plus qu'une simple mesure pour compenser le travail que tu as déjà fait !!! Je veux bien voir ce que je peux faire si tu veux. Mais vu que je n'y m'y connais pas bcp en optique je ne suis pas sur de bien pouvoir te renseigner sur les valeurs qu'il te manque. Écoute essaye toujours, je suis partant pour aider si je peux.


donc pour supprimer une colonne ou en ajouter une c'est du côté de TRésu. Je vais voir ce que le net me donnera. Ça semble complexe à première vue...


Et quoi que tu fasse, un conseil: continue d'utiliser partout des plages nommées et surtout pas des adresses de cellules.

Aie ! Justement j'utilise toujours des plages de cellules personnellement. Et jamais de plages nommées. Bon ben je vais me mettre aux plages nommées alors. Ça me fera découvrir comment on les gères. Ça n'a pas l'air dur.
Je peux savoir pourquoi il est préférable d'utiliser des plages nommées ? C'est une question de gain de temps dans les calculs ou plutôt pour déplacer les données plus facilement si on doit modifier leur position sur la feuille ?


Merci Dranreb,

André
 

Dranreb

XLDnaute Barbatruc
Re : Réaliser une matrice avec Excel

Pourquoi il est préférable d'utiliser des plages nommées
Ça permet des macros qui marchent toujours même si on déplace les plages, et ça permet des formules plus claires.
Hé, TRésu ça ne se cherche pas sur le net: c'est le nom de mon tableau de variant dans lequel je prépare tous les résultats avant de les envoyer d'un seul coup dans le bon groupe de colonnes tout à la fin (ce qui permet cette performance qui t'étonne toujours !)
J'ai de nouveau envoyé un fichier au post précédent, avant d'avoir pu lire ton dernier.
P.S. Ah oui j'ai compris... Je parlais d'une recherche avec le bouton représentant la paire de jumelles dans VBA !

Ce qui m'intéresserait par exemple serait de mesurer une source lumineuse variable avec un instrument de mesure précis. Peut importe la distance de la source à l'appareil de mesure, puisque la mesure reçue sera toujours proportionnelle à la quantité émise. Prendre une photo en même temps que la mesure, et me donner le RGB du pixel le plus lumineux. Une dizaine de points me suffiraient. J'aimerais si possible avoir dans le tas la mesure qui donne 255 pour la plus grande composante car je normaliserai le coefficient de toutes les mesures pour que celle ci vaille 1000. L'expérience devrait évidemment être menée dans l'obscurité ambiante, au moins vu des 2 capteurs, avec les mêmes conditions d'exposition distances, seule la source devrait varier. Je pense que ce serait instructif.
A +
 
Dernière édition:

SERIEUXETCOOL

XLDnaute Occasionnel
Re : Réaliser une matrice avec Excel

Salut Dranreb, le Forum,

Dranreb j'essaie de placer le contrôle image par code vba mais j'ai du mal à gérer les propriétés. Peux tu me donner un coup de main ?


Voici le code que j'utilise :

Code:
ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
DisplayAsIcon:=False, Left:=[N16].Left, Top:=[N16].Top, Width:=210, Height:=100).Select


Cela me permet de rajouter un contrôle image sur ma feuille. Et je peux piloter l'angle supérieur gauche avec la propriété Left et Top. Par contre je n'arrive pas à piloter le coin inférieur droit. Comment cela se fait-il ? Je ne veux pas mettre une valeur, mais le coin d'une cellule bien définie.

De plus, j'aimerais mettre la propriété BorderStyle à 0 et la encore je ne pilote rien du tout.
Celle de PictureSizeMode à 3
De même que la propriété SpécialEffect sur la position 0.


Pourtant la syntaxe est simple, l'aide indique qu'il faut un objet et une option si besoin est. Je met image1.BorderStyle = 0 et ça plante.

:confused:


Ou est mon erreur ?

André

Ps : Je rame pour remanier le code. Finalement je vais me contenter de faire la mise en forme qui me conviens le mieux. J'espère que tu voudras bien m'aider ensuite pour déplacer toutes les données au bon endroit :rolleyes:
Avec les plages nommées dont tu parlais à priori ce ne devrait pas être trop contraignant. Je continue la mise en forme en attendant...
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16