Python Pillow - 浮雕图像



一般来说,浮雕用于在纸张或卡片上创建凸起的浮雕图像以达到三维效果,在 19 世纪,英国邮政服务就曾广泛使用这种工艺为邮票增添优雅气息。此过程涉及凸起图像、设计或文本的某些部分,以创建三维效果。

在图像处理和计算机图形学中,图像浮雕是一种技术,其中图像中的每个像素都会根据原始图像的明暗边界转换为高光或阴影版本。对比度低的区域将替换为灰色背景。生成的浮雕图像有效地表示原始图像中每个位置的颜色变化率。将浮雕滤镜应用于图像通常会产生类似于纸张或金属浮雕的原始图像的输出,因此得名。

Python 的 Pillow 库在 ImageFilter 模块中提供了几个标准图像滤镜,可以通过调用 image.filter() 方法对图像执行不同的滤镜操作。在本教程中,我们将了解 ImageFilter 模块提供的浮雕滤镜的工作原理。

使用 Image.filter() 方法应用 ImageFilter.EMBOSS 内核滤镜

ImageFilter.EMBOSS 滤镜是 Pillow 库当前版本中提供的内置滤镜选项之一,用于在图像中创建浮雕效果。

以下是应用图像浮雕的步骤:

  • 使用 Image.open() 函数加载输入图像。

  • 将 filter() 函数应用于加载的 Image 对象,并将 ImageFilter.EMBOSS 作为函数的参数提供。该函数将返回浮雕图像作为 PIL.Image.Image 对象。

示例

这是一个使用 Image.filter() 方法和 ImageFilter.EMBOSS 内核滤镜的示例。

from PIL import Image, ImageFilter

# Load an input image
input_image = Image.open("Images/TP logo.jpg")

# Apply an emboss effect to the image
embossed_result = input_image.filter(ImageFilter.EMBOSS)

# Display the input image
input_image.show()

# Display the modified image with the emboss effect
embossed_result.show()

输入图像

tp logo

输出图像

带有浮雕效果的输出滤镜图像:

imagefilter emboss

自定义 EMBOSS 滤镜以向浮雕图像添加深度和方位角

在 Pillow 库的源代码中,我们可以在“ImageFilter.py”模块中观察到 EMBOSS 类。此类表示浮雕滤镜,并提供了一种创建图像浮雕效果的基本方法。

# Embossing filter.
class EMBOSS(BuiltinFilter):
   name = "Emboss"
   # fmt: off
   filterargs = (3, 3), 1, 128, (
      -1, 0, 0,
      0,  1, 0,
      0,  0, 0,
   )

该滤镜通过逐像素将矩阵应用于图像来操作。矩阵包含确定应用于每个像素的变换的值。通过修改矩阵,您可以控制浮雕效果的方位角和强度。

矩阵是一个 3x3 网格,其中每个元素对应于当前像素及其周围像素。中心值表示正在处理的当前像素。该滤镜根据矩阵中它们的权重组合这些值以创建变换后的像素。您可以通过调整缩放和偏移参数来自定义滤镜,这些参数会影响效果的整体强度。

示例

以下是一个演示如何将自定义浮雕滤镜应用于图像的示例,允许您通过调整各种参数来控制浮雕效果的外观。

from PIL import Image, ImageFilter

# Open the input image 
image = Image.open('Images/TP logo.jpg')

# modify the filterargs such as scale, offset and the matrix
ImageFilter.EMBOSS.filterargs=((3, 3), 2, 150, (0, 0, 0, 0, 1, 0, -2, 0, 0))
    
# Apply an emboss effect to the image
embossed_result = image.filter(ImageFilter.EMBOSS)

# Display the input image
image.show()

# Display the modified image with the emboss effect
embossed_result.show()

输入图像

tp logo

输出图像

带有自定义浮雕效果的输出滤镜图像:

emboss effect
广告