[OpenCV] Disparitätskarte Filter in neue cv::Mat



  • Guten Tag,

    ich hoffe dieser Bereich ist am passensten für meine Frage.

    Ausgangslage
    Ich arbeite momentan mit OpenCV und erstelle mir hier meine Disparitätskarten sowie die Punktwolken.

    Problem
    Nun habe ich folgendes Problem. Wenn ich die Disparitätskarte ungefiltert lasse, dann werden ja auch alle niedrigen Z-Koordinaten als Punkt in der Punktwolke dargestellt, wie in der Abbildung im nachfolgenden Link zu erkennen.

    http://www.directupload.net/file/d/4000/j8f44j3w_png.htm

    Um dem entgegenzuwirken, war mein Plan niedrige Z-Werte (quasi die Auflagefläche) aus der Disparität-Matrix zu filtern, bevor Sie zur Punktwolke werden. Wobei ich mir nicht sicher bin ob das mit den "Z-Koordinaten" in der Disparitätskarte so einfach möglich ist

    // Compute disparity
    sbm(mRectLeft , mRectRight, mDisparity);  // hier erstellen der Disparitätskarte
    
    mDisparity.convertTo(mDisp8, CV_8U, 255/(96*16.)); // auf 8Bit komprimieren
    

    Mein Ansatz
    War folgender, die vorher komprimierte Matrize in Vektor-Form als CSV-Datei speichern. Hier jedoch weiß ich nicht, wie ich die CSV-Datei oder einfach den Vektor wieder in eine neue Matrize schreibe.

    QFile file("disparity.csv");
                if (!file.open(QIODevice::WriteOnly))
                {
    
                }
                QTextStream out(&file);
    
        for(int x = 0; x < 251; x++)
        {
            for(int y = 0; y < 251; y++)
            {
                Vec3b point = mDisp8.at<Vec3b>(x, y);
    
               if(point[2]>10)
               {
                out << point[0] << ";" <<  point[1] << ";" <<  point[2] << endl;
               }
            }
        }
    
        file.close();
    

    Fragen zusammengefasst

    • Besteht die Möglichkeit bestimmte Werte direkt aus einer cv::Mat zu entfernen
      Falls nein
    • Wie schreibe ich die Werte aus der CSV, oder aber auch aus dem Vektor wieder direkt in eine neue cv::Mat?

    Evtl. ist das ganze auch zu umständlich und es gibt einfachere Wege, ich wäre für eure Hilfe sehr dankbar.

    Lieben Gruß


Anmelden zum Antworten