Index: trunk/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtraction.c	(revision 14521)
+++ trunk/psModules/src/imcombine/pmSubtraction.c	(revision 14524)
@@ -4,6 +4,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.38 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-08-16 00:32:43 $
+ *  @version $Revision: 1.39 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-08-16 02:57:34 $
  *
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
@@ -644,17 +644,10 @@
 
 
-int pmSubtractionRejectStamps(psArray *stamps, const psImage *refImage, psImage *inImage,
-                              psImage *subMask, const psVector *solution, int footprint, float sigmaRej,
-                              const pmSubtractionKernels *kernels)
+int pmSubtractionRejectStamps(psArray *stamps, psImage *subMask, const psVector *solution,
+                              int footprint, float sigmaRej, const pmSubtractionKernels *kernels)
 {
     PS_ASSERT_ARRAY_NON_NULL(stamps, -1);
-    PS_ASSERT_IMAGE_NON_EMPTY(refImage, -1);
-    PS_ASSERT_IMAGE_TYPE(refImage, PS_TYPE_F32, -1);
-    PS_ASSERT_IMAGE_NON_EMPTY(inImage, -1);
-    PS_ASSERT_IMAGE_TYPE(inImage, PS_TYPE_F32, -1);
-    PS_ASSERT_IMAGES_SIZE_EQUAL(refImage, inImage, -1);
     PS_ASSERT_IMAGE_NON_EMPTY(subMask, -1);
     PS_ASSERT_IMAGE_TYPE(subMask, PS_TYPE_MASK, -1);
-    PS_ASSERT_IMAGES_SIZE_EQUAL(refImage, subMask, -1);
     PS_ASSERT_VECTOR_NON_NULL(solution, -1);
     PS_ASSERT_VECTOR_TYPE(solution, PS_TYPE_F64, -1);
@@ -670,8 +663,6 @@
     int numStamps = 0;                  // Number of used stamps
     {
-        int numCols = refImage->numCols, numRows = refImage->numRows; // Image dimensions
         psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN); // Statistics
-        psImage *convolvedStamp = psImageAlloc(2 * footprint + 1, 2 * footprint + 1,
-                                               PS_TYPE_F32); // Convolved image of stamp
+        psKernel *convolution = psKernelAlloc(-footprint, footprint, -footprint, footprint); // Convolution
         psKernel *kernelImage = NULL;       // The kernel, with which to convolve the stamps
         float background = solution->data.F64[solution->n-1]; // The difference in background
@@ -683,30 +674,34 @@
                 continue;
             }
-            int xStamp = stamp->x, yStamp = stamp->y; // Coordinates of stamp
-
-            float xNorm = 2.0 * (float)(stamp->x - numCols/2.0) / (float)numCols; // Normalised x coord
-            float yNorm = 2.0 * (float)(stamp->y - numRows/2.0) / (float)numRows; // Normalised y coord
-            psImage *polyValues = spatialPolyValues(kernels->spatialOrder, xNorm, yNorm); // Polynomial terms
+
+            psImage *polyValues = spatialPolyValues(kernels->spatialOrder, stamp->xNorm,
+                                                    stamp->yNorm); // Polynomial terms
+
+            psKernel *reference = stamp->reference; // Reference postage stamp
 
             kernelImage = solvedKernel(kernelImage, solution, kernels, polyValues, false);
-            for (int y = yStamp - footprint, j = 0; y <= yStamp + footprint; y++, j++) {
-                for (int x = xStamp - footprint, i = 0; x <= xStamp + footprint; x++, i++) {
-                    convolvedStamp->data.F32[j][i] = background;
+            for (int y = - footprint; y <= footprint; y++) {
+                for (int x = - footprint; x <= footprint; x++) {
+                    convolution->kernel[y][x] = background;
                     for (int v = -size; v <= size; v++) {
                         for (int u = -size; u <= size; u++) {
-                            convolvedStamp->data.F32[j][i] += kernelImage->kernel[v][u] *
-                                refImage->data.F32[y + v][x + u];
+                            convolution->kernel[y][x] += kernelImage->kernel[v][u] *
+                                reference->kernel[y + v][x + u];
                         }
                     }
                 }
             }
-
             psFree(polyValues);
 
-            psRegion region = psRegionSet(xStamp - footprint, xStamp + footprint + 1,
-                                          yStamp - footprint, yStamp + footprint + 1); // Region of interest
-            psImage *inStamp = psImageSubset(inImage, region); // Image of stamp
-            assert(inStamp->numCols == convolvedStamp->numCols &&
-                   inStamp->numRows == convolvedStamp->numRows);
+            psImage *convolvedStamp = convolution->image; // Image of the convolution
+            psImage *input = stamp->input->image; // Input image postage stamp
+
+            // Region of interest
+            psRegion region = psRegionSet(input->col0 + size, input->col0 + size + 2 * footprint + 1,
+                                          input->row0 + size, input->row0 + size + 2 * footprint + 1);
+
+            psImage *inStamp = psImageSubset(stamp->input->image, region); // Image of stamp
+            assert(convolvedStamp->numCols == inStamp->numCols &&
+                   convolvedStamp->numRows == inStamp->numRows);
             (void)psBinaryOp(convolvedStamp, inStamp, "-", convolvedStamp);
             (void)psBinaryOp(convolvedStamp, convolvedStamp, "*", convolvedStamp);
@@ -717,5 +712,5 @@
                         "Unable to calculate statistics on normalised residual image of stamp.");
                 psFree(deviations);
-                psFree(convolvedStamp);
+                psFree(convolution);
                 psFree(stats);
                 return -1;
@@ -729,5 +724,5 @@
 
         psFree(kernelImage);
-        psFree(convolvedStamp);
+        psFree(convolution);
         psFree(stats);
     }
Index: trunk/psModules/src/imcombine/pmSubtraction.h
===================================================================
--- trunk/psModules/src/imcombine/pmSubtraction.h	(revision 14521)
+++ trunk/psModules/src/imcombine/pmSubtraction.h	(revision 14524)
@@ -6,6 +6,6 @@
  * @author GLG, MHPCC
  *
- * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-08-16 00:32:43 $
+ * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-08-16 02:57:34 $
  * Copyright 2004-207 Institute for Astronomy, University of Hawaii
  */
@@ -51,6 +51,4 @@
 /// Reject stamps
 int pmSubtractionRejectStamps(psArray *stamps, ///< Array of stamps to check for rejection
-                              const psImage *refImage, ///< Reference image
-                              psImage *inImage, ///< Input image
                               psImage *subMask, ///< Subtraction mask
                               const psVector *solution, ///< Solution vector
