Code: Select all
program CalibrateFromData;
const
NLAYERS = 100; // number of layers
NX = 10; // size of image
NY = 10; // (NX by NY pixels)
var
CalData : TDoubleArray;
spec : TDoubleArray;
i, j, il : integer;
begin
CreateEmptyCube (NX,NY,NLAYERS,1,ctUvVis,'N.N.','artificial dataset');
setlength (spec, NLAYERS); // artificial spectrum
for i:=1 to NX do
for j:=1 to NY do
begin // fill HSI with artificial spectra
for il:=1 to NLAYERS do
spec[il-1] := il*cos(il*0.1)*sin(i)*sin(j);
SetSpectrum (i,j,1,1,spec);
end;
SetLength (CalData, NLAYERS); // create the artificial wavelength data
for i:=1 to NLAYERS do
CalData[i-1] := 10*i + 0.003*sqr(i); // almost linear, with small square contribution
MData.CalibratefromData (dimL, 1, NLAYERS, 2, MAXCALIBPOLYORDER, CalData);
MData.RecalcCalibPieces (dimL);
end.