सबसे अच्छा जावा छवि प्रसंस्करण पुस्तकालय / दृष्टिकोण क्या है? [बन्द है]


245

मैं JAI मीडिया एपिस और इमेजमैजिक दोनों का उपयोग कर रहा हूं?

ImageMagick में कुछ मापनीयता के मुद्दे हैं और JNI आधारित JMagick आकर्षक नहीं है। ImageMagick की तुलना में JAI के पास खराब गुणवत्ता वाले परिणाम हैं।

क्या किसी को किसी भी उत्कृष्ट उपकरण का पता है जो या तो खुले स्रोत या वाणिज्यिक हैं जो देशी जावा हैं और उच्च गुणवत्ता वाले परिणाम देते हैं?


5
JMagick में javadocs को छोड़कर लगभग कोई प्रलेखन नहीं है। मैंने अभी दो घंटे बिताए हैं, जो कुछ ऐसा करना चाहिए जो करने में बहुत आसान हो।
एलेक्स क्रिमिनियन

वास्तव में। मैंने प्रक्रिया से बाहर जाने का विकल्प चुना और प्रक्रिया को प्रबंधित करने के साधन के रूप में अपाचे निष्पादन का उपयोग करके ImageMagick का उपयोग किया। यह ठीक काम किया। मैं सिर्फ इस उद्देश्य के लिए एक छवि सर्वर का निर्माण करने के लिए इतनी दूर चला गया हो सकता है। ImageMagick की गुणवत्ता और कार्यक्षमता के साथ कुछ खोजना मुश्किल है।
डैनियल होनिग

158
यह हास्यास्पद है कि इस तरह के सवाल ऑफ-टॉपिक के रूप में बंद हो जाते हैं। 100000 से अधिक बार देखा गया, यह स्पष्ट रूप से एक सवाल है जो लोग पूछ रहे हैं। कभी-कभी लोग ठीक से सब कुछ नहीं जानते हैं जो वे पहले से करने जा रहे हैं, और सबसे अच्छे सामान्य ढांचे पर अन्य लोगों की "राय" प्रतिक्रियाओं की सराहना करेंगे। SO पर बहुत अधिक भव्यता!
user467257

12
यदि लोग जावा प्रोग्रामिंग के एक महत्वपूर्ण पहलू के पेशेवरों और विपक्षों पर चर्चा करते हैं तो क्या गलत है? क्या ऐसा करने वाला नहीं है? IMHO, इस तरह के सवालों को ध्यान से संचालित किया जाना चाहिए और विशेष विषय पर नए सिरे से शुरू करने वाले डेवलपर्स को एक अच्छा संदर्भ प्रदान करने के लिए बनाए रखा जाना चाहिए।
राउल

20
हाँ। Google में शीर्ष परिणाम, java image processing libraryलेकिन हमेशा की तरह ... बंद हो गया। एसओ पर इन दिनों मॉडरेशन खत्म हो रहा है।
Stijn de Witt

जवाबों:


88

नहीं है ImageJ , जो होने के लिए दावा

दुनिया का सबसे तेज शुद्ध जावा इमेज प्रोसेसिंग प्रोग्राम

इसे दूसरे एप्लिकेशन में लाइब्रेरी के रूप में इस्तेमाल किया जा सकता है। यह वास्तुकला शानदार नहीं है, लेकिन यह बुनियादी छवि प्रसंस्करण कार्य करता है।


2
मैं एक छवि प्रसंस्करण अनुप्रयोगों की एक संख्या के रूप में ImageJ का उपयोग करता हूं। यह एक बहुत ही सभ्य जावा पुस्तकालय है। यह Java2D के साथ भी अच्छी तरह से एकीकृत है, इसलिए आप 2 को आसानी से मिला सकते हैं और मेल कर सकते हैं।
होहानुउली

3
उस समय मैंने ImageJ का उपयोग किया था इसका एपीआई बहुत ही अजीब था। यह एक ऐसा एप्लीकेशन है जिसके लिए आप लाइब्रेरी की तुलना में प्लगइन्स लिख सकते हैं। और जहाँ तक मुझे याद है, पुराने AWT कोड आधार में नए GUI विकसित करने की कोशिश एक दर्द था।
इवान

