Ich habe ein Bild mit fast konstanten Linien darin und ich benutze Algorythm mit morphologischen Operationen, um sie aus dem Bild zu löschen. Die Sache ist, dass morphologisches Öffnen oder Schließen die Linien mit den Kanten des Bildes verschmilzt, anstatt nur die Nachbarkonturen zu schmelzen. Ich brauche nur Nachbarkonturen, die mit morphologischen Operationen verschmolzen sind, und um zu vermeiden, dass diese Linie mit der Kante verschmilzt, weil ich später nicht in der Lage bin, den verschmolzenen Linienfrieden aus dem Bild zu entfernen. Das Problem bleibt auch dann bestehen, wenn ich das Bild invertiere und morphe. Operationen (Bildpixel schwarz zu weiß, weiß zu schwarz, und statt zu öffnen, verwende ich schließen).Morphologische Operationen verschmelzen Linien mit Kanten von Bildern
Wie zu stoppen?
Ich benutze diese Operation Nachbar Konturen zu fusionieren:
Mat morphKernelClose = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new org.opencv.core.Size(25, 25));
Imgproc.morphologyEx(src, src, Imgproc.MORPH_CLOSE, morphKernelClose);
Einfach Canny Bild:
Bild nach MORPH_CLOSE mit:
Dieser Fehler ermöglicht es mir nicht, die Zeilen vollständig zu löschen (diese zusammengeführten Teile sind übrig), indem Sie eine zweite Morphologieoperation verwenden, die der zuerst verwendeten entgegengesetzt ist.
Die C++ - Version von morphologyEx verfügt über Parameter für den Umgang mit dem Rahmen. Nicht sicher, ob sie auch in der Java (?) Version existieren. – Micka
Danke.Es gibt eine Funktionsüberladung in Java: 'public static void MorphologieEx (Mat src, Mat dst, int op, Mat kernel, Point anchor, int iterations, int borderType, Scalar borderValue)', wobei "** borderType - Pixel extrapolation method. Siehe "borderInterpolate" für Details. ** "und" ** borderValue - Rahmenwert bei einem konstanten Rahmen. Der Standardwert hat eine spezielle Bedeutung. Siehe "createMorphologyFilter" für Details. ** "Diese Funktion Überlastung erlaubt mir die Verschmelzung mit Grenzen mit geeigneten Argumenten zu manipulieren? Ich kann keine Quellen finden, die den Gebrauch davon benutzen und erklären. –
Ich denke ja. Probier es einfach. Setzen Sie es auf border_constant und Wert auf 0. – Micka