首页 > 编程语言 >图像滤波算法

图像滤波算法

时间:2024-08-10 13:53:16浏览次数:8  
标签:plt 滤波 image cv2 边缘 算法 图像

3.1 平滑滤波器 (Smoothing Filters)

介绍

平滑滤波器用于去除图像中的噪声,使图像更加平滑和柔和。常见的平滑滤波器包括均值滤波和高斯滤波。

原理

平滑滤波器通过对像素及其邻域像素的值进行平均或加权平均,来减少图像中的噪声。均值滤波采用简单的均值计算,而高斯滤波则使用加权平均,权重由高斯分布决定。

公式

均值滤波:

高斯滤波:

其中,G(i,j) 是高斯核。

案例: 去除图像中的噪声

使用Python和OpenCV进行平滑滤波。

在摄影和视频处理中,平滑滤波器经常用于减少图像中的噪声,使图像看起来更加平滑和自然。

代码解析
import cv2
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('image.jpg', 0)

# 进行均值滤波
mean_blurred = cv2.blur(image, (5, 5))

# 进行高斯滤波
gaussian_blurred = cv2.GaussianBlur(image, (5, 5), 0)

# 显示原始图像和滤波结果
plt.subplot(131), plt.imshow(image, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])

plt.subplot(132), plt.imshow(mean_blurred, cmap='gray')
plt.title('Mean Blurred'), plt.xticks([]), plt.yticks([])

plt.subplot(133), plt.imshow(gaussian_blurred, cmap='gray')
plt.title('Gaussian Blurred'), plt.xticks([]), plt.yticks([])

plt.show()

生活场景案例

平滑滤波器在图像去噪、图像预处理以及视频去噪中有广泛应用。例如,在监控视频中,平滑滤波器可以减少低光照条件下的噪声。

总结

平滑滤波器通过对像素及其邻域像素的平均或加权平均,减少图像中的噪声,使图像更加平滑,适用于图像的预处理和噪声消除。

3.2 边缘检测滤波器 (Edge Detection Filters)

介绍

边缘检测滤波器用于检测图像中的边缘信息。常见的边缘检测滤波器包括Sobel算子、Prewitt算子和Canny算子。

原理

边缘检测滤波器通过计算图像的梯度,检测图像中灰度值变化较大的区域,即边缘。Sobel和Prewitt算子使用不同的卷积核来计算梯度,而Canny算子则是一种多步骤的边缘检测方法。

公式

Sobel算子:

案例:图像轮廓检测

使用Python和OpenCV进行边缘检测。

边缘检测可以用于物体识别和图像分割,通过检测图像中的边缘信息来确定物体的轮廓。

代码解析
import cv2
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('image.jpg', 0)

# 进行Sobel边缘检测
sobel_x = cv2.Sobel(image, cv2.CV_64F, 1, 0, ksize=5)
sobel_y = cv2.Sobel(image, cv2.CV_64F, 0, 1, ksize=5)
sobel_edge = cv2.magnitude(sobel_x, sobel_y)

# 进行Canny边缘检测
canny_edge = cv2.Canny(image, 100, 200)

# 显示原始图像和边缘检测结果
plt.subplot(131), plt.imshow(image, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])

plt.subplot(132), plt.imshow(sobel_edge, cmap='gray')
plt.title('Sobel Edge'), plt.xticks([]), plt.yticks([])

plt.subplot(133), plt.imshow(canny_edge, cmap='gray')
plt.title('Canny Edge'), plt.xticks([]), plt.yticks([])

plt.show()

生活场景案例

边缘检测在物体识别、特征提取和图像分割中有重要应用。例如,在自动驾驶系统中,边缘检测用于识别道路边界和交通标志。

总结

边缘检测滤波器通过计算图像的梯度,检测图像中的边缘信息,能够有效识别图像中的重要特征,广泛应用于图像分析和计算机视觉领域。

3.3 中值滤波 (Median Filtering)

介绍

中值滤波是一种非线性滤波方法,用于去除图像中的脉冲噪声(例如椒盐噪声),同时保持图像的边缘信息。

原理

中值滤波通过将像素及其邻域像素的中值作为新的像素值,去除噪声并保留图像的边缘信息。由于中值滤波不涉及平均计算,因此可以更有效地保留边缘。

公式

案例: 去除图像中的椒盐噪声

使用Python和OpenCV进行中值滤波。

中值滤波器常用于去除图像中的椒盐噪声,同时保留图像的边缘信息,适用于医学图像处理等应用。

代码解析
import cv2
import matplotlib.pyplot as plt

# 读取图像
image = cv2.imread('image.jpg', 0)

# 进行中值滤波
median_blurred = cv2.medianBlur(image, 5)

# 显示原始图像和中值滤波结果
plt.subplot(121), plt.imshow(image, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])

plt.subplot(122), plt.imshow(median_blurred, cmap='gray')
plt.title('Median Blurred'), plt.xticks([]), plt.yticks([])

