next up previous contents
Next: Tiedostonkäsittelijä Up: Toiminnot Previous: Tyhjien reuna-alueiden poisto

Interpolointi

Interpolointifunktioista toteutetaan sekä reaaliset että kompleksiset versiot.

Reaaliversiot:

real interpolate_nn_real(image_real *in, point p);

real interpolate_linear_real(image_real *in, point p);

real interpolate_nn_around_X_real(image_real *in,
                            double y, double z, int i);

real interpolate_nn_around_Y_real(image_real *in,
                            double z, double x, int j);

real interpolate_nn_around_Z_real(image_real *in,
                            double x, double y, int k);

real interpolate_linear_around_X_real(image_real *in,
                                double y, double z, int i);

real interpolate_linear_around_Y_real(image_real *in,
                                double z, double x, int j);

real interpolate_linear_around_Z_real(image_real *in,
                                double x, double y, int k);

real interpolate_sinc_around_X_real(image_real *in,
                              double y, double z, int i);

real interpolate_sinc_around_Y_real(image_real *in,
                              double z, double x, int j);

real interpolate_sinc_around_Z_real(image_real *in,
                              double x, double y, int k);
Imaginääriversiot:
complex interpolate_nn_complex(image_complex *in, point p);

complex interpolate_linear_complex(image_complex *in, point p);

complex interpolate_nn_around_X_complex(image_complex *in,
                                  double y, double z, int i);

complex interpolate_nn_around_Y_complex(image_complex *in,
                                  double z, double x, int j);

complex interpolate_nn_around_Z_complex(image_complex *in,
                                  double x, double y, int k);

complex interpolate_linear_around_X_complex(image_complex *in,
                                      double y, double z, int i);

complex interpolate_linear_around_Y_complex(image_complex *in,
                                      double z, double x, int j);

complex interpolate_linear_around_Z_complex(image_complex *in,
                                      double x, double y, int k);

complex interpolate_sinc_around_X_complex(image_complex *in,
                                    double y, double z, int i);

complex interpolate_sinc_around_Y_complex(image_complex *in,
                                    double z, double x, int j);

complex interpolate_sinc_around_Z_complex(image_complex *in,
                                    double x, double y, int k);
Interpolointifunktioiden reaali- ja kompleksiversiot toimivat analogisesti, joten seuraavassa rajoitutaan tarkastelemaan ainoastaan reaalista tapausta. Interpolointialgoritmin toimintaa on käsitelty tarkemmin luvussa 7.1.

Funktio interpolate_nn_real palauttaa sen kuvan in pisteen intensiteetin, joka on pisteen p lähin naapuri. Jos pisteen p lähin naapuri on kuvan ulkopuolella, palautetaan 0.

Funktio interpolate_linear_real palauttaa lineaarisen interpoloinnin mukaisen approksimaation pisteen p intensiteetille. Funktio interpolate_sinc_real puolestaan käyttää interpolointiin sinc-interpolointimenetelmää.

Edellä mainitut funktiot interpoloivat kolmiulotteisesti. Projisoinnissa tarvitaan myös kaksiulotteista interpolointia, jota varten kustakin interpolointifunktiosta interpolate_I_real on myös versiot interpolate_I_around_X_real, interpolate_I_around_Y_real ja interpolate_I_around_Z_real. Nämä funktiot interpoloivat kaksiulotteisesti interpolointimenetelmää I käyttäen tasojen yz, zx ja xy suuntaisissa pisteen p sisältävissä tasoissa.

Kompleksi-interpolointifunktiot toimivat samoin kuin reaaliset vastineensa, paitsi että ne huomioivat erikseen kompleksikuvan reaali- ja imaginääriosat.



T Valtteri Rahkonen
2000-04-02