Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesLieber jedermann,
Ich möchte wissen, ob es möglich ist, die Pixel innerhalb des vordefinierten Kreises meines Bildes mit einem Skript zu extrahieren (siehe Anhang).
Vielen Dank im Voraus für Ihre Hilfe.
Krs,
Samir
Re: Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesKönnte sein. Möglicherweise können Sie ein Modell mit Statistiken zu den Pixelwerten im Bild erstellen, um die beiden vom Filter benötigten Schwellenwerte zu erstellen. Möglicherweise möchten Sie das Bild vor dem Canny-Filter glätten (nicht im Canny-Filter), damit Sie das Modell mit den geglätteten Pixeln erstellen können. (Bearbeiten: Die interne Unschärfefilter-Unschärfe ist besser, da sie die Gleitkommadaten verfolgt. Eine externe Unschärfe reduziert die Fließkommadaten auf ganzzahlige Pixelwerte von 0..255 im unscharfen Bild, und die meisten Pixel im dunklen Bild haben 0..10.
https://en.wikipedia.org/wiki/Canny_edge_detector beschreibt die Funktionsweise des Cytiefilters; Der große Schwellenwert (sehr klein für Ihre Bilder) ist der Beginn einer Linie. Zwei benachbarte Pixel müssen sich so stark unterscheiden. Die Zeile wird "verfolgt", bis der kleine Schwellenwert unterschritten wird (sehr, sehr klein für Ihre Bilder). "Die zwei Schwellenwerte werden empirisch bestimmt und ihre Definition hängt vom Inhalt eines gegebenen Eingabebildes ab." - Wikipedia
Sind Farben in diesen Bildern wichtig? Wenn nicht, möchten Sie möglicherweise das Bild auf Graustufen reduzieren. Ich denke, es wird ein einfacheres Problem. Sie können die Graustufenwerte verteilen ...
Was machen Sie mit der Zeile, nachdem Sie sie in einem Bild erhalten haben? Ist es nur eine Visualisierung oder führen Sie mehr Berechnungen für dieses Bild durch? Der Clustering-Ansatz funktioniert möglicherweise immer noch gut, wenn Sie einen Massenmittelpunkt und einen Radius benötigen.
Re: Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesLieber Craige,
Wir haben die Lösung automatisiert bereitgestellt, müssen aber die Schwellenwertparameter noch manuell anpassen, da Fotos heterogen sind. denkst du, dass es möglich ist, diesen schritt zu automatisieren?
Danke vielmals,
Samir
Re: Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesLieber Craige,
Der Canny-Filter ist wirklich hilfreich.
Ich werde versuchen, den Prozess zu automatisieren.
Das Clustering ist auch sehr interessant, aber für andere Fotos ist das Ergebnis weniger klar.
Vielen dank für Deine Hilfe,
Samir
Re: Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesSchauen Sie sich das Beispiel für den canny-Filter im Skriptindex an. Die Parameter befinden sich in Schiebereglern und sind möglicherweise zu empfindlich, wenn Ihre Daten in der Intensität variieren, jedoch für das von mir verwendete Beispielbild
Slider-Einstellungen im Skriptindex-Beispiel
Um das zu bekommen
Canny-Filter erkennt Kanten
Das Rauschen im Bild wurde durch die beiden oberen Schieberegler stark gemildert. Die beiden unteren Schieberegler wurden auf Werte eingestellt, die für diese Pixelintensitäten geeignet sind. Das Skript ist im Beispiel. Sie können möglicherweise Ihren Prozess automatisieren, wenn die Bilder ähnlich genug sind. Die Ausgabe ist ein Schwarzweiß- oder Ein-und-Nullbild. Sie können diese Pixel zur weiteren Verarbeitung in einer Matrix erfassen.
Möglicherweise möchten Sie auch eine Analyse der Pixelfarben durchführen. Vielleicht würden Sie durch Clustering eine dunkel blau und dunkler blaues Paar von Clustern. Vielleicht könnten Sie die XY-Koordinaten der dunkelblauen Clusterpixel verwenden. zum Beispiel:
// load the test image
img = open("$desktop/large.png","png");
// grab the rgb data from the image
{r,g,b} = img<<GETPIXELS></GETPIXELS>
Clustering-Ergebnisse wurden zu einem Bild
Es kann sinnvoller sein, mit den XY-Koordinaten der Cluster-Pixel zu arbeiten, um die gewünschten Parameter zu finden.
Re: Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesLieber Craige,
Vielen Dank für den Vorschlag.
Leider kann sich die Lokalisierung des Kreises im Bild von einem Foto zum anderen bewegen (noch nicht standardisiert).
Meine Frage ist, ob es möglich ist, die Konturen des Kreises automatisch zu erkennen.
Krs,
Samir
Re: Extrahieren Sie eine vordefinierte Zone innerhalb eines BildesJa. Holen Sie sich eine Matrix der Pixelwerte für das gesamte Bild
image << getpixels (siehe Skript-Index, ich bin gerade nicht an meinem Schreibtisch).
Sie können die Pixel als separate r-, g-, b-Kanäle oder als kombinierte JMP-Farbe erhalten.
Als Nächstes benötigen Sie eine Maskenmatrix mit den gleichen Abmessungen, mit Einsen für die Pixel und Nullen für die Pixel, die zurückgewiesen werden sollen. Sie können ein Malprogramm mit Weiß für Eins und Schwarz für Null verwenden. Laden Sie dieses Bild und erhalten Sie nur einen Kanal, vielleicht Rot (r, g, b sollten für das Schwarzweißbild alle gleich sein), der die Werte Null und Eins haben wird.
Entscheiden Sie nun, was das Ergebnis sein soll: Nur eine ungeordnete Liste nur der interessanten Pixel? Oder eine Matrix mit der gleichen Größe wie zuvor, wobei die uninteressanten Werte auf Null gesetzt sind?
imageMatrix [Loc (Maske)] gibt die ungeordneten Pixel an, bei denen die Maske Werte ungleich Null hatte.
imageMatrix: * mask gibt Ihnen Null, wenn die Maske Null ist, ursprüngliche Werte, wo die Maske Eins ist. (: * ist die elementweise Multiplikation. * ist Matrix-Algebra-Multiplikation ... nicht was Sie wollen.)
Diese Post könnte helfen.