Hallo,
Ich arbeite viel mit X/Y/metrischen Datentabellen, die Bildern ähneln und auf die ich JMP-Filter anwenden möchte („Despeckle“, „Rauschen reduzieren“, …). Ich war sehr an dieser Präsentation von Julia Gong interessiert: „Using JMP® Image Analysis Capabilities to Extract Skin Lesion Characteristics“) und dann wieder in die Datentabelle umwandeln. Es scheint einfacher zu sein, diese Art von Filter zu verwenden, nachdem ich meine Daten in ein Bild umgewandelt habe, als einige knifflige Matrixberechnungen durchzuführen.
Wie:

Um zum Beispiel nur die oberen rechten Cluster-Pixel mit Rauschunterdrückungs-JSL-Filter zu erhalten, wird davon ausgegangen, dass isolierte Pixel Rauschen sind und gefiltert werden müssen

Aber ich verstehe 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 beginne

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 dieses hier:
img << Set pixels ("r",{mat});...scheint zu funktionieren.
Wie kann ich diese Tabelle in eine Bildmatrix umwandeln und JMP-Filter darauf anwenden?
Danke!
Franck
Großartig! Vielen Dank für Ihre Hilfe!
Sie müssen etwa 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 erklären, wie der Code funktioniert.
