Finde die Punkte auf einem Bild

Oct 07 2020

Hat jemand eine Idee, wie man Punkte erkennt, die auf dieser Art von Bild zentriert sind? Hier beherbergen Punkte einen Schwarz-Weiß-Kontrast (oder Weiß-Schwarz) und berühren sich fast. Dies macht es schwierig, ComponentMeasurements wie gewohnt zu verwenden. Danke für deine Hilfe, Daniel

Antworten

1 bobthechemist Oct 07 2020 at 23:13

Dies kommt dem nahe, und ich vermute, dass ein Maskierungsansatz besser wäre, da alle Objekte gleich groß zu sein scheinen. Ein kantenerhaltender Filter wird angewendet, um den Hintergrund zu glätten und gleichzeitig den Kontrast der Objekte beizubehalten. Die Farben werden dann in 3 Kategorien eingeteilt (hoch / niedrig / Hintergrund). Ich ignoriere eines der High / Low, das ein Bereich für Verbesserungen ist. Zuletzt löschen Sie Objekte beliebiger Größe und zählen, was noch übrig ist.

i = Import@"https://i.stack.imgur.com/9RP53.png"
ij = ImportString[ExportString[i, "jpg"], "jpg"];
if = PeronaMalikFilter[ij,10];
data = ClusteringComponents[ColorQuantize[if, 16], 3];
ip = DeleteSmallComponents[
  Colorize[idata, ColorRules -> {1 -> Black, 2 -> Black, 3 -> Red}], 
  50]
ComponentMeasurements[ip, "Area"] //Length

Es wurden 163 Objekte gefunden.