コード例 #1
0
ファイル: test_image.py プロジェクト: HyperSuprime-Cam/afw
    def testImagesOverlap(self):
        dim = lsst.geom.Extent2I(10, 8)
        # a set of bounding boxes, some of which overlap each other
        # and some of which do not, and include the full image bounding box
        bboxes = (
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), dim),
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), lsst.geom.Extent2I(3, 3)),
            lsst.geom.Box2I(lsst.geom.Point2I(2, 2), lsst.geom.Extent2I(6, 4)),
            lsst.geom.Box2I(lsst.geom.Point2I(4, 4), lsst.geom.Extent2I(6, 4)),
        )

        imageClasses = (afwImage.ImageF, afwImage.ImageD, afwImage.ImageI, afwImage.Mask)

        for ImageClass1, ImageClass2 in itertools.product(imageClasses, imageClasses):
            with self.subTest(ImageClass1=ImageClass1, ImageClass2=ImageClass2):
                image1 = ImageClass1(dim)
                self.assertTrue(afwImage.imagesOverlap(image1, image1))

                image2 = ImageClass2(dim)
                self.assertFalse(afwImage.imagesOverlap(image1, image2))
                self.assertFalse(afwImage.imagesOverlap(image2, image1))

                for bboxa, bboxb in itertools.product(bboxes, bboxes):
                    shouldOverlap = bboxa.overlaps(bboxb)
                    with self.subTest(bboxa=bboxa, bboxb=bboxb):
                        subim1a = ImageClass1(image1, bboxa)
                        subim1b = ImageClass1(image1, bboxb)
                        self.assertEqual(afwImage.imagesOverlap(subim1a, subim1b), shouldOverlap)
                        self.assertEqual(afwImage.imagesOverlap(subim1b, subim1a), shouldOverlap)

                        subim2b = ImageClass2(image2, bboxb)
                        self.assertFalse(afwImage.imagesOverlap(subim1a, subim2b))
                        self.assertFalse(afwImage.imagesOverlap(subim2b, subim1a))
コード例 #2
0
    def testImagesOverlap(self):
        dim = lsst.geom.Extent2I(10, 8)
        # a set of bounding boxes, some of which overlap each other
        # and some of which do not, and include the full image bounding box
        bboxes = (
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), dim),
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), lsst.geom.Extent2I(3, 3)),
            lsst.geom.Box2I(lsst.geom.Point2I(2, 2), lsst.geom.Extent2I(6, 4)),
            lsst.geom.Box2I(lsst.geom.Point2I(4, 4), lsst.geom.Extent2I(6, 4)),
        )

        imageClasses = (afwImage.ImageF, afwImage.ImageD, afwImage.ImageI, afwImage.Mask)

        for ImageClass1, ImageClass2 in itertools.product(imageClasses, imageClasses):
            with self.subTest(ImageClass1=ImageClass1, ImageClass2=ImageClass2):
                image1 = ImageClass1(dim)
                self.assertTrue(afwImage.imagesOverlap(image1, image1))

                image2 = ImageClass2(dim)
                self.assertFalse(afwImage.imagesOverlap(image1, image2))
                self.assertFalse(afwImage.imagesOverlap(image2, image1))

                for bboxa, bboxb in itertools.product(bboxes, bboxes):
                    shouldOverlap = bboxa.overlaps(bboxb)
                    with self.subTest(bboxa=bboxa, bboxb=bboxb):
                        subim1a = ImageClass1(image1, bboxa)
                        subim1b = ImageClass1(image1, bboxb)
                        self.assertEqual(afwImage.imagesOverlap(subim1a, subim1b), shouldOverlap)
                        self.assertEqual(afwImage.imagesOverlap(subim1b, subim1a), shouldOverlap)

                        subim2b = ImageClass2(image2, bboxb)
                        self.assertFalse(afwImage.imagesOverlap(subim1a, subim2b))
                        self.assertFalse(afwImage.imagesOverlap(subim2b, subim1a))
