मॉर्फोलॉजिकल ऑपरेशंस उन ऑपरेशन्स का सेट है जो दिए गए शेप के अनुसार इमेज को प्रोसेस करते हैं। अपरदन और फैलाव दो बुनियादी रूपात्मक संचालन हैं।
-
फैलाव के दौरान, छवि सीमाओं में अतिरिक्त पिक्सेल जोड़े जाते हैं।
-
अपरदन के दौरान, छवि की सीमाओं से अतिरिक्त पिक्सेल हटा दिए जाते हैं।
जोड़े/हटाए गए पिक्सेल की कुल संख्या उपयोग किए गए संरचना तत्व के आयामों पर निर्भर करती है। आप क्रमशः इरोड () और डिलेट () विधियों का उपयोग करके क्षरण और फैलाव संचालन कर सकते हैं।
फैलाव के अलावा, ओपनसीवी ओपनिंग, क्लोजिंग, मॉर्फोलॉजिकल ग्रैडिएंट, टॉप हैट, ब्लैक हैट जैसे अधिक रूपात्मक परिवर्तन प्रदान करता है।
रूपात्मक समापन
यह एक ऑपरेशन है जो एक छवि पर फैलाव लागू करने और फिर परिणामी छवि को मिटाने के बराबर है। इसके इस्तेमाल से आप एनिमेशन में छोटे-छोटे छेदों को हटा/भर सकते हैं। संक्षेप में, छवि से शोर को दूर करने के लिए मॉर्फोलॉजिकल क्लोजिंग का उपयोग किया जाता है।
आप इसे morphologyEx() . का उपयोग करके किसी छवि पर लागू कर सकते हैं तरीका। यह विधि स्वीकार करती है -
-
स्रोत और गंतव्य छवियों का प्रतिनिधित्व करने वाली दो मैट ऑब्जेक्ट।
-
आकृति विज्ञान संचालन के प्रकार का प्रतिनिधित्व करने वाला एक पूर्णांक चर।
-
कर्नेल मैट्रिक्स का प्रतिनिधित्व करने वाला मैट ऑब्जेक्ट।
किसी छवि पर मॉर्फोलॉजिकल ओपनिंग ऑपरेशन लागू करने के लिए आपको Imgproc.MORPH_CLOSE पास करके ऊपर बताई गई विधि को लागू करना होगा। स्रोत गंतव्य और कर्नेल मैट्रिस के साथ (तीसरा) एक पैरामीटर के रूप में।
उदाहरण
आयात करें javafx.scene.Scene आयात करें org.opencv.core.Mat;import org.opencv.highgui.HighGui;import org.opencv.imgcodecs.Imgcodecs;import org.opencv.imgproc.Imgproc;public class MorphologicalClosing का विस्तार अनुप्रयोग { सार्वजनिक शून्य प्रारंभ (चरण चरण) IOException फेंकता है {// ओपनसीवी कोर लाइब्रेरी लोड हो रहा है System.loadLibrary(Core.NATIVE_LIBRARY_NAME); // छवि डेटा पढ़ना स्ट्रिंग फ़ाइल ="डी:\\ छवियां \\ morph_input2.jpg"; मैट स्रोत =Imgcodecs.imread (फ़ाइल); // गंतव्य मैट्रिक्स बनाना मैट डीएसटी =नया मैट (src.rows (), src.cols (), src.type ()); // कर्नेल मैट्रिक्स ऑब्जेक्ट तैयार करना Mat कर्नेल =Mat.ones(5,5, CvType.CV_32F); // इमेज Imgproc.morphologyEx(src, dst, Imgproc.MORPH_CLOSE, कर्नेल) पर डाइलेट लगाना; // मैट्रिक्स को JavaFX लिखने योग्य छवि में कनवर्ट करना छवि img =HighGui.toBufferedImage(dst); WritableImage writableImage=SwingFXUtils.toFXImage((BufferedImage) img, null); // छवि दृश्य सेट करना ImageView छवि दृश्य =नया छवि दृश्य (लिखने योग्य छवि); imageView.setX(10); imageView.setY(10); imageView.setFitWidth(575); imageView.setPreserveRatio (सच); // दृश्य वस्तु सेट करना समूह रूट =नया समूह (छवि दृश्य); दृश्य दृश्य =नया दृश्य (रूट, 595, 400); स्टेज.सेटटाइटल ("फैलाव उदाहरण"); स्टेज.सेटसीन (दृश्य); मंच पर शो(); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग []) {लॉन्च (तर्क); }}इनपुट इमेज
आउटपुट
निष्पादित करने पर, उपरोक्त प्रोग्राम निम्न आउटपुट उत्पन्न करता है -