2017-12-27 19 views
1

Ich habe versucht, eine binäre Segmentierung für meine Projektarbeit zu implementieren, aber ich bin mit dem binären Segmentierungscode festgefahren. Ich möchte nur eine kontinuierliche Segmentierung eines Players und Hintergrund im Bild wie this Bild (eine ordnungsgemäße Segmentierung einer Hand).Binäre Segmentierung eines komplexen Bildes in Python.

imgort numpy as np     
import cv2 
from matplotlib import pyplot as plt 

img = cv2.imread('main-qimg-f32bfc3d08d8809a8b3bb7d91c5d183d.png') 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 
ret, thresh = 
cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) 

%pylab inline 
import matplotlib.image as mpimg 
imgplot_0 = plt.imshow(img) 
plt.show() 
imgplot = plt.imshow(thresh) 
plt.show() 

aber dieser Code am Ende gibt mir this Bild. Das Originalbild und das Bild, das Sie erhalten, nachdem Sie den obigen Code ausgeführt haben.

Wie Sie sehen können, ist die binäre Segmentierung nicht gut. Ich möchte den Schuss des Spielers (mit Spieler) aus dem Bild extrahieren. Vielleicht liegt es an Rauschen und störenden Kanten im Bild.

Was muss ich in meinem Code ändern, um eine korrekte Segmentierung zu erhalten?

Vielen Dank im Voraus!

Antwort

0

Was Sie erreichen möchten, ist praktisch unmöglich.

Nur anhand der Farbe kann nichts sagen, was ein "Stück des Spielers" vs. ein "Stück des Hintergrunds" ist. Das Bild ist viel zu komplex und bunt.

Um eine solche Segmentierung zu erreichen, benötigen Sie viele a priori Informationen über die möglichen Formen und Farben eines Spielers. Dies wird Objektkategorieerkennung genannt und ist immer noch ein offenes Forschungsthema.

Im Vergleich ist das Bild der Hand millionenfach einfacher (obwohl Sie vielleicht in Frage stellen, dass das Handgelenk fehlt).

Verwandte Themen