Quelle est la meilleure bibliothèque/approche de traitement d'images java? [fermé]


J'utilise à la fois les api JAI media et ImageMagick?

ImageMagick a des problèmes d'évolutivité et le JMagick basé sur JNI n'est pas attrayant non plus. JAI a des résultats de mauvaise qualité lors des opérations de redimensionnement par rapport à ImageMagick.

Quelqu'un connaît-il d'excellents outils open source ou commerciaux qui sont natifs java et fournissent des résultats de haute qualité?

Author: Daniel Honig, 2009-03-02

11 answers

Il y a ImageJ , qui se vante d'être le

Image Java pure la plus rapide au monde programme de traitement

Il peut être utilisé comme bibliothèque dans une autre application. Son architecture n'est pas brillante, mais elle effectue des tâches de traitement d'image de base.

 83
Author: Ivan, 2009-03-05 23:58:09

Je sais que cette question est assez ancienne, mais à mesure que de nouveaux logiciels sortent, cela aide à obtenir de nouveaux liens vers des projets qui pourraient être intéressants pour les gens.

Imgscalr est un redimensionnement d'image Java pur (et des opérations simples comme le remplissage, le recadrage, la rotation, l'éclaircissement/la gradation, etc.) bibliothèque douloureusement simple à utiliser - une seule classe consiste en un ensemble d'opérations graphiques simples, toutes définies comme des méthodes static que vous transmettez une image et récupérez un résultat.

Le plus un exemple de base d'utilisation de la bibliothèque ressemblerait à ceci:

BufferedImage thumbnail = Scalr.resize(image, 150);

Et une utilisation plus typique pour générer des vignettes d'image en utilisant quelques réglages de qualité et similaires pourrait ressembler à ceci:

import static org.imgscalr.Scalr.*;

public static BufferedImage createThumbnail(BufferedImage img) {
    // Create quickly, then smooth and brighten it.
    img = resize(img, Method.SPEED, 125, OP_ANTIALIAS, OP_BRIGHTER);

    // Let's add a little border before we return result.
    return pad(img, 4);
}

Toutes les opérations de traitement d'image utilisent le pipeline raw Java2D (qui est accéléré par le matériel sur les principales plates-formes) et n'introduiront pas la douleur d'appeler via JNI comme la contention de bibliothèque dans votre code.

Imgscalr a également été déployé dans des productions à grande échelle dans un certain nombre de places - l'inclusion de la classe AsyncScalr en fait un drop-in parfait pour tout traitement d'image côté serveur.

Il existe de nombreux ajustements à la qualité d'image que vous pouvez utiliser pour négocier entre la vitesse et la qualité avec le mode ULTRA_QUALITY le plus élevé fournissant un résultat mis à l'échelle qui semble meilleur que l'implémentation Lancoz3 de GIMP.

 126
Author: Riyad Kalla, 2018-09-15 10:07:16

Une Autre bonne alternative: Marvin

 29
Author: Joseph, 2014-02-25 13:48:27

Je ne suis pas un gars Java, mais OpenCV est idéal pour mes besoins. Vous ne savez pas si il correspond à la vôtre. Voici un port Java, je pense: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html

 9
Author: kenny, 2016-01-28 11:06:51

Traitement est nouveau, mais très, très bon.

 8
Author: fmsf, 2009-03-07 01:49:56

Essayez d'utiliser Cadre Catalano .

Points clés:

  • Architecture comme AForge.NET/Accord.NET.
  • Exécuter dans les deux environnements avec le même code, bureau et Android.
  • Contient plusieurs filtres en parallèle.
  • Le développement est à pleine vapeur.

Le cadre Catalano est un cadre pour l'informatique scientifique pour Java et Android. Le projet a commencé comme un port initial des nombreuses fonctionnalités de la AForge.NET et Accord.NET frameworks pour. NET, mais est en croissance constante avec des fonctionnalités plus avancées qui sont maintenant partagées entre ces projets.

Exemple:

FastBitmap fb = new FastBitmap(bitmap);

Grayscale g = new Grayscale();
g.applyInPlace(fb);

Threshold t = new Threshold(120);
t.applyInPlace(fb);

bitmap = fb.toBitmap();

//Show the result
 5
Author: Diego Catalano, 2014-03-01 14:40:26

Imo la meilleure approche consiste à utiliserGraphicsMagick Image Processing System avecim4java comme interface comand-line pour Java.

Il y a beaucoup d'avantages de GraphicsMagick, mais un pour tous:

  • GM est utilisé pour traiter des milliards de fichiers à la plus grande photo du monde sites (par exemple Flickr et Etsy).
 4
Author: kajo, 2011-04-11 17:07:41

Http://im4java.sourceforge.net / - si vous utilisez linux forking un nouveau processus n'est pas cher.

 3
Author: Amanjit Gill, 2011-04-15 11:23:55

Pour les outils commerciaux, vous voudrez peut-être essayer Snowbound.

Http://www.snowbound.com/

Mon expérience avec eux est un peu datée, mais j'ai trouvé leur API d'imagerie Java beaucoup plus facile à utiliser que JAI et beaucoup plus rapide.

Leur support client et leurs exemples de code étaient également très bons.

 2
Author: Clayton, 2009-03-02 18:04:21

RoboRealm logiciel de vision list mentionne JHLabs et NeatVision parmi beaucoup d'autres non-Java bibliothèques.

 2
Author: rics, 2009-03-13 15:54:06

Je ne peux pas dire que c'est la" meilleure " bibliothèque, mais je pense que vous pouvez essayer ceci: http://algart.net/java/AlgART / Il s'agit d'une bibliothèque Java open-source, prenant en charge les tableaux et matrices "intelligents" généralisés avec des éléments de différents types (de 1 bit à 64 bits en virgule flottante), y compris le traitement d'image 2D, 3D et multidimensionnel et d'autres algorithmes, travaillant avec des tableaux et des matrices. Malheureusement, en ce moment, il ne se compose pas assez de démo et d'exemples, mais, d'autre part, il contient un beaucoup de JavaDocs. Il était à la base des logiciels commerciaux (SIMAGIS) pendant plusieurs années, mais maintenant il est open-source.

 1
Author: Daniel, 2013-12-26 16:05:06