Esempio n. 1
0
    def makeSpatialKernel(self, order):
        basicGaussian1 = afwMath.GaussianFunction2D(2., 2., 0.)
        basicKernel1 = afwMath.AnalyticKernel(self.ksize, self.ksize,
                                              basicGaussian1)

        basicGaussian2 = afwMath.GaussianFunction2D(5., 3., 0.5 * num.pi)
        basicKernel2 = afwMath.AnalyticKernel(self.ksize, self.ksize,
                                              basicGaussian2)

        basisList = []
        basisList.append(basicKernel1)
        basisList.append(basicKernel2)
        basisList = ipDiffim.renormalizeKernelList(basisList)

        spatialKernelFunction = afwMath.PolynomialFunction2D(order)
        spatialKernel = afwMath.LinearCombinationKernel(
            basisList, spatialKernelFunction)
        kCoeffs = [
            [
                0.0 for x in range(1,
                                   spatialKernelFunction.getNParameters() + 1)
            ],
            [
                0.01 * x
                for x in range(1,
                               spatialKernelFunction.getNParameters() + 1)
            ]
        ]
        kCoeffs[0][
            0] = 1.0  # it does not vary spatially; constant across image
        spatialKernel.setSpatialParameters(kCoeffs)
        return spatialKernel
 def makeSpatialKernel(self, order):
     basicGaussian1 = afwMath.GaussianFunction2D(2., 2., 0.)
     basicKernel1   = afwMath.AnalyticKernel(self.ksize, self.ksize, basicGaussian1)
     
     basicGaussian2 = afwMath.GaussianFunction2D(5., 3., 0.5 * num.pi)
     basicKernel2   = afwMath.AnalyticKernel(self.ksize, self.ksize, basicGaussian2)
     
     basisList = afwMath.KernelList()
     basisList.append(basicKernel1)
     basisList.append(basicKernel2)
     basisList = afwMath.KernelList(ipDiffim.renormalizeKernelList(basisList))
     
     spatialKernelFunction = afwMath.PolynomialFunction2D(order)
     spatialKernel = afwMath.LinearCombinationKernel(basisList, spatialKernelFunction)
     kCoeffs = [[0.0      for x in range(1,spatialKernelFunction.getNParameters()+1)],
                [0.01 * x for x in range(1,spatialKernelFunction.getNParameters()+1)]]
     kCoeffs[0][0] = 1.0  # it does not vary spatially; constant across image
     spatialKernel.setSpatialParameters(kCoeffs)
     return spatialKernel
    def testRenormalize(self):
        # inputs
        gauss1 = afwMath.GaussianFunction2D(2, 2)
        gauss2 = afwMath.GaussianFunction2D(3, 4)
        gauss3 = afwMath.GaussianFunction2D(0.2, 0.25)
        gaussKernel1 = afwMath.AnalyticKernel(self.kSize, self.kSize, gauss1)
        gaussKernel2 = afwMath.AnalyticKernel(self.kSize, self.kSize, gauss2)
        gaussKernel3 = afwMath.AnalyticKernel(self.kSize, self.kSize, gauss3)
        kimage1 = afwImage.ImageD(gaussKernel1.getDimensions())
        ksum1 = gaussKernel1.computeImage(kimage1, False)
        kimage2 = afwImage.ImageD(gaussKernel2.getDimensions())
        ksum2 = gaussKernel2.computeImage(kimage2, False)
        kimage3 = afwImage.ImageD(gaussKernel3.getDimensions())
        ksum3 = gaussKernel3.computeImage(kimage3, False)
        self.assertNotEqual(ksum1, 1.)
        self.assertNotEqual(ksum2, 1.)
        self.assertNotEqual(ksum3, 1.)
        # no constraints on first kernels norm
        self.assertNotEqual(num.sum(num.ravel(kimage2.getArray())**2), 1.)
        self.assertNotEqual(num.sum(num.ravel(kimage3.getArray())**2), 1.)
        basisListIn = []
        basisListIn.append(gaussKernel1)
        basisListIn.append(gaussKernel2)
        basisListIn.append(gaussKernel3)

        # outputs
        basisListOut = ipDiffim.renormalizeKernelList(basisListIn)
        gaussKernel1 = basisListOut[0]
        gaussKernel2 = basisListOut[1]
        gaussKernel3 = basisListOut[2]
        ksum1 = gaussKernel1.computeImage(kimage1, False)
        ksum2 = gaussKernel2.computeImage(kimage2, False)
        ksum3 = gaussKernel3.computeImage(kimage3, False)
        self.assertAlmostEqual(ksum1, 1.)
        self.assertAlmostEqual(ksum2, 0.)
        self.assertAlmostEqual(ksum3, 0.)
        # no constraints on first kernels norm
        self.assertAlmostEqual(num.sum(num.ravel(kimage2.getArray())**2), 1.)
        self.assertAlmostEqual(num.sum(num.ravel(kimage3.getArray())**2), 1.)
    def testRenormalize(self):
        # inputs
        gauss1 = afwMath.GaussianFunction2D(2, 2)
        gauss2 = afwMath.GaussianFunction2D(3, 4)
        gauss3 = afwMath.GaussianFunction2D(0.2, 0.25)
        gaussKernel1 = afwMath.AnalyticKernel(self.kSize, self.kSize, gauss1)
        gaussKernel2 = afwMath.AnalyticKernel(self.kSize, self.kSize, gauss2)
        gaussKernel3 = afwMath.AnalyticKernel(self.kSize, self.kSize, gauss3)
        kimage1 = afwImage.ImageD(gaussKernel1.getDimensions())
        ksum1 = gaussKernel1.computeImage(kimage1, False)
        kimage2 = afwImage.ImageD(gaussKernel2.getDimensions())
        ksum2 = gaussKernel2.computeImage(kimage2, False)
        kimage3 = afwImage.ImageD(gaussKernel3.getDimensions())
        ksum3 = gaussKernel3.computeImage(kimage3, False)
        self.assertNotEqual(ksum1, 1.)
        self.assertNotEqual(ksum2, 1.)
        self.assertNotEqual(ksum3, 1.)
        # no constraints on first kernels norm
        self.assertNotEqual(num.sum(num.ravel(kimage2.getArray())**2), 1.)
        self.assertNotEqual(num.sum(num.ravel(kimage3.getArray())**2), 1.)
        basisListIn = []
        basisListIn.append(gaussKernel1)
        basisListIn.append(gaussKernel2)
        basisListIn.append(gaussKernel3)

        # outputs
        basisListOut = ipDiffim.renormalizeKernelList(basisListIn)
        gaussKernel1 = basisListOut[0]
        gaussKernel2 = basisListOut[1]
        gaussKernel3 = basisListOut[2]
        ksum1 = gaussKernel1.computeImage(kimage1, False)
        ksum2 = gaussKernel2.computeImage(kimage2, False)
        ksum3 = gaussKernel3.computeImage(kimage3, False)
        self.assertAlmostEqual(ksum1, 1.)
        self.assertAlmostEqual(ksum2, 0.)
        self.assertAlmostEqual(ksum3, 0.)
        # no constraints on first kernels norm
        self.assertAlmostEqual(num.sum(num.ravel(kimage2.getArray())**2), 1.)
        self.assertAlmostEqual(num.sum(num.ravel(kimage3.getArray())**2), 1.)