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))
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))
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))
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))
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)