Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java OpenCV लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट कैसे बदलें?


इमेज की ब्राइटनेस और कंट्रास्ट को बढ़ाना/घटाना ऐसे ऑपरेशन हैं जिन्हें इमेज के पिक्सल्स को ट्रांसफॉर्म करके प्राप्त किया जा सकता है। इसे निम्न समीकरण के रूप में व्यक्त किया जा सकता है −

g(i, j) = α . f(i, j)+ β

जहां,

  • (i, j) पिक्सल्स की स्थितियां हैं।

  • α (गेन) और β (बायस) ट्रांसफॉर्मेशन के पैरामीटर्स हैं।

  • कभी-कभी गेन पैरामीटर इमेज के कंट्रास्ट को नियंत्रित करता है और बायस पैरामीटर इमेज की ब्राइटनेस को नियंत्रित करता है।

org.opencv.core.Mat क्लास की convertTo() मेथड दी गई मैट्रिक्स पर आवश्यक गणना करती है ताकि इमेज के कंट्रास्ट और ब्राइटनेस को बदला जा सके। यह मेथड 4 पैरामीटर्स स्वीकार करती है −

  • mat − परिणाम रखने के लिए खाली मैट्रिक्स जिसका आकार और प्रकार स्रोत मैट्रिक्स के समान हो।

  • rtype − आउटपुट मैट्रिक्स के प्रकार को निर्दिष्ट करने वाला पूर्णांक मान। यदि यह मान नकारात्मक है, तो प्रकार स्रोत के समान होगा।

  • alpha − गेन मान, जो 0 से अधिक होना चाहिए (डिफ़ॉल्ट मान 1)।

  • beta − बायस मान (डिफ़ॉल्ट मान 0)।

OpenCV Java लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट बदलना

जैसा कि उल्लेख किया गया है, इस मेथड को पास किया गया अल्फा मान इमेज के कंट्रास्ट को बदलता है। यदि इस पैरामीटर के लिए चुना गया मान 1 से कम है (0 तक), तो इमेज का कंट्रास्ट कम हो जाता है। इसी तरह, यदि यह 1 से अधिक है (100 तक), तो इमेज का कंट्रास्ट बढ़ जाता है।

इमेज का कंट्रास्ट बदलने के लिए −

  • loadLibrary() मेथड का उपयोग करके OpenCV नेटिव लाइब्रेरी लोड करें।

  • imread() मेथड का उपयोग करके वांछित इमेज की सामग्री को Mat ऑब्जेक्ट में पढ़ें।

  • पिछले चरण में प्राप्त मैट्रिक्स के समान आकार और प्रकार का एक खाली मैट्रिक्स बनाएं।

  • convertTo() मेथड को खाली मैट्रिक्स, -1 (समान प्रकार प्राप्त करने के लिए), कंट्रास्ट बढ़ाने या घटाने के लिए अल्फा मान (0-1 या 1-100) और बीटा मान 0 पास करके कॉल करें।

  • Imgcodecs.imwrite() मेथड का उपयोग करके परिणामी मैट्रिक्स की सामग्री को आउटपुट इमेज के रूप में लिखें।

उदाहरण

import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; public class AlteringContrast {    public static void main (String[] args) {       // OpenCV कोर लाइब्रेरी लोड कर रहा है       System.loadLibrary( Core.NATIVE_LIBRARY_NAME );       // फाइल से इमेज पढ़ रहा है       String file ="D:\\Images\\car3.jpg";       Mat src = Imgcodecs.imread(file, Imgcodecs.IMREAD_COLOR);       // एक खाली मैट्रिक्स बना रहा है       Mat dest = new Mat(src.rows(), src.cols(), src.type());       // इमेज का कंट्रास्ट बढ़ा रहा है       src.convertTo(dest, -1, 10, 0);       // इमेज लिख रहा है       Imgcodecs.imwrite("D:\\Images\\altering_contrast_10.jpg", dest);    } }

इनपुट इमेज

Java OpenCV लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट कैसे बदलें?

विभिन्न अल्फा मानों के लिए निम्न आउटपुट इमेज हैं −

α-मान: 0.5

Java OpenCV लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट कैसे बदलें? 

α-मान: 0.8 

Java OpenCV लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट कैसे बदलें?

 α-मान: 1.5 

Java OpenCV लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट कैसे बदलें? 

α-मान: 2.0 

Java OpenCV लाइब्रेरी का उपयोग करके इमेज का कंट्रास्ट कैसे बदलें?


  1. Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को सेपिया इमेज में कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके रंगीन इमेज को सेपिया इमेज में कैसे बदलें?

    रंगीन इमेज को सेपिया में बदलने का एल्गोरिदम −प्रत्येक पिक्सेल के लाल, हरे, नीले मान प्राप्त करेंइन 3 रंगों का औसत प्राप्त करें।गहराई और तीव्रता मान परिभाषित करें (आदर्श रूप से 20 और 30)।मानों को निम्नानुसार संशोधित करें −लाल = लाल + (गहराई*2)।हरा = हरा + गहराई।नीला = नीला - तीव्रता।सुनिश्चित करें कि

  1. Java OpenCV लाइब्रेरी का उपयोग करके नेगेटिव इमेज को पॉजिटिव इमेज में कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके नेगेटिव इमेज को पॉजिटिव इमेज में कैसे बदलें?

    नेगेटिव इमेज को पॉजिटिव में बदलने के लिए −ImageIO.read() मेथड का उपयोग करके आवश्यक इमेज पढ़ें।इमेज की ऊंचाई और चौड़ाई प्राप्त करें।नेस्टेड फॉर लूप का उपयोग करके इमेज में प्रत्येक पिक्सेल को पार करें।getRGB() मेथड का उपयोग करके पिक्सेल मान प्राप्त करें।एक पिक्सेल से प्रत्येक मान को पुनर्प्राप्त करने

  1. Java OpenCV लाइब्रेरी का उपयोग करके इमेज कैसे लिखें? Java OpenCV लाइब्रेरी का उपयोग करके इमेज कैसे लिखें?

    OpenCV लाइब्रेरी का उपयोग करके आप इमेज प्रोसेसिंग ऑपरेशन कर सकते हैं जैसे इमेज फ़िल्टरिंग, ज्यामितीय इमेज ट्रांसफॉर्मेशन, कलर स्पेस रूपांतरण, हिस्टोग्राम, आदि।इमेज लिखनाजब भी आप Imgcodecs क्लास की imread() मेथड का उपयोग करके इमेज की सामग्री पढ़ते हैं, तो परिणाम मैट्रिक्स ऑब्जेक्ट में पढ़ा जाता है।आप