首页 > 其他分享 >opencv 处理图像去噪的几种方法

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

时间:2024-07-03 21:26:40浏览次数:21  
标签:图像去噪 plt img imshow cv2 几种 opencv result 像素

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

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

    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)
    
  2. 高斯滤波:适用于消除高斯噪声,通过加权平均邻域内的像素值来计算中心像素的新值。

    result = cv2.GaussianBlur(img, (5, 5), 0)  # 高斯核尺寸和标准差
    cv2.imshow("Gaussian Filter", result)
    
  3. 中值滤波:选择一个含有奇数点的窗口,取窗口中像素灰度值的中位数来代替中心像素的值,有效去除椒盐噪声。

    result = cv2.medianBlur(img, 5)  # 核大小必须是大于1的奇数
    cv2.imshow("Median Filter", result)
    
  4. 方框滤波:类似于均值滤波,但可以选择是否对结果进行归一化。

    result = cv2.boxFilter(img, -1, (5, 5), normalize=True)  # normalize=True 进行归一化
    cv2.imshow("Box Filter", result)
    
  5. 双边滤波:在滤波时同时考虑空间邻近度与像素值相似度,保留边缘信息。

    result = cv2.bilateralFilter(img, 9, 75, 75)  # 直径、颜色空间的标准差和坐标空间的标准差
    cv2.imshow("Bilateral Filter", result)
    
  6. 非局部均值去噪(NLM):使用图像中的所有像素进行去噪,根据相似度加权平均。

    dst = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21)
    plt.subplot(121),plt.imshow(img)
    plt.subplot(122),plt.imshow(dst)
    plt.show()
    
  7. 高通滤波:保留高频部分,常用于边缘增强。

    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 图像。在实际使用中,需要根据具体情况调整核尺寸、标准差等参数。

标签:图像去噪,plt,img,imshow,cv2,几种,opencv,result,像素
From: https://blog.csdn.net/weixin_41700578/article/details/140162717

相关文章

  • OPENCV(视频入门笔记)
    目标学习读取视频,显示视频和保存视频。学习从相机捕捉并显示它。cv.VideoCapture(),cv.VideoWriter()从相机中读取视频从相机中读取视频通常情况下,我们必须用摄像机捕捉实时画面。提供了一个非常简单的界面。让我们从摄像头捕捉一段视频(我使用的是我笔记本电脑内置的网......
  • pip 的几种安装方式
    基本使用#安装pipinstallnumpy#更新pipinstall-Unumpy#卸载pipuninstallnumpy指定源安装安装时指定:#清华源pipinstallnumpy-ihttps://pypi.tuna.tsinghua.edu.cn/simple/#豆瓣源pipinstallnumpy-ihttps://pypi.douban.com/simple/全局配置:pi......
  • 【转载】SCI审稿过程中的几种状态
    原文地址:http://cjsphd.blog.163.com/blog/static/44718111201191175154300/审稿中涉及到的人:EIC-EditorinChief主编,此人很重要,有稿件最终决定权。ADM-(可能是)Administrator应该是协助主编日常工作的。AE-AssociatedEditor副编辑(就是文章发表后在首页第一栏下方的c......
  • OpenCV——修改图片的分辨率
    importcv2#指定视频文件路径video_path=r'D:\desk\test_django\test\Videos\RGB\Videos\yuan2jing_1.mp4'#指定输出视频文件路径output_path=r'D:\desk\test_django\test\Videos\RGB\Videos\yuan2jing_1_1.mp4'#指定新的分辨率new_width=1280#新宽......
  • 基于OpenCV的车道线检测系统
    收藏关注不迷路文章目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、文章目录一、项目介绍近年来,智能驾驶技术在国内外学者中成为研究的热门领域。其中,车道线识别技术作为智能驾驶的关键技术之一,需要准确地识别各种条件下的车道线。本文提出......
  • SpringMVC接收参数的几种方法
    1.方式一:获取地址栏参数       形式一:@PathVariable//http://127.0.0.1:8080/user/123/roles/222@RequestMapping(value="/user/{userId}/roles/{roleId}",method=RequestMethod.GET)@ResponseBodypublicStringhello(@PathVariable("user......
  • 【数据结构】常见的几种数据结构
    常见的数据结构:数组、链表、队列、栈、、堆、二叉树、B树、哈希表、图数组因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来。根据索引查找元素,时间复杂度是\(O(1)\)。动态数组动态数组具体代码实现importjava.util.Arrays;importjava.util.Ite......
  • Facebook几种常见的广告账户类型|Facebook代理kai户
    众所周知,Facebook是中国企业出海推广绕不开也是最重要的广告平台之一,为了满足不同广告主的需求,Facebook提供了多种广告账户类型。那么市面上各种不同的账户类型,怎样找到合适的呢,今天我们一起来了解一下吧~一、个人广告账户个人广告账户是最基本的Facebook广告账户类型,适用于......
  • Gin框架的几种热加载方法
    原文参考:https://cloud.tencent.com/developer/article/2043002什么是热加载如果你是一名python开发者,应该很熟悉这个。我们在Flask或者Django框架下开发都是支持实时加载的,当我们对代码进行修改时,程序能够自动重新加载并执行,这在我们开发中是非常便利的,可以快速进行代码测试,......
  • opencv 欧拉变换
     importcv2importnumpyasnpdefeuler_view_transformation(image,angle,scale,dx,dy):#获取图像尺寸(h,w)=image.shape[:2]#设置旋转矩阵center=(w//2,h//2)M=cv2.getRotationMatrix2D(center,angle,scale)#应用旋......