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

Caml Discussion :

TP traitement image


Sujet :

Caml

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 19
    Points : 15
    Points
    15
    Par défaut TP traitement image
    Bonjour,

    Je suis en 1ère année de licence et je n'arrive pas à trouver de solution pour un TP. Le TP concerne le traitement d'une image. Dans un premier temps, il fallait définir une fonction « noir_et_blanc » et l'appliquer à l'image à l'aide d'une fonction « traiter ».

    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #let noir_et_blanc r v b =if(niveau_gris r v b<128) 
    then 0 else 255 ;;
     
    #traiter noir_et_blanc noir_et_blanc noir_et_blanc;;

    Avec cette fonction, le seuil est fixé a 128.

    La question suivante demande de mettre le seuil en paramètre.
    J'ai donc écrit la fonction :

    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #let noir_et_blanc x r v b =if(niveau_gris r v b<x) 
    then 0 else 255 ;;

    Cependant, ça ne marche pas avec la fonction « traiter » qui prend en paramètre trois fonctions de type int->int->int->int alors que ma fonction est de type int->int->int->int->int.

    Le prof m'a dit d'utiliser une fonction Local mais je ne trouve pas comment faire…
    et toutes les autres question me posent le même problème.

    Merci d'avance,
    Marc.

  2. #2
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonsoir,

    Je précise d'emblée que ce message n'est pas une agression.


    Moi c'est la présentation de ton message qui me pose problème. Je suis disposé à t'aider (aider n'est pas résoudre), comme je le fais régulièrement sur ce forum, mais à la condition expresse que tu te donnes la peine d'utiliser les balises de code pour tes extraits OCaml... et que tu soignes un petit peu ton orthographe. Ce n'est pas juste du pinaillage : sans ça, la fonction de recherche du forum sera vite mise en échec.

    Cordialement,
    Cacophrène

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2010
    Messages : 22
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    il y a plusieurs niveaux de réponse à ta question, et je ne suis pas sûr d'avoir compris toutes tes contraintes.

    Essaye de ne pas perdre de vue que caml est un language fonctionel, tu peux donc écrire de nouvelles fonctions du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    let nb_128 r v b = noir_et_blanc 128 r v b 
    let nb_200 r v b = noir_et_blanc 200 r v b
    et les passer en toutes quiétude à ta fonction traiter, elles prennent bien trois paramètres.
    Mainenant imaginons que tu ne veulles pas entrer les fonction en dur, tu peux faire une fonction qui prend en paramètre un seuil et te renvoie une fonction à trois paramètres utilisant ce seuil. Du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    let nb_seuil seuil =  (fun r v b -> noir_et_blanc seuil r v b)
    Ouaip, une fonction qui renvoie une fonction. Du coup tu peux tranquillou faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    let _ = traiter (nb_seuil 33) (nb_seuil 127) (nb_seuil 203)
    Sinon tu peux utiliser le mécanisme de Curryfication pour éviter la fonction intermédiaire, et simplement écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    let _ = traiter (noir_et_blanc 33) (noir_et_blanc 127) (noir_et_blanc 203)

Discussions similaires

  1. [ETUDES] Traitement images ou intelligence artificielle ?
    Par green_castor dans le forum Etudes
    Réponses: 9
    Dernier message: 29/11/2005, 13h01
  2. traitement image
    Par Feanorin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 20/06/2005, 17h01
  3. Réponses: 5
    Dernier message: 25/12/2004, 23h17
  4. Matrice de filtrage ?
    Par gimlithedwarf dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 24/08/2002, 09h44

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