4
मैंने सिर्फ एक साधारण छवि को घुमाने, पैमाने और फसल की कोशिश में आधा दिन बर्बाद कर दिया। यह 2019 है और ImageJ का प्रलेखन उपयोग करने योग्य नहीं है।
एम। लियोनहार्ड

133

मुझे पता है कि यह प्रश्न काफी पुराना है, लेकिन जैसा कि नया सॉफ्टवेयर सामने आता है, यह उन परियोजनाओं के लिए कुछ नए लिंक प्राप्त करने में मदद करता है जो लोगों के लिए दिलचस्प हो सकते हैं।

imgscalr शुद्ध-जावा इमेज का आकार बदलने वाला है (और सरल ऑप्स जैसे पेडिंग, क्रॉपिंग, रोटेटिंग, ब्राइटन / डिमिंग, इत्यादि) लाइब्रेरी जो उपयोग करने के लिए दर्दनाक रूप से सरल है - एक एकल वर्ग में सरल ग्राफिक्स ऑपरेशन का एक सेट होता है जिसमें सभी स्टैटिक विधियों को परिभाषित किया गया है आप एक छवि पास करते हैं और एक परिणाम प्राप्त करते हैं।

पुस्तकालय का उपयोग करने का सबसे मूल उदाहरण इस तरह दिखेगा:

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

और कुछ विशिष्ट ट्विक्स का उपयोग करके छवि थंबनेल उत्पन्न करने के लिए एक अधिक विशिष्ट उपयोग और इस तरह दिख सकता है:

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);
}

सभी इमेज-प्रोसेसिंग ऑपरेशन कच्चे Java2D पाइपलाइन का उपयोग करते हैं (जो कि प्रमुख प्लेटफार्मों पर हार्डवेयर त्वरित है) और जेएनआई के माध्यम से कॉलिंग के दर्द को आपके कोड में लाइब्रेरी विवाद की तरह पेश नहीं करेगा।

imgscalr को भी बड़े पैमाने पर प्रस्तुतियों में कुछ ही स्थानों पर तैनात किया गया है - AsyncScalr वर्ग का समावेश किसी भी सर्वर-साइड छवि प्रसंस्करण के लिए एक आदर्श ड्रॉप-इन बनाता है।

छवि-गुणवत्ता के लिए कई मोड़ हैं जिनका उपयोग आप गति और गुणवत्ता के बीच उच्चतम ULTRA_QUALITY मोड के साथ व्यापार करने के लिए कर सकते हैं, जो कि स्केल किया गया परिणाम प्रदान करता है जो GIMP के Lancoz3 कार्यान्वयन से बेहतर दिखता है।


@ रियाद कल्ला यह दिलचस्प लगता है ... लेकिन मुझे नहीं लगता कि इसे व्यावसायिक परियोजनाओं में इस्तेमाल किया जा सकता है?
user592704

2
@ user592704 पूरी तरह से, Apgscalr को Apache 2 लाइसेंस के तहत लाइसेंस प्राप्त है; अपाचे फाउंडेशन में सब कुछ उसी लाइसेंस के तहत लाइसेंस प्राप्त है। आप इसे ले सकते हैं और खुले स्रोत या वाणिज्यिक उत्पादों में इसके साथ क्या कर सकते हैं। imgscalr वास्तव में पहले से ही उत्पादन में कई वाणिज्यिक वेब ऐप में तैनात है।
रियाद कल्ला

1
@DavidParks आप सही हैं, imgscalr का मतलब है कि आपके पास एक बार लेने का मतलब है कि BufferedImage उदाहरण (डिकोड किया गया इमेज डेटा), इससे पहले नहीं। मैं अपने डिकोडर / एनकोडर को करने की कोशिश करने के रास्ते पर भी विचार नहीं करना चाहता था क्योंकि उन पाइपलाइनों को लंबे समय से जावा -2 डी टीम द्वारा कवर के तहत हार्डवेयर त्वरित किया गया है - जो बग-मुक्त और कुशलता से काम करने की कोशिश कर रहा है एक हेक्युलियन उपक्रम होगा।
रियाद कल्ला

