Quelle est la meilleure bibliothèque/approche de traitement d'image java? [fermé]
j'utilise à la fois le JAI media apis et ImageMagick?
ImageMagick a quelques 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.
est-ce que quelqu'un connaît d'excellents outils open source ou commerciaux qui sont java natif et de fournir des résultats de haute qualité?
11 réponses
il y a ImageJ , qui se vante d'être le
L'image Java pure la plus rapide au monde programme de traitement
Il peut être utilisé comme une bibliothèque dans une autre application. Son architecture n'est pas brillante, mais elle fait des tâches élémentaires de traitement d'image.
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 pure Java de redimensionnement d'image (et simple de la fpo, comme le rembourrage, le recadrage, rotation, éclaircir/gradation, etc.) bibliothèque qui est douloureusement simple à utiliser - une seule classe se compose d'un ensemble d'opérations graphiques simples tous définis comme statique méthodes que vous passer d'une image et obtenir un résultat.
l'exemple le plus élémentaire 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 retouches de qualité et autres 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 brut Java2D (qui est accéléré sur les plates-formes principales) et n'introduiront pas la douleur d'appeler via JNI comme argument de la bibliothèque dans votre code.
imgscalr a également été déployé dans des productions à grande échelle dans un certain nombre d'endroits-l'inclusion de la classe AsyncScalr en fait un drop - in parfait pour n'importe quel traitement d'image côté serveur.
il y a de nombreux ajustements à la qualité d'image que vous pouvez utiliser pour faire un compromis entre la vitesse et la qualité avec le mode ULTRA_QUALITY le plus élevé fournissant un résultat à l'échelle qui semble mieux que L'implémentation Lancoz3 de GIMP.
Je ne suis pas un gars de Java, mais OpenCV est grand 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
Essayez d'utiliser Catalano Cadre .
Keypoints:
- Architecture like AForge.NET/Accord.NET.
- fonctionne dans les deux environnements avec le même code, bureau et Android.
- Contient plusieurs filtres en parallèle.
- développement est à pleine vapeur.
le cadre Catalano est un cadre pour la recherche informatique pour Java et Android. Le projet a commencé comme un port initial des nombreuses caractéristiques de la AForge.NET et Accord.NET les cadres de .NET, mais se développe progressivement avec des fonctionnalités plus avancées qui sont désormais 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
imo la meilleure approche est d'utiliser GraphicsMagick Image Processing System avec im4java comme une interface comand-line pour Java.
Il ya beaucoup d'avantages de GraphicsMagick, mais un pour tous:
- GM est utilisé pour traiter des milliards de dossiers à la plus grande photo du monde sites (par exemple Flickr et Etsy).
http://im4java.sourceforge.net / - si vous utilisez linux forking un nouveau processus n'est pas cher.
pour les outils commerciaux, vous pouvez essayer Snowbound.
mon expérience avec eux est quelque peu dépassée, mais j'ai trouvé leur API D'imagerie Java beaucoup plus facile à utiliser que JAI et beaucoup plus rapide.
leur soutien à la clientèle et des échantillons de code étaient très bons aussi.
RoboRealm logiciel de vision liste , mentionne le JHLabs et NeatVision parmi beaucoup d'autres non-Java bibliothèques.
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, supportant des tableaux et des matrices "intelligents" généralisés avec des éléments de différents types (de 1 bit à 64-bit floating point), 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, sur le d'autre part, il contient beaucoup de documentation Javadoc. Il a reposé dans la base de logiciel commercial (SIMAGIS) pendant plusieurs années, mais maintenant il est open-source.