Il s'agit essentiellement d'une interpolation multivariée 2D. J'ai un ensemble d'emplacements (x, y) et une donnée correspondante, par exemple : z = valeur de couleur. Pour certains des (x, y), la colonne z contient des données manquantes. Je veux utiliser les deux plus proches connus (x1,y1,z1) et (x2,y2,z2) pour interpoler la valeur de (x3,y3, z3=?).
Théoriquement cela wiki/Bilinear_interpolation est ce que j'aime obtenir.
JMP a-t-il un moyen de le faire ?
De plus, je dois d'abord grouper les données X, Y par deux autres colonnes A, B.Exemple. COl A,B représente le nom du fichier et le numéro de trame. X,Y est l'emplacement d'un pixel dans le cadre et Z est la couleur du pixel.
Je souhaite interpoler la valeur Z pour les pixels manquants dans chaque image de chaque fichier.
Exemple d'ensemble de données
| Dossier | Cadre | X | Oui | Couleur |
| L'homme fourmi | 1 | 0 | 0 | 255 |
| L'homme fourmi | 1 | 5 | 5 | 195 |
| L'homme fourmi | 1 | 3 | 2 | ?? |
| L'homme fourmi | 2 | 0 | 0 | 255 |
| Homme chauve-souris | 3 | 0 | 0 | 255 |
| Homme chauve-souris | 3 | 3 | 2 | ?? |
| Homme chauve-souris | 3 | 5 | 5 | 100 |
Si je comprends bien, vous aurez besoin de quatre points (et non de deux) pour l'interpolation bilinéaire. Les colonnes de regroupement seraient traitées avec soin, donc pour un groupe, vous pourriez faire quelque chose comme :
Names Default To Here( 1 );
// Example table: Four complete observations, and one missing 'Colour' to be
// obtained by bilinear interpolation
dt = New Table( "Antman_1",
Add Rows( 5 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 5, 3, 5, 0] )
),
New Column( "Y",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [0, 5, 2, 0, 5] ),
Set Display Width( 92 )
),
New Column( "Colour",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [255, 195, ., 100, 150] )
)
);
// Using the notation at: https://en.wikipedia.org/wiki/Bilinear_interpolation
x1 = dt[1, "X"];
x2 = dt[2, "X"];
y1 = dt[1, "Y"];
y2 = dt[2, "Y"];
q11 = dt[1, "Colour"];
q21 = dt[4, "Colour"];
q12 = dt[5, "Colour"];
q22 = dt[2, "Colour"];
x = dt[3, "X"];
y = dt[3, "Y"];
// Interpolate in the X direction
r1 = Interpolate(x, x1, q11, x2, q21);
r2 = Interpolate(x, x1, q12, x2, q22);
// Interpolate in the Y direction
p = Interpolate(y, y1, r1, y2, r2);
Wait(3);
dt[3, "Colour"] = p;
Il est peu probable que ce soit la "meilleure" méthode, mais pour faire mieux, des exemples de données (dans un tableau JMP) seraient nécessaires. Vous devrez également décider comment gérer les cas extrêmes.