详解用Python在图像上应用高斯滤波器

下面就来讲解用Python在图像上应用高斯滤波器的完整攻略。

什么是高斯滤波器?

高斯滤波器是一种线性平滑滤波器,它可以对噪声信号进行平滑处理。高斯滤波器的核心思想是使用高斯函数作为卷积核,对图像中的每个像素进行加权平均处理。通过调整高斯函数的标准差,可以控制滤波器的大小。

用Python实现高斯滤波器的步骤

下面将介绍用Python实现高斯滤波器的步骤:

  1. 导入相关的库:
import cv2
import numpy as np
from matplotlib import pyplot as plt
  1. 加载图像:可以使用cv2.imread()函数加载图像。
img = cv2.imread("lena.jpg", 0)
  1. 定义高斯卷积核:
kernel_size = (5, 5)
sigma = 1.5
kernel = np.zeros(kernel_size)
sum = 0
for i in range(kernel_size[0]):
    for j in range(kernel_size[1]):
        kernel[i, j] = np.exp(-(np.square(i - kernel_size[0] // 2) + np.square(j - kernel_size[1] // 2)) / (2 * np.square(sigma)))
        sum += kernel[i, j]
kernel /= sum
  1. 对图像进行高斯滤波:
filtered_img = cv2.filter2D(img, -1, kernel)
  1. 显示原图和处理后的图像:
plt.subplot(121), plt.imshow(img, cmap="gray"), plt.title("Original")
plt.subplot(122), plt.imshow(filtered_img, cmap="gray"), plt.title("Filtered")
plt.show()

示例

下面给出两个示例。

示例1

原始图像:

详解用Python在图像上应用高斯滤波器

代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread("test1.png", 0)

kernel_size = (7, 7)
sigma = 1.5
kernel = np.zeros(kernel_size)
sum = 0
for i in range(kernel_size[0]):
    for j in range(kernel_size[1]):
        kernel[i, j] = np.exp(-(np.square(i - kernel_size[0] // 2) + np.square(j - kernel_size[1] // 2)) / (2 * np.square(sigma)))
        sum += kernel[i, j]
kernel /= sum

filtered_img = cv2.filter2D(img, -1, kernel)

plt.subplot(121), plt.imshow(img, cmap="gray"), plt.title("Original")
plt.subplot(122), plt.imshow(filtered_img, cmap="gray"), plt.title("Filtered")
plt.show()

处理后的图像:

详解用Python在图像上应用高斯滤波器

示例2

原始图像:

详解用Python在图像上应用高斯滤波器

代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread("test2.jpg")

kernel_size = (11, 11)
sigma = 2
kernel = np.zeros(kernel_size)
sum = 0
for i in range(kernel_size[0]):
    for j in range(kernel_size[1]):
        kernel[i, j] = np.exp(-(np.square(i - kernel_size[0] // 2) + np.square(j - kernel_size[1] // 2)) / (2 * np.square(sigma)))
        sum += kernel[i, j]
kernel /= sum

filtered_img = cv2.filter2D(img, -1, kernel)

plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title("Original")
plt.subplot(122), plt.imshow(cv2.cvtColor(filtered_img, cv2.COLOR_BGR2RGB)), plt.title("Filtered")
plt.show()

处理后的图像:

详解用Python在图像上应用高斯滤波器

以上就是用Python在图像上应用高斯滤波器的完整攻略和两个示例的说明,希望能对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解用Python在图像上应用高斯滤波器 - Python技术站

(1)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • python实现输入任意一个大写字母生成金字塔的示例

    实现输入任意一个大写字母生成金字塔的示例,可以通过以下代码来实现: def pyramid(letter): ascii_value = ord(letter) for i in range(1, ascii_value – 64 + 1): print(" " * (ascii_value – i – 64), end="&q…

    python 2023年5月19日
    00
  • 对python添加模块路径的三种方法总结

    当我们在编写 python 代码的时候,有时候需要引用一些在项目外的模块。这时候,我们就需要指定这些模块的路径才可以正常引用。在 python 中有多种方法可以添加模块所在路径,本文将对这三种方法进行总结和详细讲解。 方法一:使用 sys.path.append(PATH) 我们可以使用 sys.path.append(PATH) 来添加模块所在路径。其中 …

    python 2023年6月3日
    00
  • Python元组定义及集合的使用

    Python中元组和集合都是内置的数据类型,元组用于存放不可变序列,而集合则用于存放无序且唯一的数据项。下面是Python元组定义及集合的使用的详细攻略。 元组定义 Python中元组的定义和列表很相似,但是元组一旦被定义,就不能再进行修改。 语法 元组的定义使用小括号'()’,中间的元素用逗号’,’分隔,示例代码如下: t = (1, 2, 3) 元素访问…

    python 2023年5月13日
    00
  • Random 在 Python 中的使用方法

    下面我将详细讲解如何在Python中使用Random模块,包括生成随机数、洗牌、从序列中随机选择元素等常用操作。 引入Random模块 在Python中使用Random模块,首先需要引入模块: import random 随机生成数字 生成浮点数 使用random模块的random()函数可以生成[0,1)之间的随机浮点数,示例如下: import rand…

    python 2023年5月13日
    00
  • Python实现创建模块的方法详解

    Python实现创建模块的方法详解 什么是模块 在Python中,模块(Module)是指一个包含Python定义和声明的文件。模块可以用来组织代码,同时也可以用来隐藏细节和实现信息,保护数据。 创建Python模块的方法 方法一:新建.py文件 步骤一:定义模块 在新建的.py文件中,我们可以定义变量、函数、类等,例如: # mymodule.py # 定…

    python 2023年6月2日
    00
  • python os.listdir按文件存取时间顺序列出目录的实例

    下面就来详细讲解一下”Python os.listdir按文件存取时间顺序列出目录的实例”的攻略。 什么是os.listdir? os.listdir() 是 Python 中的一个函数,可以列出指定目录中的所有文件和子目录列表。返回值是一个列表,其中包括目录中的所有项目。 这些项目包括子目录、文件和隐藏文件等。 如何按文件存取时间顺序列出目录中的所有项目?…

    python 2023年6月2日
    00
  • python使用response.read()接收json数据的实例

    当Python发送http请求后,服务器返回的响应数据可能是JSON格式的,此时可以使用response.read()方法接收JSON数据。下面是详细的Python代码示例: 1. Python使用response.read()接收JSON数据示例1 import urllib.request import json url = ‘https://api.g…

    python 2023年6月3日
    00
  • 如何在python中将输入值与mysql数据库值进行比较

    【问题标题】:How to compare input value with mysql database value in python如何在python中将输入值与mysql数据库值进行比较 【发布时间】:2023-04-07 04:36:01 【问题描述】: 所以我想将输入值与我的数据库值进行比较。如果输入值与数据库的值相同,我想print(input…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部