Construisez une image à partir d'une table de données, puis appliquez-y des filtres jslSalut,
Je travaille beaucoup avec des tables de données X/Y/métriques qui s'apparentent à des images et sur lesquelles j'aimerais appliquer des filtres JMP ("despeckle", "reduce noise",... J'ai été très intéressé par cette présentation de Julia Gong : "Utilisation des capacités d'analyse d'images JMP® pour extraire les caractéristiques des lésions cutanées"), puis retransformer en tableau 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 délicats.
Comme:

pour obtenir par exemple uniquement les pixels de haut niveau du cluster en bas à droite avec un filtre jsl de réduction du bruit, en supposant que les pixels isolés sont du bruit et doivent être filtrés

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 en dessous et en pièce jointe

Alors:
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'images et lui appliquer des filtres JMP ?
Merci!
Franck
Études de consommation et de marchéExploration et visualisation des donnéesRe : Construire une image à partir d'une table de données, puis appliquer des filtres jsl dessusSuper! Merci pour votre aide!
Re : Construire une image à partir d'une table de données, puis appliquer 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 'Help > Scripting Index' pour clarifier le fonctionnement du code.
