Erstellen Sie ein Bild aus einer Datentabelle, auf die Filter angewendet werdenHallo,
Ich arbeite viel mit X / Y / Metrik-Datentabellen, die Bildern ähnlich sind und auf die ich JMP-Filter anwenden möchte ("Despeckle", "Rauschen reduzieren", ... Ich war sehr interessiert an dieser Präsentation von Julia Gong: "Verwenden von JMP®-Bildanalysefunktionen zum Extrahieren von Hautläsionsmerkmalen") und anschließende Transformation zurück in die Datentabelle. Es scheint einfacher zu sein, diese Art von Filter zu verwenden, nachdem ich meine Daten in Bilder umgewandelt habe, als einige knifflige Matrixberechnungen durchzuführen.
Mögen:

um zum Beispiel nur den unteren rechten Cluster mit Rauschunterdrückung zu erhalten

Ich verstehe jedoch nicht, wie ich aus meinen Daten eine JMP-Bildmatrix erstellen kann.
Zum Beispiel, wenn ich von einer Tabelle mit X, Y und einer Metrik unten und als Anhang ausgehe

Dann:
dt =current data table();
// the X,Y, metric matrix
mat = (:X << getvalues) || (:Y << getvalues) || (:metric << getvalues);
Weder dieser Befehl:
img = New Image( "r",{mat});noch dieser:
img << Set pixels ("r",{mat});... scheint zu funktionieren.
Wie kann ich diese Tabelle in eine Bildmatrix umwandeln und JMP-Filter darauf anwenden?
Vielen Dank!
Franck
GrafikSkriptingBetreff: Erstellen Sie ein Bild aus einer Datentabelle und wenden Sie dann JSL-Filter darauf anSie müssen Folgendes tun:
NamesDefaultToHere(1);
dt = Data table("data_table.jmp");
// The values of the metric need to be rescaled to [0, 1]
metric = Column(dt, 3) << getValues;
maxMetric = Max(metric);
minMetric = Min(metric);
metric = (metric - minMetric) :\</img> (maxMetric - minMetric);
// Column vector to hold the pixel values for the image
pixVals = J(NRow(metric), 1, .);
for (p=1, p<=NRow(pixVals), p++,
pixVals[p] = RGB Color(metric[p], metric[p], metric[p]);
);
// Reshape 'pixVals' to be a rectangular matrix (assumes 'X' and 'Y' both start at 1)
xMax = Max(Column(dt, "X") << getValues);
yMax = Max(Column(dt, "Y") << getValues);
pixVals = Shape(pixVals, xMax, yMax);
// Make an image, make it a bit bigger, and put it in a window
im = New Image();
im << setPixels( pixVals );
im << setSize({10*xMax, 8*yMax});
NewWindow("My Image", im);
Verwenden Sie 'Hilfe> Skriptindex', um zu verdeutlichen, wie der Code funktioniert.

Betreff: Erstellen Sie ein Bild aus einer Datentabelle und wenden Sie dann JSL-Filter darauf anGroßartig! Danke für Ihre Hilfe!