コード例 #3
0
    def testImagesOverlap(self):
        # make pairs of image, variance and mask planes
        # using the same dimensions for each so we can mix and match
        # while making masked images
        dim = lsst.geom.Extent2I(10, 8)
        # a set of bounding boxes, some of which overlap each other
        # and some of which do not, and include the full image bounding box
        bboxes = (
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), dim),
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), lsst.geom.Extent2I(3, 3)),
            lsst.geom.Box2I(lsst.geom.Point2I(2, 2), lsst.geom.Extent2I(6, 4)),
            lsst.geom.Box2I(lsst.geom.Point2I(4, 4), lsst.geom.Extent2I(6, 4)),
        )
        masks = [afwImage.Mask(dim), afwImage.Mask(dim)]
        variances = [afwImage.ImageF(dim), afwImage.ImageF(dim)]
        imageClasses = (afwImage.ImageF, afwImage.ImageD, afwImage.ImageI, afwImage.ImageU)
        for ImageClass1, ImageClass2 in itertools.product(imageClasses, imageClasses):
            images = [ImageClass1(dim), ImageClass2(dim)]
            for image1, mask1, variance1, image2, mask2, variance2 in itertools.product(
                    images, masks, variances, images, masks, variances):
                with self.subTest(ImageClass1=ImageClass1, ImageClass2=ImageClass2,
                                  image1=image1, mask1=mask1, variance1=variance1,
                                  image2=image2, mask2=mask2, variance2=variance2):
                    shouldOverlap = (image1 is image2) or (mask1 is mask2) or (variance1 is variance2)

                    mi1 = afwImage.makeMaskedImage(image=image1, mask=mask1, variance=variance1)
                    mi2 = afwImage.makeMaskedImage(image=image2, mask=mask2, variance=variance2)
                    self.assertEqual(afwImage.imagesOverlap(mi1, mi2), shouldOverlap)
                    self.assertEqual(afwImage.imagesOverlap(mi2, mi1), shouldOverlap)

                    for bbox1, bbox2 in itertools.product(bboxes, bboxes):
                        with self.subTest(bbox1=bbox1, bbox2=bbox2):
                            subMi1 = afwImage.makeMaskedImage(image=type(image1)(image1, bbox1),
                                                              mask=afwImage.Mask(mask1, bbox1),
                                                              variance=afwImage.ImageF(variance1, bbox1))
                            subMi2 = afwImage.makeMaskedImage(image=type(image2)(image2, bbox2),
                                                              mask=afwImage.Mask(mask2, bbox2),
                                                              variance=afwImage.ImageF(variance2, bbox2))
                            subregionsShouldOverlap = shouldOverlap and bbox1.overlaps(bbox2)
                            self.assertEqual(afwImage.imagesOverlap(subMi1, subMi2), subregionsShouldOverlap)
                            self.assertEqual(afwImage.imagesOverlap(subMi2, subMi1), subregionsShouldOverlap)
コード例 #4
0
    def testImagesOverlap(self):
        # make pairs of image, variance and mask planes
        # using the same dimensions for each so we can mix and match
        # while making masked images
        dim = lsst.geom.Extent2I(10, 8)
        # a set of bounding boxes, some of which overlap each other
        # and some of which do not, and include the full image bounding box
        bboxes = (
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), dim),
            lsst.geom.Box2I(lsst.geom.Point2I(0, 0), lsst.geom.Extent2I(3, 3)),
            lsst.geom.Box2I(lsst.geom.Point2I(2, 2), lsst.geom.Extent2I(6, 4)),
            lsst.geom.Box2I(lsst.geom.Point2I(4, 4), lsst.geom.Extent2I(6, 4)),
        )
        masks = [afwImage.Mask(dim), afwImage.Mask(dim)]
        variances = [afwImage.ImageF(dim), afwImage.ImageF(dim)]
        imageClasses = (afwImage.ImageF, afwImage.ImageD, afwImage.ImageI, afwImage.ImageU)
        for ImageClass1, ImageClass2 in itertools.product(imageClasses, imageClasses):
            images = [ImageClass1(dim), ImageClass2(dim)]
            for image1, mask1, variance1, image2, mask2, variance2 in itertools.product(
                    images, masks, variances, images, masks, variances):
                with self.subTest(ImageClass1=ImageClass1, ImageClass2=ImageClass2,
                                  image1=image1, mask1=mask1, variance1=variance1,
                                  image2=image2, mask2=mask2, variance2=variance2):
                    shouldOverlap = (image1 is image2) or (mask1 is mask2) or (variance1 is variance2)

                    mi1 = afwImage.makeMaskedImage(image=image1, mask=mask1, variance=variance1)
                    mi2 = afwImage.makeMaskedImage(image=image2, mask=mask2, variance=variance2)
                    self.assertEqual(afwImage.imagesOverlap(mi1, mi2), shouldOverlap)
                    self.assertEqual(afwImage.imagesOverlap(mi2, mi1), shouldOverlap)

                    for bbox1, bbox2 in itertools.product(bboxes, bboxes):
                        with self.subTest(bbox1=bbox1, bbox2=bbox2):
                            subMi1 = afwImage.makeMaskedImage(image=type(image1)(image1, bbox1),
                                                              mask=afwImage.Mask(mask1, bbox1),
                                                              variance=afwImage.ImageF(variance1, bbox1))
                            subMi2 = afwImage.makeMaskedImage(image=type(image2)(image2, bbox2),
                                                              mask=afwImage.Mask(mask2, bbox2),
                                                              variance=afwImage.ImageF(variance2, bbox2))
                            subregionsShouldOverlap = shouldOverlap and bbox1.overlaps(bbox2)
                            self.assertEqual(afwImage.imagesOverlap(subMi1, subMi2), subregionsShouldOverlap)
                            self.assertEqual(afwImage.imagesOverlap(subMi2, subMi1), subregionsShouldOverlap)