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

Java में OpenCV प्रोबेबिलिस्टिक हफ लाइन ट्रांसफॉर्म कार्यान्वयन


आप हफ लाइन ट्रांसफॉर्म का उपयोग करके दी गई इमेज में सीधी रेखाओं का पता लगा सकते हैं। OpenCV में दो प्रकार के हफ लाइन ट्रांसफॉर्म उपलब्ध हैं: स्टैंडर्ड हफ लाइन ट्रांसफॉर्म और प्रोबेबिलिस्टिक हफ लाइन ट्रांसफॉर्म।

आप Imgproc क्लास के HoughLinesP() मेथड का उपयोग करके प्रोबेबिलिस्टिक हफ लाइन ट्रांसफॉर्म लागू कर सकते हैं, यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करता है -

  • स्रोत इमेज और रेखाओं के पैरामीटर्स (r, Φ) को स्टोर करने वाले वेक्टर का प्रतिनिधित्व करने वाले दो Mat ऑब्जेक्ट्स।

  • पैरामीटर्स r (पिक्सल्स) और Φ (रेडियंस) के रिज़ॉल्यूशन का प्रतिनिधित्व करने वाले दो डबल वेरिएबल्स।

  • एक रेखा "डिटेक्ट" करने के लिए न्यूनतम इंटरसेक्शन्स की संख्या का प्रतिनिधित्व करने वाला एक इंटीजर।

उदाहरण

निम्नलिखित Java उदाहरण OpenCV में प्रोबेबिलिस्टिक हफ लाइन ट्रांसफॉर्म का उपयोग करके इमेज में रेखाओं का पता लगाता है -

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Scalar;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class HoughLineProbabilisticTransform extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        // OpenCV कोर लाइब्रेरी लोड करना
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        String file = "D:\\Images\\road4.jpg";
        Mat src = Imgcodecs.imread(file);
        
        // इमेज को ग्रे में कनवर्ट करना
        Mat gray = new Mat();
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_RGBA2GRAY);
        
        // एज डिटेक्ट करना
        Mat edges = new Mat();
        Imgproc.Canny(gray, edges, 60, 60*3, 3, false);
        
        // Canny का रंग बदलना
        Mat cannyColor = new Mat();
        Imgproc.cvtColor(edges, cannyColor, Imgproc.COLOR_GRAY2BGR);
        
        // (Canny से) हफ लाइन्स डिटेक्ट करना
        Mat lines = new Mat();
        Imgproc.HoughLinesP(edges, lines, 1, Math.PI/180, 50, 50, 10);
        
        for (int i = 0; i < lines.rows(); i++) {
            double[] data = lines.get(i, 0);
            // इमेज पर रेखाएं खींचना
            Point pt1 = new Point(data[0], data[1]);
            Point pt2 = new Point(data[2], data[3]);
            Imgproc.line(cannyColor, pt1, pt2, new Scalar(0, 0, 255), 3);
        }
        
        // मैट्रिक्स को JavaFX राइटेबल इमेज में कनवर्ट करना
        Image img = HighGui.toBufferedImage(cannyColor);
        WritableImage writableImage = SwingFXUtils.toFXImage((BufferedImage) img, null);
        
        // इमेज व्यू सेट करना
        ImageView imageView = new ImageView(writableImage);
        imageView.setX(10);
        imageView.setY(10);
        imageView.setFitWidth(575);
        imageView.setPreserveRatio(true);
        
        // Scene ऑब्जेक्ट सेट करना
        Group root = new Group(imageView);
        Scene scene = new Scene(root, 595, 400);
        stage.setTitle("हफ लाइन ट्रांसफॉर्म");
        stage.setScene(scene);
        stage.show();
    }
    
    public static void main(String args[]) {
        launch(args);
    }
}

इनपुट इमेज

Java में OpenCV प्रोबेबिलिस्टिक हफ लाइन ट्रांसफॉर्म कार्यान्वयन

आउटपुट

उपरोक्त प्रोग्राम निष्पादित करने पर निम्नलिखित आउटपुट उत्पन्न करता है -

Java में OpenCV प्रोबेबिलिस्टिक हफ लाइन ट्रांसफॉर्म कार्यान्वयन

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

    आप लो-पास फिल्टर का उपयोग करके छवि को फ़िल्टर करके ब्लर कर सकते हैं, यह छवि से उच्च आवृत्ति सामग्री (शोर, किनारे) को हटा देता है। मीडियन ब्लरिंग OpenCV द्वारा प्रदान की जाने वाली ब्लरिंग तकनीकों में से एक है, यह छवि के सॉल्ट और पेपर शोर को हटाने में अत्यधिक कुशल है। यह कर्नेल क्षेत्र में सभी पिक्से

  1. Java का उपयोग करके OpenCV में बाइलेटरल ब्लर कैसे लागू करें? Java का उपयोग करके OpenCV में बाइलेटरल ब्लर कैसे लागू करें?

    आप लो-पास फिल्टर का उपयोग करके छवि को फ़िल्टर करके ब्लर कर सकते हैं, यह छवि से उच्च आवृत्ति सामग्री (शोर, किनारे) को हटा देता है। बाइलेटरल फ़िल्टरिंग OpenCV द्वारा प्रदान की जाने वाली ब्लरिंग तकनीकों में से एक है, यह - कुशलतापूर्वक शोर हटाता है किनारों को तेज रखता है तुलनात्मक रूप से धीमा आप bila

  1. Java में OpenCV का उपयोग करके रेखा कैसे बनाएं? Java में OpenCV का उपयोग करके रेखा कैसे बनाएं?

    Java OpenCV लाइब्रेरी का org.opencv.imgproc पैकेज Imgproc नामक एक क्लास प्रदान करता है। रेखा बनाने के लिए, आपको इस क्लास की line() मेथड को कॉल करना होगा। यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करती है −एक Mat ऑब्जेक्ट जो उस इमेज को दर्शाता है जिस पर रेखा बनाई जानी है।दो Point ऑब्जेक्ट जो उन बिंदुओं क