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

yizhihongxing

下面就来讲解用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技术站

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

相关文章

  • python实现电子书翻页小程序

    下面我将为您详细讲解如何实现Python电子书翻页小程序。 简介 电子书是随着电子技术发展而诞生的一种新型阅读方式,电子书常常需要进行翻页、调整字体大小等操作。在Python中,我们可以通过一些第三方库来实现电子书翻页小程序,本次攻略中,我们将介绍使用PyMuPDF实现电子书翻页的方法。 准备工作 在编写Python程序之前,需要进行以下准备工作: 安装Py…

    python 2023年5月23日
    00
  • Python 爬虫的工具列表大全

    下面我将为您详细讲解“Python 爬虫的工具列表大全”的完整攻略。 标题 首先,我们来到这篇文章的标题部分。在Markdown中,标题的表示方法是使用“#”符号。文章的标题应该使用一级标题,即在标题文本下面加上一个“#”。如下: # Python 爬虫的工具列表大全 该标题使用了一级标题的表示方法,即一个“#”符号后面直接加上标题文本,不需要其他符号或空格…

    python 2023年5月14日
    00
  • python mysql中in参数化说明

    当我们使用Python中的MySQL数据库操作时,有时需要传入多个参数,此时我们可以使用in语句来替代多个And或Or语句,提高代码的可读性。但如果使用字符串拼接的方式传参会增加SQL注入的风险,因此需要使用参数化查询。 下面就是一个Python MySQL中in参数化的完整攻略。 准备工作 首先需要安装Python中的MySQL库,可以使用命令pip in…

    python 2023年5月13日
    00
  • 基于Python编写简易文字语音转换器

    关于“基于Python编写简易文字语音转换器”的完整攻略,我将从以下几个方面进行讲解: 准备工作 安装Pyttsx3和PyPDF2包 文本转换成语音转换 PDF文件转换成语音转换 示例说明 1. 准备工作 在开始编写转换器之前,我们需要安装Python环境。可以在官网下载安装包,根据系统版本进行安装。 2. 安装Pyttsx3和PyPDF2包 我们需要安装两…

    python 2023年5月19日
    00
  • python3实现mysql导出excel的方法

    下面为大家详细讲解 Python3 实现 MySQL 导出 Excel 的方法。 环境准备 Python3 环境 (建议使用 Python3.6 及以上版本); 第三方库 pymysql、xlwt、xlsxwriter、xlrd(可在命令行通过 pip 工具进行安装); MySQL 数据库。(可通过 官网 下载安装) 导出 Excel 实现 连接 MySQL…

    python 2023年5月13日
    00
  • Python读取csv文件分隔符设置方法

    当我们使用Python读取csv文件时,如果该文件的列与列之间的分隔符不是默认的逗号分隔符,那么就需要设置正确的分隔符来读取文件。 下面将为大家详细讲解Python读取csv文件分隔符设置方法的完整攻略,包含以下两个部分: 1.使用csv模块读取csv文件 2.使用pandas库读取csv文件 1.使用csv模块读取csv文件 在Python中,可以使用内置…

    python 2023年6月3日
    00
  • Python使用re模块验证危险字符

    以下是详细讲解“Python使用re模块验证危险字符”的完整攻略,包括危险字符的介绍、正则表达式的编写、代码实现、两个示例说明和注意事项。 危险字符介绍 在Web开发中,用户输入的数据可能包含一些危险字符,如SQL注入、XSS攻击等。为了防止这些攻击,我们需要对用户输入的数据进行验证和过滤。 下面是一些常见危险字符: SQL注入:’、”、;、–等。 XSS…

    python 2023年5月14日
    00
  • Python Pillow Image.save 保存为jpg图片压缩问题

    Python Pillow是一个常用的图像处理库,它支持将图片保存到本地文件中。但是,在保存为JPEG格式的时候,用户可能会遇到图片过大的问题。所以,本文将介绍如何通过Pillow对JPEG格式的图片进行压缩,以及一些压缩的方法和注意事项。 1. 安装Pillow 可以使用pip命令安装Pillow库。 pip install Pillow 2. 保存为JP…

    python 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部