opencv 处理图像去噪的几种方法学习

简介: OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例:均值滤波:使用像素邻域的灰度均值代替该像素的值。

OpenCV 提供了多种图像去噪的方法,以下是一些常见的去噪技术以及相应的 Python 代码示例:

均值滤波:使用像素邻域的灰度均值代替该像素的值。

import cv2

import numpy as np

import matplotlib.pyplot as plt

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

result = cv2.blur(img, (5, 5))  # 传入读取的图像和核尺寸

cv2.imshow("Noise", img)

cv2.imshow("Mean Filter", result)

cv2.waitKey(0)

高斯滤波:适用于消除高斯噪声,通过加权平均邻域内的像素值来计算中心像素的新值。

result = cv2.GaussianBlur(img, (5, 5), 0)  # 高斯核尺寸和标准差

cv2.imshow("Gaussian Filter", result)

中值滤波:选择一个含有奇数点的窗口,取窗口中像素灰度值的中位数来代替中心像素的值,有效去除椒盐噪声。

result = cv2.medianBlur(img, 5)  # 核大小必须是大于1的奇数

cv2.imshow("Median Filter", result)

方框滤波:类似于均值滤波,但可以选择是否对结果进行归一化。

result = cv2.boxFilter(img, -1, (5, 5), normalize=True)  # normalize=True 进行归一化

cv2.imshow("Box Filter", result)

双边滤波:在滤波时同时考虑空间邻近度与像素值相似度,保留边缘信息。

result = cv2.bilateralFilter(img, 9, 75, 75)  # 直径、颜色空间的标准差和坐标空间的标准差

cv2.imshow("Bilateral Filter", result)

非局部均值去噪(NLM):使用图像中的所有像素进行去噪,根据相似度加权平均。

dst = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)

plt.subplot(121),plt.imshow(img)

plt.subplot(122),plt.imshow(dst)

plt.show()

高通滤波:保留高频部分,常用于边缘增强。

x = cv2.Sobel(img, cv2.CV_16S, 1, 0)

y = cv2.Sobel(img, cv2.CV_16S, 0, 1)

absx = cv2.convertScaleAbs(x)

absy = cv2.convertScaleAbs(y)

dist = cv2.addWeighted(absx, 0.5, absy, 0.5, 0)

cv2.imshow('High Pass Filter', dist)

请注意,上述代码中的 img 变量需要先加载一个图像,cv2.imread 函数用于读取图像,cv2.imshow 用于显示图像,cv2.waitKey(0) 用于等待用户按键操作,plt.show() 用于显示 Matplotlib 图像。在实际使用中,需要根据具体情况调整核尺寸、标准差等参数。

相关文章
|
2月前
|
存储 资源调度 算法
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
127 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
128 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
94 1
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
24 2
|
23天前
|
算法 计算机视觉
如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解
如何判断点在多边形内部:OpenCV--cv2.pointPolygonTest()方法详解
|
29天前
|
机器学习/深度学习 开发框架 TensorFlow
### 如何系统化学习OpenCV4
### 如何系统化学习OpenCV4
25 0
|
2月前
|
算法 计算机视觉 Python
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
|
2月前
|
存储 计算机视觉
OpenCV—学习基本绘图
OpenCV—学习基本绘图
|
2月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
【2月更文挑战第22天】本文介绍基于Python的tensorflow库,将tensorflow与keras训练好的SavedModel格式神经网络模型转换为frozen graph格式,从而可以用OpenCV库在C++等其他语言中将其打开的方法~
OpenCV读取tensorflow 2.X模型的方法:将SavedModel转为frozen graph
|
2月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
131 0