aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/immatch/src/psfmatch/rgpbckgrd.x
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /pkg/images/immatch/src/psfmatch/rgpbckgrd.x
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'pkg/images/immatch/src/psfmatch/rgpbckgrd.x')
-rw-r--r--pkg/images/immatch/src/psfmatch/rgpbckgrd.x70
1 files changed, 70 insertions, 0 deletions
diff --git a/pkg/images/immatch/src/psfmatch/rgpbckgrd.x b/pkg/images/immatch/src/psfmatch/rgpbckgrd.x
new file mode 100644
index 00000000..1670b943
--- /dev/null
+++ b/pkg/images/immatch/src/psfmatch/rgpbckgrd.x
@@ -0,0 +1,70 @@
+include <math.h>
+include <math/gsurfit.h>
+include "psfmatch.h"
+
+# RG_PSCALE -- Compute the background offset and x and y slope.
+
+procedure rg_pscale (pm, data, npts, nx, ny, pnx, pny, offset, coeff)
+
+pointer pm #I pointer to the psfmatch structure
+real data[ARB] #I the input data
+int npts #I the number of points
+int nx, ny #I the dimensions of the original subraster
+int pnx, pny #I the dimensions of the data region
+real offset #I the input offset
+real coeff[ARB] #O the output coefficients
+
+int wxborder, wyborder
+pointer gs
+real loreject, hireject, zero
+int rg_pstati(), rg_znsum(), rg_znmedian(), rg_slope()
+real rg_pstatr()
+
+begin
+ loreject = rg_pstatr (pm, LOREJECT)
+ hireject = rg_pstatr (pm, HIREJECT)
+
+ switch (rg_pstati (pm, BACKGRD)) {
+ case PM_BNONE:
+ coeff[1] = 0.0
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case PM_BNUMBER:
+ coeff[1] = offset
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case PM_BMEAN:
+ if (rg_znsum (data, npts, zero, loreject, hireject) <= 0)
+ zero = 0.0
+ coeff[1] = zero
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case PM_BMEDIAN:
+ if (rg_znmedian (data, npts, zero, loreject, hireject) <= 0)
+ zero = 0.0
+ coeff[1] = zero
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ case PM_BSLOPE:
+ call gsinit (gs, GS_POLYNOMIAL, 2, 2, GS_XNONE, 1.0, real (nx), 1.0,
+ real (ny))
+ wxborder = (nx - pnx) / 2
+ wyborder = (ny - pny) / 2
+ if (rg_slope (gs, data, npts, nx, ny, wxborder, wyborder, loreject,
+ hireject) == ERR) {
+ coeff[1] = 0.0
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ } else {
+ call gssave (gs, coeff)
+ coeff[1] = coeff[GS_SAVECOEFF+1]
+ coeff[2] = coeff[GS_SAVECOEFF+2]
+ coeff[3] = coeff[GS_SAVECOEFF+3]
+ }
+ call gsfree (gs)
+ default:
+ coeff[1] = 0.0
+ coeff[2] = 0.0
+ coeff[3] = 0.0
+ }
+end