Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

représenter des valeurs de gris sur un damier

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Graphisme avec Maple
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
PdB



Inscrit le: 04 Nov 2008
Messages: 5

MessagePosté le: 05 Nov 2008 14:07    Sujet du message: représenter des valeurs de gris sur un damier Répondre en citant

Bonjour, j'ai deux problèmes connexes:

1. A partir d'une matrice Mij de valeurs numériques entre 0 et 256, la représenter en nuances de gris sur un damier i x j (en fait c'est pour représenter des caractères pour une application d'OCR). J'ai fait quelques essais avec densityplot(), sans succès jusqu'à présent.

2. Lire des fichiers bmp en nuances de gris (encore des caractères, en 28 x 28 par exemple) et les représenter: est-ce que preview() (avec scale() pour grossir l'affichage) est le bon choix ?

Merci d'éclairer le néophyte que je suis. C'est, comme toujours hélas, pour hier... Wink)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 06 Nov 2008 12:37    Sujet du message: Répondre en citant

Bonjour, pour la première question il faut bien utiliser densityplot. Je propose l'ex suivant sur une matrice 10x10 aléatoire triangulaire inférieure:

Code:

> with(LinearAlgebra);

> M := RandomMatrix(10, 10, generator = 0 .. 256, outputoptions = [shape = triangular[lower]]);

> with(plots);

>densityplot( (x, y) -> M[x, y] , 1 .. 10, 1 .. 10, grid = [11, 11]);



Pour la seconde question, je pense que ce sont ces bons outils du package imageTools que vous utiliserez.

A bientôt.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
PdB



Inscrit le: 04 Nov 2008
Messages: 5

MessagePosté le: 06 Nov 2008 13:06    Sujet du message: Répondre en citant

Merci, mais ce code ne donne pas le résultat escompté, car le gradient de gris varie au sein d'une même case du damier. J'ignore s'il y a une option de densityplot() pour rectifier ce comportement, ou si ce comportement lui est intrinsèque.

J'obtiens des résultats avec listdensityplot(), il faut que j'affine...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 06 Nov 2008 16:55    Sujet du message: Re: représenter des valeurs de gris sur un damier Répondre en citant

Oui effectivement, le code suivant semble fonctionner selon vos souhaits:

Code:

> with(LinearAlgebra):

> M := RandomMatrix(10, 10, generator = 0 .. 256, outputoptions = [shape = triangular[lower]]);
 
> with(plots):
> pts:=[seq([seq(M[x,y],y=1..10)],x=1..10)];
> listdensityplot(pts);
 
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
PdB



Inscrit le: 04 Nov 2008
Messages: 5

MessagePosté le: 06 Nov 2008 22:47    Sujet du message: Répondre en citant

On peut même écrire plus simplement:

> listdensityplot(M, range = 0 .. 255, axes = none);

Mais dans les deux cas, l'image est basculée sur la gauche car l'origine des graphiques (0,0) est le coin inférieur gauche. Et :

> listdensityplot(Transpose(M), range = 0 .. 255, axes = none);

affiche l'image renversée... Je n'arrive pas à m'en sortir avec CircularShift() non plus. Y a-t-il un moyen élégant d'obtenir le miroir d'une matrice pour redresser l'image ? A moins de modifier le point d'origine des graphes ? (j'aime moins).

Merci
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 07 Nov 2008 12:03    Sujet du message: Répondre en citant

Bonjour, je veux bien vous aider en écrivant une procédure miroir(M::matrix) si vous me dites clairement sur un exemple de matrice M en petite dimension la forme de la matrice miroir(M) que vous voulez obtenir.
ALS
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
PdB



Inscrit le: 04 Nov 2008
Messages: 5

MessagePosté le: 07 Nov 2008 13:45    Sujet du message: Répondre en citant

C'est très simple:

a b c d
e f g h
i j k l
m n o p

deviendrait:

m n o p
i j k l
e f g h
a b c d

On peut bien sûr recopier les élèments dans l'ordre souhaité dans une autre matrice; simplement, je me demande s'il n'y a pas d'opérateurs sous Maple qui font cela sans avoir besoin de créer une autre matrice.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
PdB



Inscrit le: 04 Nov 2008
Messages: 5

MessagePosté le: 07 Nov 2008 16:18    Sujet du message: Répondre en citant

Ouf, j'ai réussi à redresser le graphique de la matrice en modifiant votre code en:

> pts := [seq([seq(M[6-y, x], y = 1 .. 5)], x = 1 .. 5)]
> listdensityplot(pts)

Mais si vous avez mieux (par ex en transformant la matrice elle-même plutôt qu'en utilisant une séquence), je suis preneur !

Merci en tout cas de votre aide.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 08 Nov 2008 9:57    Sujet du message: Répondre en citant

Voici une procédure qui devrait faire le nécessaire:

Code:

> M:=matrix([[a,b,c,d],[e,f,g,h],[i,j,k,l],[m,n,o,p]]);

                            [a    b    c    d]
                            [                ]
                            [e    f    g    h]
                       M := [                ]
                            [i    j    k    l]
                            [                ]
                            [m    n    o    p]

> miroir:=proc(M::matrix)
> local L,k,s;
> L:=convert(M,listlist):
> s:=NULL:
> for k in L do
>    s:=k,s
> end do:
> matrix([s])
> end proc:

 
> miroir(M);

                          [m    n    o    p]
                          [                ]
                          [i    j    k    l]
                          [                ]
                          [e    f    g    h]
                          [                ]
                          [a    b    c    d]



Si ça peut vous convenir...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Graphisme avec Maple Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.