plt.show()

生活场景案例

中值滤波在去除图像中的椒盐噪声、医学图像处理和图像预处理中有广泛应用,特别是在需要保留边缘的情况下效果显著。

总结

中值滤波通过非线性处理去除图像中的脉冲噪声,同时保持边缘信息,使图像更加清晰和真实。它是一种有效的图像去噪工具,特别适合处理含有椒盐噪声的图像。

标签:plt,滤波,image,cv2,边缘,算法,图像
From: https://blog.csdn.net/LS_Ai/article/details/141089946

相关文章

  • 【数据结构与算法】输出二叉树中从每个叶子结点到根结点的路径 C++实现(二叉树+栈+深度
    二叉树叶子节点到根节点的路径题目描述给定一棵二叉树的后序遍历序列post[s1..t1]和中序遍历序列in[s2..t2],设计一个算法,输出二叉树中从每个叶子节点到根节点的路径。请使用栈的数据结构解决。输入格式输入包括两行:第一行为后序遍历序列post[s1..t1]。第二行为中序......
  • trie算法
    1、定义高效的存储和查找字符串集合的数据结构它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高2、构建我们可以使用数组来模拟实现Trie树。我们设计一个二维数组son[N][26]来模拟整个树的结构,而cnt[N]来记录单词个......
  • 【MATLAB源码】数学建模基础教程(2)--层次分析法(评价类算法)
    系列文章目录在最后面,各位同仁感兴趣可以看看!层次分析法引言一、层次分析法的特点二、模型的建立求解过程(1)问题的提出:实际问题的转化(2)建立层次结构模型(3)构造判断(成对比较)矩阵(4)一致性检验:三、层次分析法的优点与局限代码开源最后:总结系列文章目录引言层次分析......
  • opencv图像增强一:传统图像去噪方法整理
    一、简介:在数字图像处理领域,噪声一直是影响图像质量的重要因素。无论是拍摄过程中的环境干扰,还是传输过程中的信号失真,噪声都可能导致图像模糊、细节丢失,甚至影响后续的图像分析和应用。为了提高图像的视觉效果和使用价值,图像去噪技术应运而生,成为图像预处理环节中不可或缺......
  • 算法板子:最短路问题——包含朴素Dijkstra算法、堆优化版的Dijkstra算法、SPFA算法、Fl
    目录1.几种算法的用途2.Dijkstra算法——求源点到其他所有点的最短路径(不能处理负边权)(1)朴素Dijkstra算法——适用于稠密图(2)堆优化版的Dijkstra算法——适用于稀疏图4.SPFA算法——求源点到其他所有点的最短路径、判断是否存在负环(可以处理负边权)(1)求有负边权的图......
  • 算法板子:质数——判定质数、分解质因数、筛质数
    目录一、判定质数1.代码二、分解质因数1.质因数的概念2.代码三、筛质数——获取1~n中所有质数的个数1.合数的概念2.代码一、判定质数1.代码#include<iostream>usingnamespacestd;boolis_prime(intx){//1不是质数,需要特判if(x==1)r......
  • 回溯函数(算法)杂谈 -----可主动控制撤回逻辑处理的递归函数
    概述回溯,对接触了算法的人而言,并不陌生,其实严谨地说回溯函数就是递归函数,只不过在使用上,人们将它的一些细节抽离出来,进而演化出了所谓的回溯,在算法导论中,与其相关的被称为“回溯搜索算法”。回溯本质是递归的副产物,只要有递归调用就会有回溯。回溯法也经常和二叉树或N叉树......
  • 基于AI的图像生成技术:商汤科技的SenseMirage平台
    摘要:本文介绍了商汤科技推出的AI内容创作社区平台SenseMirage,该平台利用自研的AIGC大模型,实现了快速、高质量的图像生成技术。**关键词:**人工智能,图像生成,内容创作,风格模型1.引言随着人工智能技术的不断进步,AI在艺术创作领域的应用日益广泛。商汤科技作为AI领域的先行者,......
  • 4.3.2 图像去畸变
    4.3.2图像去畸变参考教程:相机标定(4)矫正畸变undistort()和initUndistortRectifyMap()-CSDN博客学习笔记--opencv图像去畸变_opencv畸变参数-CSDN博客下面我们将演示图像去畸变的过程,在OpenCV中提供了一个函数cv::undistort()用于对图像进行去畸变,为了加深我们的印象,我们......
  • 「代码随想录算法训练营」第三十四天 | 动态规划 part7
    198.打家劫舍题目链接:https://leetcode.cn/problems/house-robber/文章讲解:https://programmercarl.com/0198.打家劫舍.html题目难度:中等视频讲解:https://www.bilibili.com/video/BV1Te411N7SX题目状态:有点思路但不全。思路:这次的dp[i]数组表示在到第i个房间中时最多的......