Ejemplo n.º 1
0
    def gaussian_blur(cls, self, radius, n=3):
        if self.mode == 'RGBA':
            return cls.gaussian_blur(self.convert('RGBa'), radius,
                                     n).convert('RGBA')

        if self.mode == 'LA':
            return cls.gaussian_blur(self.convert('La'), radius,
                                     n).convert('LA')

        if not hasattr(self.im, 'box_blur'):
            # Pillow 2.6 used different radius formula
            return self._new(ImageOps.gaussian_blur(self, radius * 2.5))

        # https://www.mia.uni-saarland.de/Publications/gwosdek-ssvm11.pdf
        # [7] Box length.
        L = math.sqrt(12.0 * float(radius) * radius / n + 1.0)
        # [11] Box radius.
        l = (L - 1.0) / 2.0
        # Integer part.
        li = math.floor(l)
        # Reduce the fractional part in accordance with tests.
        a = math.e**(2.5 * (l - li) / (li + 1)) - 1
        a /= math.e**(2.5 / (li + 1)) - 1
        box_radius = li + a

        self.load()
        return self._new(self.im.box_blur(box_radius, n))
Ejemplo n.º 2
0
    def test_ops_api(self):

        i = ImageOps.gaussian_blur(im, 2.0)
        self.assertEqual(i.mode, "RGB")
        self.assertEqual(i.size, (128, 128))
        # i.save("blur.bmp")

        i = ImageOps.unsharp_mask(im, 2.0, 125, 8)
        self.assertEqual(i.mode, "RGB")
        self.assertEqual(i.size, (128, 128))
Ejemplo n.º 3
0
    def test_ops_api(self):

        i = ImageOps.gaussian_blur(im, 2.0)
        self.assertEqual(i.mode, "RGB")
        self.assertEqual(i.size, (128, 128))
        # i.save("blur.bmp")

        i = ImageOps.usm(im, 2.0, 125, 8)
        self.assertEqual(i.mode, "RGB")
        self.assertEqual(i.size, (128, 128))
Ejemplo n.º 4
0
def test_ops_api():

    i = ImageOps.gaussian_blur(im, 2.0)
    assert_equal(i.mode, "RGB")
    assert_equal(i.size, (128, 128))
    # i.save("blur.bmp")

    i = ImageOps.usm(im, 2.0, 125, 8)
    assert_equal(i.mode, "RGB")
    assert_equal(i.size, (128, 128))
Ejemplo n.º 5
0
    def test_blur_accuracy(self):

        i = snakes._new(ImageOps.gaussian_blur(snakes, .4))
        # These pixels surrounded with pixels with 255 intensity.
        # They must be very close to 255.
        for x, y, c in [(1, 0, 1), (2, 0, 1), (7, 8, 1), (8, 8, 1), (2, 9, 1),
                        (7, 3, 0), (8, 3, 0), (5, 8, 0), (5, 9, 0), (1, 3, 0),
                        (4, 3, 2), (4, 2, 2)]:
            self.assertGreaterEqual(i.im.getpixel((x, y))[c], 250)
        # Fuzzy match.
        gp = lambda x, y: i.im.getpixel((x, y))
        self.assertTrue(236 <= gp(7, 4)[0] <= 239)
        self.assertTrue(236 <= gp(7, 5)[2] <= 239)
        self.assertTrue(236 <= gp(7, 6)[2] <= 239)
        self.assertTrue(236 <= gp(7, 7)[1] <= 239)
        self.assertTrue(236 <= gp(8, 4)[0] <= 239)
        self.assertTrue(236 <= gp(8, 5)[2] <= 239)
        self.assertTrue(236 <= gp(8, 6)[2] <= 239)
        self.assertTrue(236 <= gp(8, 7)[1] <= 239)
Ejemplo n.º 6
0
    def test_blur_accuracy(self):

        i = snakes._new(ImageOps.gaussian_blur(snakes, .4))
        # These pixels surrounded with pixels with 255 intensity.
        # They must be very close to 255.
        for x, y, c in [(1, 0, 1), (2, 0, 1), (7, 8, 1), (8, 8, 1), (2, 9, 1),
                        (7, 3, 0), (8, 3, 0), (5, 8, 0), (5, 9, 0), (1, 3, 0),
                        (4, 3, 2), (4, 2, 2)]:
            self.assertGreaterEqual(i.im.getpixel((x, y))[c], 250)
        # Fuzzy match.
        gp = lambda x, y: i.im.getpixel((x, y))
        self.assertTrue(236 <= gp(7, 4)[0] <= 239)
        self.assertTrue(236 <= gp(7, 5)[2] <= 239)
        self.assertTrue(236 <= gp(7, 6)[2] <= 239)
        self.assertTrue(236 <= gp(7, 7)[1] <= 239)
        self.assertTrue(236 <= gp(8, 4)[0] <= 239)
        self.assertTrue(236 <= gp(8, 5)[2] <= 239)
        self.assertTrue(236 <= gp(8, 6)[2] <= 239)
        self.assertTrue(236 <= gp(8, 7)[1] <= 239)