Construisez une image à partir d'une table de données sur laquelle appliquer des filtresSalut,
Je travaille beaucoup avec des tables de données X / Y / métriques qui ressemblent à des images et sur lesquelles je voudrais appliquer des filtres JMP ("dépeckle", "reduction noise", ... J'ai été très intéressée par cette présentation de Julia Gong: "Utilisation des capacités d'analyse d'image JMP® pour extraire les caractéristiques des lésions cutanées"), puis la reconversion en table de données. Il semble plus facile d'utiliser ce type de filtre après avoir transformé mes données en image que d'effectuer des calculs matriciels complexes.
Comme:

pour obtenir par exemple juste le cluster en bas à droite avec réduction du bruit

Mais je ne comprends pas comment créer une matrice d'image JMP à partir de mes données.
Par exemple, si je pars d'un tableau avec X, Y et une métrique ci-dessous et en pièce jointe

Ensuite:
dt =current data table();
// the X,Y, metric matrix
mat = (:X << getvalues) || (:Y << getvalues) || (:metric << getvalues);
Ni cette commande:
img = New Image( "r",{mat});ni celui-ci:
img << Set pixels ("r",{mat});... semble fonctionner.
Comment puis-je transformer ce tableau en une matrice d'image et y appliquer des filtres JMP?
Merci!
Franck
GraphiqueScriptingRe: Construisez une image à partir d'une table de données puis appliquez des filtres jsl dessusVous devrez faire quelque chose comme ceci:
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);
Utilisez 'Aide> Index de script' pour clarifier le fonctionnement du code.
