scharfes Bild zum Erkennen von Kanten / Linien in einem gestempelten „X“ -Objekt auf Papier

Ich benutze Python & OpenCV. Mein Ziel ist es, "X" -förmige Teile in einem Bild zu erkennen, das mit einer Himbeer-Pi-Kamera aufgenommen wurde. Das Projekt sieht vor, dass wir vorgedruckte Tic-Tac-Toe-Tafeln haben und die Tafel jedes Mal abbilden müssen, wenn ein neues Stück auf die Tafel gelegt wird (mit Tintenstempeln). Die Ausgabe gibt dann an, welche Art von Teil, falls vorhanden, sich in welchem Abschnitt der Tic-Tac-Toe-Tafel befindet.

Hier habe ich die Linien, die ich im Bild erkannt habe, in grün:

Wie Sie sehen können, scheinen die "X" -Formteile nicht leicht zu erkennen zu sein. Auf einigen Briefmarken wird nur eine Zeile "gesehen".

So sieht die Kantenerkennung nach den Filtern aus:

Meine Methode zum Erkennen des "X" -Formteils besteht darin, jeden Abschnitt auf Linien mit einer nicht horizontalen / vertikalen Neigung zu überprüfen. Mein Problem ist, dass die "X" -förmigen Stempel keine perfekten Linien sind; Mein Code greift also kaum in die Zeilen ein.

Ich habe versucht, einen unscharfen Filter anzuwenden, indem ich den Histogramm-Ausgleich und nur die Graustufen für die Kantenerkennung verwendet habe. Keiner von diesen hat mehr als eine Linie in einem "X" -Formstück festgestellt.

rob was ich tue:

#sharpen image using blur and unsharp method
gaussian_1 = cv2.GaussianBlur(image, (9,9), 10.0)
unsharp_image = cv2.addWeighted(image, 1.5, gaussian_1, -0.5, 0, image)
#apply filter to find stamp pieces, histogram equalization on greyscale
hist_eq = cv2.equalizeHist(unsharp_image)
#edge detection (input,threshold1,threshold2,size_for_sobel_operator)
edges = cv2.Canny(hist_eq,50,150,apertureSize = 3)
#find lines (edges,min_pixels,min_degrees,min_intersections,lineLength,LineGap)
lines = cv2.HoughLinesP(edges,1,np.pi/180,50,minLineLength,maxLineGap)

Nur ich wende dies auf jeden der 9 Abschnitte des Boards einzeln an, aber das ist nicht wirklich wichtig.

TLDR: Wie kann ich mein Bild so gestalten, dass meine Linien "scharf" und scharf sind? Ich möchte wissen, was ich verwenden kann, um ein gestempeltes "X" wie ein paar Zeilen aussehen zu lassen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage