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
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
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é
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 .
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é
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 .
Envoyé par mchk0123
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é
In extenso :
Dans la FAQ libs C/C++. Une coquille ?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
Avant de poster un message .
Quand vous avez la réponse à votre question, n'oubliez pas de cliquer sur .
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...Envoyé par mchk0123
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é
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 .
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é
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
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é
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é
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é
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 .
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 ?Envoyé par mchk0123
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
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é
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 .
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager