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




image-processing image-manipulation (8)

RoboRealm दृष्टि सॉफ्टवेयर list में अन्य गैर-जावा आधारित पुस्तकालयों के बीच JHLabs और NeatVision का उल्लेख है।

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

ImageMagick में कुछ स्केलेबिलिटी समस्याएं हैं और जेएनआई आधारित जेमैजिक भी आकर्षक नहीं है। ImageMagick की तुलना में आकार बदलने के दौरान जेएआई के खराब गुणवत्ता के परिणाम हैं।

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


आईएमओ सबसे अच्छा तरीका जावा के लिए im4java -लाइन इंटरफेस के रूप में im4java साथ ग्राफिक्समैजिक छवि प्रसंस्करण प्रणाली का उपयोग कर रहा है।

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

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

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

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

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

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

और कुछ गुणवत्ता वाले tweaks का उपयोग कर छवि थंबनेल उत्पन्न करने के लिए एक और सामान्य उपयोग और इस तरह की तरह लग सकता है:

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 मोड के साथ गति और गुणवत्ता के बीच व्यापार करने के लिए कर सकते हैं जो एक स्केल किए गए परिणाम प्रदान करते हैं जो कि जीआईएमपी के लैंकोज़ 3 कार्यान्वयन से बेहतर दिखता है।


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


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

http://www.snowbound.com/

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

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


im4java - यदि आप एक नई प्रक्रिया को फोर्क करने के लिए लिनक्स चला रहे हैं तो महंगा नहीं है।


ImageJ , जो होने का दावा करता है

दुनिया का सबसे तेज़ शुद्ध जावा छवि प्रसंस्करण कार्यक्रम

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


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

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

  • आर्किटेक्चर जैसे 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





image-manipulation