1
@gstackoverflow imgscalr कच्चे BufferedImage इंस्टेंसेस (डिकोड की गई छवि डेटा) पर काम करता है - इसलिए कुछ और (आमतौर पर ImageIO लाइब्रेरी) को एक इनकोडेड डेटा डेटा को एक BufferedImage में डिकोड करने की आवश्यकता होती है और एक बार imgscalr के संचालन के बाद इसे फिर से एनकोड करने के लिए इसे फिर से एनकोड करना पड़ता है। इस पर - एक और तरीका रखो "imgscalr फ़ाइल प्रारूप के बारे में परवाह नहीं है, आप पहले से ही छवि को डीकोड कर चुके हैं इससे पहले कि आप इसे imgscalr को सौंप दें"
रियाद कल्ला

1
ImgScalr केवल मूल छवि हेरफेर के लिए अच्छा है। अगर इमेज लोडिंग और प्रोसेसिंग की बात आती है। इसमें जटिलता का अभाव है।
मारेकएम

31

एक और अच्छा विकल्प: मार्विन


9
बहुत बहुत धन्यवाद। आपने मेरा दिन बचाया! : डी (पीएस: मैं ओपी नहीं हूं। मैं इस पोस्ट के दौरान गुगली करते हुए आया और मुझ पर भरोसा करता हूं, इससे मुझे बहुत मदद मिली! (अगर मैं किसी दिन आपसे मिलूंगा तो बीयर खरीदूंगा।))।
लापताफैक्टर

3
@missingfaktor अब मैं आपको एक बीयर देने वाला हूं। यूसुफ की आपकी प्रशंसा ने मेरा दिन भी बचा लिया। जोसेफ, आपका बियर एक बहुत बड़ा हो रहा है :)!
फिलिप डुपनोविक

3
वह URL स्पष्ट रूप से मौजूद नहीं है, लेकिन marvinproject.sourceforge.net नया URL प्रतीत होता है।
अमोस एम। बढ़ई

ठीक है, मैं इस तरह से एक रूप देने के लिए बाध्य हूँ। =)
मैरोव जूल 28'12

बहुत अच्छा लग रहा है, यह एक कोशिश दे देंगे।
Ridcully

9

मैं एक जावा लड़का नहीं हूं, लेकिन मेरी जरूरतों के लिए ओपनसीवी महान है। यकीन नहीं होता है कि यह आपका फिट बैठता है। यहाँ एक जावा पोर्ट है, मुझे लगता है: http://docs.opencv.org/2.4/doc/tutorials/introduction/desktop_java/java_dev_intro.html


8

प्रसंस्करण नया है लेकिन बहुत, बहुत अच्छा है।


1
मैं प्रसंस्करण के बारे में जानता हूं, लेकिन क्या लोग वास्तव में इसका उपयोग कर रहे हैं, मैं अपने एक्स-जेपीई के फैशन के प्रकार के पुस्तकालय में एक्स परिवर्तन चलाना चाहूंगा?
डैनियल होनिग

मैं इसे इस्तेमाल किया है और में लायक सट्टेबाजी वास्तव में शक्तिशाली लगता है और किया है
fmsf

2
असल में कोर लाइब्रेरी (जो कि कार्यक्षमता को एम्बेड करने के लिए इस्तेमाल की जा सकती हैं) LGPL हैं। लेकिन किसी ने नहीं पूछा कि लाइसेंस क्या है। wiki.processing.org/w/…
बेंजामिन एटकिन

5

कैटलानो फ्रेमवर्क का उपयोग करने का प्रयास करें ।

प्रमुख बिंदु:

  • AForge.NET/Accord.NET जैसे आर्किटेक्चर।
  • एक ही कोड, डेस्कटॉप और एंड्रॉइड के साथ दोनों वातावरणों में चलाएं।
  • समानांतर में कई फिल्टर शामिल हैं।
  • विकास पूरे दम पर है।

कैटेलानो फ्रेमवर्क जावा और एंड्रॉइड के लिए वैज्ञानिक कंप्यूटिंग के लिए एक रूपरेखा है। यह प्रोजेक्ट .NET के लिए AForge.NET और Accord.NET फ्रेमवर्क की कई विशेषताओं के प्रारंभिक बंदरगाह के रूप में शुरू हुआ, लेकिन लगातार अधिक उन्नत सुविधाओं के साथ बढ़ रहा है जो अब उन परियोजनाओं के बीच साझा किए जा रहे हैं।

