Bibliothèque Kakadu pour traitement d'image - C++ - Programmation
Marsh Posté le 05-02-2013 à 10:31:32
Je ne connais pas Kakadu. Vu que ca a l'air d'etre une lib porté uniquement sur la lecture JPEG 2000, je te conseille de la fuire (le côté propriétaire est pas folichon non plus).
Je te conseille OpenCV, on peut en penser beaucoup de mal, mais c'est un peu le standard de facto.
Quand tu l'auras, tu vas regarder du coté de highgui::imread pour lire tes images jpeg2000
et pour parcourir tes pixels, tu peux faire un truc dans ce genre la :
Code :
|
Et le fait de faire de la physique n'est pas un handicap pour faire du traitement d'images.
Marsh Posté le 05-02-2013 à 10:40:57
Merci pour ta réponse snafu8
Oui je connais un peu OpenCV mais le problème c'est justement que je DOIS travailler avec la bibliothèque Kakadu. Ce choix m'est imposé. La raison est que je dois manipuler des images au format JPEG2000 de très gros volume (plusieurs gigas) et ceci de la façon la plus rapide qu'il soit.
PS: je sais bien que faire de la physique n'est pas un handicap pour le traitement d'image; je voulais juste préciser que je n'étais pas du tout un spécialiste c++ et que ma formation dans ce langage est de nature purement autodidacte... :-)
Marsh Posté le 05-02-2013 à 11:08:12
snafu8,
Citation : je te conseille de la fuire (le côté propriétaire est pas folichon non plus). |
On est pas dans un cadre universitaire, mais dans un cadre industriel, ou le côté propriétaire est tout à fait normal (sauf à certains fanatiques du logiciel libre).
Il a dit:
Citation : Le choix s'est donc porté sur la bibliothèque propriétaire Kakadu (que j'ai actuellement entre les mains) pour effectuer ce traitement d'image. |
Les librairies de traitement d'image commerciales, si elles existent face aux librairies libres, c'est pas un hasard, et elles sont souvent tout à fait efficaces et adaptées au besoin des boites qui les ont acheté. J'ai utilisé les produits d'Accusoft pendant des années avec une entière satisfaction, et les ai souvent vu utilisés dans d'autres produits. Si sa boite a choisi Kakadu (ouah! ) que je ne connais pas, il doit y avoir des raisons (peut être financières aussi, la lib que j'ai cité n'est pas donnée, et a moins d'un certain volume de ventes, elle n'est pas rentabilisable) , et il ne peut probablement pas, à son niveau, remettre ce choix en cause. Donc autant répondre à sa question que totalement à côté.
Je ne peux pas répondre sur Kakadu, parce que la boite qui le fait ne met pas la doc en ligne (ce qui est à mes yeux un mauvais signe, les librairies libres et les boites qui vendent des librairies ont l'habitude de le faire afin justement que les développeurs puissent se rendre compte des possibilités présentées par l'API et voir si cela leur convient comme par exemple pour celle dont j'ai parlé: ici)
Normalement tu dois avoir des fonctions générales pour lire et écrire des images avec ta librairie documentées dans la doc qui accompagne ta librairie. En général ces librairies chargent les images dans une structure (propriétaire) en mémoire, sur laquelle tu fais les manipulations qui te sont utiles avec les fonctions de l'API de ta librairie.
Bref la doc de ta librairie doit avoir des sections (et des exemples) explicitant:
- comment charger une image (fichier -> mémoire)
- comment sauver une image (mémoire -> fichier) et comment modifier les paramètres ou formats de sauvegarde
- comment modifier une image chargée
- comment afficher une image chargée
- comment imprimer une image chargée
A+,
Marsh Posté le 05-02-2013 à 11:23:51
merci gilou pour ta réponse
J'ai la doc sous les yeux. Le problème est que cette doc se résume à une liste de classes présentes dans la lib avec une brève description pour chacune d'elles, sans jamais donner d'exemple simple d'opérations de base comme celles que tu viens de citer et que je cherche justement à faire...
Je vais continuer à regarder les différentes classes présentes et essayer de d'en tirer quelque chose...j'espère...
Marsh Posté le 05-02-2013 à 11:29:41
J'ai pas trop compris le choix de ta boite (codec qui donne la moins bonne qualité d'images en moyenne, après compression, d'après ce test: http://compression.ru/video/codec_ [...] son_en.pdf ) Mais bon, en termes de vitesse sur du multi-core, c'est peut être la meilleure (au détriment de la qualité)
Il n'y a pas d'exemples simples de code chargeant et sauvant une image avec la doc de la librairie? ça semble assez surprenant pour un produit commercial.
D'après le site de kakadu software, avec la lib, tu dois avoir un viewer windows, kdu_show, et son code source, cf le document http://www.kakadusoftware.com/documents/kdu_show.pdf . Cela devrait te donner des billes.
A+,
Marsh Posté le 06-02-2013 à 09:55:02
Le choix s'est porté sur cette librairie car, comme je l'ai dit un peu plus tôt, les images à traiter sont au format JPEG2000 (plusieurs gigas chacunes). De plus, cette librairie est très performante niveau vitesse de traitement.
Si quelqu'un peut m'apporter des précisions supplémentaires sur cette lib, qu'il parle...ou bien qu'il se taise à jamais... :-D
Merci pour vos réponses tout de même :-)
Marsh Posté le 05-02-2013 à 09:43:16
Bonjour à toutes et à tous!
J'ai récemment été engagé dans une SSII et j'ai une mission qui consiste à réaliser un traitement d'image assez basique...
Le hic c'est qu'à la base j'ai un bac+5 en physique et je ne suis pas du tout un spécialiste de ce genre de choses...
Je vous explique donc le "problème". Je dois réaliser un traitement d'image sur une image d'entrée au format JPEG2000. Le choix s'est donc porté sur la bibliothèque propriétaire Kakadu (que j'ai actuellement entre les mains) pour effectuer ce traitement d'image. Le traitement en lui-même est assez simple puisqu'il s'agit de faire un test sur la valeur de chaque pixel (par l’intermédiaire d'une boucle je suppose...) et de remplacer celui-ci par une autre valeur.
Donc j'aimerais savoir si une ou plusieurs personnes sur ce forum de spécialiste:
-connait un peu la norme JPEG2000( j'ai deja regardé sur Wikipedia ou autres sites pour appréhender les bases bien sur) et notamment sait s'il y a des headers spécifiques ou autres choses...
-sait comment ouvrir une image en écriture avec Kakadu et avoir accès à la valeur des pixels.
J'ai un niveau acceptable en C++ (sans être exceptionnel bien sur, loin de la, je ne suis pas informaticien à la base!)
Je vous remercie de votre aide