Ich versuche, die ConnectedThresholdImageFilter-Klasse zu verwenden, um die C-weisse Region eines binären Bildes ('slice87.jpg') zu segmentieren. Die Idee war, einen Seed-Wert auszuwählen, der innerhalb der Region liegt und nur benachbarte Pixel hinzufügt, die ebenfalls eine Intensität von 255 aufweisen (zwischen dem Schwellenwert von 254 und 256).Warum markiert die ConnectedThresholdImageFilter-Klasse keine Pixel innerhalb des Schwellenwerts?
jedoch Ergebnisse meines Code in einem Bild mit jedem Pixel auf 0:
Statt dem (manuell durch Photoshop bearbeitete):
Mein Startwert war (x, y) = (115,35). img.GetPixel(115,35)
kehrt 255.
import SimpleITK as sitk
img = sitk.ReadImage('slice87.jpg')
seeds = [(115,35)]
output = sitk.ConnectedThreshold(image1=img,
seedList = seeds,
lower = 254,
upper = 256,
replaceValue = 255)
sitk.WriteImage(output, 'output.jpg')
Verwenden Sie das Bild von diesem Post oder einen anderen? Wenn Letzteres der Fall ist, sind die Intensitäten möglicherweise aufgrund von Verlusten durch JPEG-Komprimierung nicht ganz korrekt. –
Das eigentliche Bild ist ein 3D-Binärbild, das im hdr/img-Analyseformat gespeichert wird. Ich habe slice87 als jpg gespeichert, damit ich es in stackoverflow hochladen konnte. Die Intensität für weiße Bereiche liegt im Bereich von 251-255, daher erklärt die Komprimierung nicht, warum alle Pixel auf 0 gesetzt sind. – DottedGlass