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

Linux Discussion :

Traitement d'image sous LINUX


Sujet :

Linux

  1. #1
    Membre régulier Avatar de psycho_xn
    Inscrit en
    Mars 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 250
    Points : 96
    Points
    96
    Par défaut Traitement d'image sous LINUX
    Bonjour, je cherche un programme sous LINUX en C ou JAVA qui permet la segmentation d'une image, Sa lecture et écriture et si possible l'application des Filtres Prewitt et Sobel.

    Merci infiniment pour votre aide
    il n'y a pas de réussite facile, ni d'échec définitif

  2. #2
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    En java, tu peux aller jetter un oeil du côté de la bibliothèque JAI. Elle fait tout.
    http://java.sun.com/javase/technolog...top/media/jai/
    Je ne répondrai à aucune question technique en privé

  3. #3
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    En C le choix vraiment trés vaste. Pour ma part je te conseillerais ImageMagick.

    Les plus :

    - gère énorméments de formats
    - 2 niveau d'API (haut et bas niveau)
    - les principaux filtres de bases sont disponibles
    - bindings vers un quantité incroyable de langages* y compris C, C++ & JAVA
    - portable Windows & Unix

    Les filtres Prewit ou Sobel sont souvent regroupés dans la catégorie "edge detection". Au pire, s'ils manquent, il suffit d'utiliser un filtre de convolution générique dans lequel tu choisis tes coéfficients.

    Enfin, en dernier recours, en C c'est assez rapide, de coder un filtre une fois que tu accès aux pixels de l'image.

    Voilà.

    * liste des bindings :
    Ada
    C
    Ch
    COM+
    C++
    Java
    Lisp
    Neko
    .NET
    Pascal
    Perl
    PHP
    Python
    Ruby
    Tcl/Tk
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  4. #4
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    C'est fait que si ta priorité est de calculer les filtres de Sobel et de prewitt, tu prends GIMP, c'est intégré dedans. Je n'y avais pas pensé
    Je ne répondrai à aucune question technique en privé

  5. #5
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    J'ai découvert récemment que visiblement GIMP utilisait pour ses manipulations d'images la librairie C (C++?) Imlib.

    Moi qui croyais que c'était que du GTK+.

    Et chose encore plus bizarre cette librairie est hostée chez Enlightment ...
    Le monde est petit
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par mchk0123
    J'ai découvert récemment que visiblement GIMP utilisait pour ses manipulations d'images la librairie C (C++?) Imlib.

    C'est bizarre. En tout cas, certaines parties (notamment les opérateurs sont codées) directement, par exemple, dans le source, dans : plug-ins\commons, on trouve sobel.c qui contient par exemple :

    Code C : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     void
    sobel (GimpDrawable *drawable,
           gboolean      do_horizontal,
           gboolean      do_vertical,
           gboolean      keep_sign,
           GimpPreview  *preview)
     
    ...
     
         for (col = 0; col < width * bytes; col++)
            {
              hor_gradient = (do_horizontal ?
                              ((pr[col - bytes] +  2 * pr[col] + pr[col + bytes]) -
                               (nr[col - bytes] + 2 * nr[col] + nr[col + bytes]))
                              : 0);
              ver_gradient = (do_vertical ?
                              ((pr[col - bytes] + 2 * cr[col - bytes] + nr[col - bytes]) -
                               (pr[col + bytes] + 2 * cr[col + bytes] + nr[col + bytes]))
                              : 0);
              gradient = (do_vertical && do_horizontal) ?
                (ROUND (RMS (hor_gradient, ver_gradient)) / 5.66) /* always >0 */
                : (keep_sign ? (127 + (ROUND ((hor_gradient + ver_gradient) / 8.0)))
                   : (ROUND (abs (hor_gradient + ver_gradient) / 4.0)));
     
              if (alpha && (((col + 1) % bytes) == 0))
                { /* the alpha channel */
                  *d++ = (counter == 0) ? 0 : 255;
                  counter = 0;
                }
              else
                {
                  *d++ = gradient;
                  if (gradient > 10) counter ++;
                }

    On reconnait bien l'opérateur ici
    Je ne répondrai à aucune question technique en privé

  7. #7
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    In extenso :

    Imlib : Bibliothèque de traitement d'image qui supporte les formats TIFF, PNG, XPM, JPEG et EIM (entres autres). Pas de GIF, à cause des brevets.
    C'est la bibliothèque utilisée pour le célèbre logiciel de traitement d'image GIMP et pour le projet GNOME (ce n'est pas rien !).
    La bibliothèque supporte par exemple le rééchantillonage, la transparence, les écrans en 256 couleurs, et est dotée d'un système de cache pour accélérer l'ensemble
    Dans la FAQ libs C/C++. Une coquille ?
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  8. #8
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par mchk0123
    Dans la FAQ libs C/C++. Une coquille ?
    Ouais, ça me semble franchement bizarre que ce soit utiliser pour les opérateurs. Dans le dossier des sources de gimp, dans plug-ins/common, il y a la définition de touts les formats d'images, de tous les opérateurs...

    Par contre, il est possible qu'ils utilisent la bibliothèque pour autre chose (peut être l'affichage ?)
    Je ne répondrai à aucune question technique en privé

  9. #9
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Bon aprés investigation, c'est n'est pas une bibliothèque de manipulation d'images mais de chargement d'images et de rendering 2D.

    En plus purement Unix (car basée X11).
    Donc coquille dans la FAQ, je remonte l'info.

    Je ferme ici le HS. )))))))
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  10. #10
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Tu peux jetter à un oeil à ça :
    http://jeux.developpez.com/sources/s...ransformations

    Qui te permet de charger des BMP, et faire quelques opérations de base (laplacien...)
    Je ne répondrai à aucune question technique en privé

  11. #11
    Membre régulier Avatar de psycho_xn
    Inscrit en
    Mars 2007
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 250
    Points : 96
    Points
    96
    Par défaut
    merci beaucoup pour le lien. et si vous en avez d'autre ils seront tjs les bienvenu. et si j'insiste trop c parceke je ss désespéré
    il n'y a pas de réussite facile, ni d'échec définitif

  12. #12
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Tu pourrais éviter le sms.



    Avec les informations que je t'ai donné, tu pourrais trouver par toi même sur google. Les mots clefs : JAI sobel java me donnes par exemple le lien : https://jaistuff.dev.java.net/code/operators.Edge.html

    Au passage, si c'est la théorie que tu ne comprends pas, tu peux regarder ici : http://humbert-florent.developpez.co.../introduction/
    Je ne répondrai à aucune question technique en privé

  13. #13
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ai un peu modifié le code pour le faire marcher juste en ayant à installer JAI :

    Code Java : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
     
    import javax.media.jai.JAI;
    import javax.media.jai.KernelJAI;
    import javax.media.jai.PlanarImage;
    import com.sun.media.jai.widget.DisplayJAI; 
     
     
    public class Main { 
     
     
      public static void main(String[] args) {
     
        float[] kernelMatrix = { -1, -2, -1,
                                  0,  0,  0,
                                  1,  2,  1 };
     
        PlanarImage input = JAI.create("image chargée", "avatar.jpg");
     
        KernelJAI kernel = new KernelJAI(3,3,kernelMatrix);
     
        /*application de la convolution*/
        PlanarImage output = JAI.create("convolution", input, kernel);
     
        /* Utile pour directement afficher*/
        JFrame frame = new JFrame();
        Container contentPane = frame.getContentPane();  
        frame.setTitle("avatar : détection de bords");
        contentPane.setLayout(new BorderLayout());  
        DisplayJAI dj = new DisplayJAI(output); 
        contentPane.add(new JScrollPane(dj),BorderLayout.CENTER);  
     
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true); 
      }
     
    }

    Le fichier ouvert s'appelera avatar.jpg

    Il est même possible d'utiliser les masques prédéfinis dans la classe KernelJAI. Par exemple :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ....
     
        PlanarImage input = JAI.create("image chargée", "avatar.jpg");
     
        /*application de la convolution*/
        PlanarImage output = JAI.create("convolution", input, KernelJAI.GRADIENT_MASK_SOBEL_HORIZONTAL);
     ....
    Je ne répondrai à aucune question technique en privé

  14. #14
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Pour information, j'ai débuté un "petit" projet en C++. Ca sera une bibliothèque de traitement numérique d'images. Je metterai tout ce qui est nécessaire pour les entrées sorties (j'ai déjà codé pour les BMP en utilisant SDL). Faire des opérations géométriques, optiques (avec les noyaux de convolution), application de filtre dans le domaine de Fourier, peut être des opérateurs morphologiques, et peut être ajouter des techniques de restaurations itératives...

    En tout cas, j'ai essayé de concevoir pour que ce soit le plus simple possible, je me suis un peu inspiré de JAI.

    Mais il faudra un peu attendre
    Je ne répondrai à aucune question technique en privé

  15. #15
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    millie, il faudra que l'on discute hors topic, car je fait la même chose de mon côté (surement des articles ou code à échanger) :

    Librairie C++ de traitement d'image. Je ne suis pas aussi avancé que toi pour les opérateurs (les + basiques : une petite 30-aine), mais pour les formats je supporte déjà BMP JPG PNG GIF RAW, en 32/24/8 bits, palettes indexing, grayscales & binaries.
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

  16. #16
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Citation Envoyé par mchk0123
    millie, il faudra que l'on discute hors topic, car je fait la même chose de mon côté (surement des articles ou code à échanger) :

    Librairie C++ de traitement d'image. Je ne suis pas aussi avancé que toi pour les opérateurs (les + basiques : une petite 30-aine), mais pour les formats je supporte déjà BMP JPG PNG GIF RAW, en 32/24/8 bits, palettes indexing, grayscales & binaries.
    Heu bonjour je ne voudrais pas vous embeter, mais c'est aussi valable pour Psycho, vous avez pensé a OpenCV qui est libre de surcroit ?
    OpenCV Intel
    Sources
    Bonne Journée
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  17. #17
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    J'ai vu dans les codes d'exemples que c'était en C et pas en C++ par contre
    Je ne répondrai à aucune question technique en privé

  18. #18
    Membre éclairé Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Points : 844
    Points
    844
    Par défaut
    Je n'ai pas regardé dans le détail, mais l'idée d'un bibliothèque free sur la CV ça me plait bien.

    Hop dans le bookmark ...

    Pour en revenir au sujet de pysco_xn, cette bibliothèque risque d'être malheureusement le marteau piqueur pour écraser une mouche.
    Avant de poster un message .
    Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .

Discussions similaires

  1. traitement d'image sous linux
    Par LOKY37 dans le forum Matériel
    Réponses: 0
    Dernier message: 30/10/2012, 19h46
  2. traitement d'image sous builder
    Par renovator dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/07/2006, 14h47
  3. client serveur d'image sous linux
    Par stacker_junior dans le forum Linux
    Réponses: 1
    Dernier message: 08/02/2006, 03h22
  4. Réponses: 1
    Dernier message: 24/07/2005, 00h05
  5. Affichage d'une image sous linux
    Par Braim dans le forum x86 32-bits / 64-bits
    Réponses: 5
    Dernier message: 25/03/2003, 10h41

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