उदाहरण:

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

6
The best framework in Java is Catalano Frameworkऐसा लगता है कि आप अपने उत्पाद का विज्ञापन कर रहे हैं। आपका फ्रेमवर्क बहुत अच्छा हो सकता है, लेकिन आपको एफएक्यू में बताए अनुसार इसके साथ अपनी संबद्धता का खुलासा करना चाहिए ।
मथियास ब्रौन

@MatthiasBraun ठीक है, मैं आपसे सहमत हूँ, मुझे इसकी जानकारी नहीं थी। मैंने उत्तर संपादित किया।
डिएगो कैटेलानो


4

imo सबसे अच्छा तरीका के साथ GraphicsMagick इमेज प्रोसेसिंग सिस्टम का उपयोग कर रहा है Java के लिए comand-line इंटरफ़ेस के रूप में im4java के

GraphicsMagick के बहुत सारे फायदे हैं, लेकिन सभी के लिए एक:

  • जीएम का उपयोग दुनिया की सबसे बड़ी फोटो साइटों (जैसे फ़्लिकर और एटसी) पर अरबों फाइलों को संसाधित करने के लिए किया जाता है।

यह सिर्फ एक कमांड लाइन रैपर है - लाइब्रेरी नहीं ....
कुलप्रेमोवित्ज

3

http://im4java.sourceforge.net/ - यदि आप एक नई प्रक्रिया के लिए लिनक्स चला रहे हैं तो यह महंगा नहीं है।


हालांकि स्मृति त्रुटियों से बाहर के लिए देखें ...
क्लेम्स मोगन

फोर्किंग महंगा है। यह बहुत सारी मेमोरी का उपयोग कर सकता है। एक लेख से व्यक्ति का उद्धरण देखें कोडरनचैट . com/t/419196/java/java/there-any-way-execute-Linux (लेख है: Developers.sun.com/solaris/articles/subprocess/subprocess) । html )
प्लायडिट डिजाइन

@Plaudit चेकआउट gm4java, यह इंटरैक्टिव मोड में जीएम प्रक्रिया का एक पूल बनाता है और एक छवि को बदलने के लिए हर बार कांटा लगाने की आवश्यकता नहीं है। kennethxu.blogspot.com/2013/04/…
केनेथ जू

2

वाणिज्यिक उपकरणों के लिए, आप स्नोबाउंड आज़माना चाह सकते हैं।

http://www.snowbound.com/

उनके साथ मेरा अनुभव कुछ हद तक है, लेकिन मैंने उनके जावा इमेजिंग एपीआई को JAI की तुलना में उपयोग करने में बहुत आसान और बहुत तेज पाया।

उनके ग्राहक समर्थन और कोड के नमूने भी बहुत अच्छे थे।



1

मैं यह नहीं कह सकता कि यह "सर्वश्रेष्ठ" पुस्तकालय है, लेकिन मुझे लगता है कि आप यह कोशिश कर सकते हैं: http://algart.net/java/AlgART/ यह एक खुला स्रोत जावा पुस्तकालय है, जो सामान्यीकृत "स्मार्ट" सरणियों और मैट्रिसेस का समर्थन करता है विभिन्न प्रकार के तत्व (1 बिट से 64-बिट फ़्लोटिंग पॉइंट तक), जिसमें 2D-, 3D- और बहुआयामी छवि प्रसंस्करण और अन्य एल्गोरिदम शामिल हैं, सरणियों और मैट्रिस के साथ काम कर रहे हैं। दुर्भाग्य से अभी इसमें पर्याप्त डेमो और उदाहरण नहीं हैं, लेकिन, दूसरी ओर, इसमें बहुत सारे JavaDocs हैं। यह कई वर्षों के दौरान वाणिज्यिक सॉफ्टवेयर (SIMAGIS) के आधार पर था, लेकिन अब यह ओपन-सोर्स है।


2
हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना बेहतर है और संदर्भ के लिए लिंक प्रदान करना है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं।
मथियास

आप सही हैं, मैंने पहली टिप्पणी संपादित की है।
डेनियल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.