Oberflächenerkennung


9

Wie würde man große graue Bereiche (von Weiß bis Schwarz) aus einem Bild segmentieren? (Wenn Sie dies in opencv wissen, können Sie antworten, indem Sie sagen, was Sie in opencv tun würden). Zum Beispiel bei diesem Bild:

Geben Sie hier die Bildbeschreibung ein

Sie sehen, dass dies eine große graue Fläche ist und sich deutlich von den anderen unterscheidet. Wie können Sie dies segmentieren, wenn dieser Bereich einen beliebigen Grauton haben kann und in Echtzeit arbeiten muss?

Danke im Voraus.


Ich sehe mehrere Grauzonen deutlich unterscheidbar. Können Sie Ihr gewünschtes Ergebnis zeigen?
Dr. Belisarius

Mein gewünschtes Ergebnis sind die Koordinaten der oberen rechten und linken Ecke und die Koordinate der linken unteren Ecke des mittleren grauen Rechtecks
Olivier_s_j

Können Sie uns noch etwas über die Umgebung und die möglichen Abweichungen in den Bildern erzählen, die Sie verarbeiten müssen? Befindet sich das Ziel immer in der Mitte des Bildes? Werden andere graue Rechtecke vorhanden sein, möglicherweise von gleicher Größe? Was ist, wenn sie im gleichen Grauton erscheinen? Gibt es noch andere Dinge, mit denen wir es identifizieren könnten? Wird es oben immer die kleine "T" -Form haben?
Justis

Hallo, das Ziel befindet sich nicht immer in der Mitte des Bildes. Das Ziel wird immer eine Art Rechteck sein. (Es kann auch nur eine Wand sein). Wenn mehrere Rechtecke vorhanden sind, sollten diese ebenfalls erkannt werden, sie sollten jedoch groß sein. Kleine Bereiche können verworfen werden. Wenn sie alle als dieselbe Art von Grau angezeigt werden, sollten sie alle erkannt werden, aber die Wahrscheinlichkeit, dass dies geschieht, ist sehr gering. Die einzige realisierbare Eigenschaft, die erkannt werden kann, ist, dass eine Oberfläche über die gesamte Oberfläche das gleiche Grau (mehr oder weniger) aufweist und dass es sich um ein Rechteck handelt. Es wird nicht jedes Mal ein kleines T-
förmiges

Antworten:


9

Sie erhalten eine angemessene Segmentierung der Grauzone mithilfe des Watershed-Algorithmus oder von Grafikschnitten. Watershed ist in opencv verfügbar, Grafikschnitte jedoch noch nicht. (Übrigens, ist das eine Tiefenkarte von Kinect?)


1
Die Wasserscheidenfunktion in opencv erforderte ein 8-Bit-3-Kanal-Bild als Eingabe. Meine Tiefenkarte ist ein 8-Bit-1-Bild. Irgendeine Idee, wie man das löst?
Olivier_s_j

/ * Bildeigenschaften abrufen / width = src-> width; Höhe = src-> Höhe; / Neues Bild für die Graustufenversion erstellen * / IplImage * dst = cvCreateImage (cvSize (Breite, Höhe), IPL_DEPTH_8U, 1); cvCvtColor (src, dst, CV_RGB2GRAY);
Nav

Eine andere Frage, ich habe gerade die Wasserscheidenfunktion in einem anderen Bild zum Laufen gebracht (nur ein Beispiel von opencv). Aber sie beginnen mit einem Farbbild und einem Binärbild. Ich habe nur 1 Bild ... das Grascale-Bild. Irgendeine Idee, wie die Maske sein sollte (die zweite Eingabevariable)?
Olivier_s_j

4

In Mathematica können Sie Folgendes tun:

Colorize[MorphologicalComponents[
  ColorNegate@
   Erosion[Dilation[
     DeleteSmallComponents[
      Erosion[Binarize[
        GradientFilter[
         ColorConvert[Import@"http://i.stack.imgur.com/XdnaW.png", 
          "RGB"], 2], .015], 1], 100], 2], 2]], 
 ColorFunction -> "ThermometerColors"]

Geben Sie hier die Bildbeschreibung ein

Wahrscheinlich können Sie diesen Code in jede Bildverarbeitungsbibliothek übersetzen.


Hallo, sieht gut aus. Aber ich habe keine Mathematik. Aber ich vermute, Sie haben Schwellenwerte verwendet, die auf der Graustufe dieses Bildes basieren? Vielleicht könnten Sie mit Ihrem Code ein paar Informationen geben? Thx
Olivier_s_j

1
@Ojt Für jeden Befehl können Sie " reference.wolfram.com/mathematica/ref/xxx.html " für eine Beschreibung lesen . Zum Beispiel reference.wolfram.com/mathematica/ref/…
Dr. belisarius

Ok, ich habe getan, was du vorgeschlagen hast. Es scheint jedoch, dass Sie Binarize verwenden, um einen Schwellenwert für einen bestimmten Wert festzulegen. Was in meinem Fall nicht möglich ist. Da große Flächen unterschiedliche Graustufen haben können. (Zum Beispiel könnte die mittlere Oberfläche sehr hellgrau sein). Und dann würde die Schwelle nicht funktionieren.
Olivier_s_j
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.