使用Python中的OpenCV降噪功能增强图像的3个步骤

重磅干货,第一时间送达

在本文中,我们将展示如何通过三个简单的步骤来实现降噪。我们将使用机器学习训练的降噪模型。这是我们找到的最好的降噪模型之一。

程序可以判断图像是否有噪点吗?这对于另一个项目可能是个主意,因为我们的降噪模型不够智能,无法计算出噪声。因此我们必须自己确定。在这种情况下,最好的方法通常是尝试不同的值并找到最佳结果。经过一些练习,我们会获得更多经验,并且找到最佳参数值。

介绍

在这个项目中,我们将使用三个Python软件包:OpenCV,Matplotlib和NumPy。OpenCV是一个非常知名的计算机视觉工具包。作为OpenCV库的先决条件,我们将需要安装NumPy。读取图像时,我们将像素转换为数组。NumPy将在后台进行该操作。当处理多维数组时,NumPy是足够的。

降噪模型

这是该项目非常有趣的部分。首先,我将分享我们将用于减少噪声的算法。然后,我将分享它具有多少个参数以及每个参数的含义。

图片中的黄色区域看起来很像。另外,绿色的小区域也看起来很相似。非局部均值去噪算法选择一个像素,在其周围取一个小窗口,扫描图像以获得相似的窗口,对所有窗口求平均,然后计算结果以替换该像素。该算法被称为非本地算法,因为它搜索整个图像以找到相互联系,而不仅仅是在单个区域周围。那不是很酷吗?

该算法包含两个常用函数:fastNlMeansDenoising和fastNlMeansDenoisingColored。第一个用于灰度图像,第二个用于彩色照片。在我们的例子中,我们将使用彩色图像。

该函数的参数为src,dst,h,hcolor,templateWindowSize,和searchWindowSize。

src:我们要进行降噪的输入图像。

dst:如果要导出结果,则为目的地。

h:亮度分量(较大的h值会消除更多的噪点,但也会降低图像的质量)。

hcolor:颜色分量(这10是彩色图像文档中的推荐值)。

templateWindowSize:该功能将平滑的区域的像素大小。它应该是一个奇数整数。

searchWindowSize:该功能将找到并用作参考的区域的像素大小。它对性能产生线性影响:值越大,searchWindowSize表示去噪时间越长。另外,它应该是一个奇数整数(21是官方文档推荐的值,因为它适用于大多数嘈杂的图像情况)。

步骤1:安装软件包

我们必须安装两个库才能使我们的程序正常运行:numpy和opencv-python。我们可以使用PIP库管理器将它们安装在一行中:

pip install numpy opencv-python

让我们继续创建一个新的Jupyter Notebook(但可以随意使用所需的代码编写环境)。这是我的第一个笔记本块,我们在其中导入刚刚构建的库:

import cv2import numpy as np
步骤2:导入图像

在这一步中,我们将找到要用于降噪的图片。为了更清楚地看到更改,它可能是嘈杂的图片。也可以随意使用常规图像-仍然会出现平滑现象。

这是我们所使用的图像:

这是读取图像的行。我们正在使用OpenCV的imread方法:

img =cv2.imread("test_image.png")

现在,我们进入第三步,也是最后一步,我们将在实际操作中看到降噪效果。

步骤3:对影像进行除噪

到目前为止看起来不错!现在,这是项目的有趣部分。我们将看到降噪后图像的外观。我们将使用三个不同的值运行该函数,以查看每个值如何影响最终结果。随意检查第一步,以了解每个参数代表什么。

denoise_1 = cv2.fastNlMeansDenoisingColored(img,None,3,3,7,21)denoise_2 = cv2.fastNlMeansDenoisingColored(img,None,5,5,7,21)denoise_3 = cv2.fastNlMeansDenoisingColored(img,None,15,15,157,21)

去噪图像分配给不同的变量。让我们保存结果。我们将使用OpenCV的imwrite方法。如您所见,我们传递变量和要保存的文件名。

cv2.imwrite('image_1.png',denoise_1)cv2.imwrite('image_2.png',denoise_2)cv2.imwrite('image_3.png',denoise_3)

比较结果

我们可以按顺序看到它们。值越大,图像变得越平滑。

这是一张查看前后变化的图片。我选择了denoise_1我的最终结果。

恭喜你!我们开发了一种程序,可以将图像的噪点降低不同程度。还有许多其他图像缩小算法。小伙伴可以尝试一下,然后选择自己喜欢的。根据我们的经验,它们不如我们在本文中使用的那样强大,即非局部均值降噪算法。一些降噪算法也称为模糊算法。

下载1:OpenCV-Contrib扩展模块中文版教程
(0)

相关推荐

  • Python进阶——OpenCV之Core Operations

    文章目录 图像基本操作 访问并修改像素值 访问图像的属性 设置图像区域 图像分割与合并 画图像边框 图像的数学操作 图像叠加 图像融合 图像位操作 Python OpenCV代码检测与速度优化 时隔一 ...

  • python+opencv读入和显示图片

    多久消失不见的本人,又回来啦!!! 这段时间换了老板,嘻嘻,也换了要学习的内容了,如此不专一,流汗中... 由于是本人兴趣爱好,更新时间不一定哦 疫情当前,请大家保重自己!!! ----------- ...

  • Python图像处理工具有哪些?五大工具推荐!

    使用Python进行图像处理的时候,肯定避免不了工具,今天小编向大家推荐五款Python图像处理工具,有需求的小伙伴快来看看吧. 1 scikit-image 是一个开源的Python包,适用于num ...

  • (4条消息) 10分钟学会使用YOLO及Opencv实现目标检测(上)|附源码

    计算机视觉领域中,目标检测一直是工业应用上比较热门且成熟的应用领域,比如人脸识别.行人检测等,国内的旷视科技.商汤科技等公司在该领域占据行业领先地位.相对于图像分类任务而言,目标检测会更加复杂一些,不 ...

  • OpenCV-Python,计算机视觉开发利器

    人工智能,一个已经被谈论了几十年的概念(最早是图灵在1950年提出).如今这几年,相关技术的发展速度是越来越快.高大上如无人驾驶.智能安防.AI辅助诊断,接地气如刷脸支付.内容推荐.自动翻译等,众多领 ...

  • 【推荐】Python图像处理工具有哪些?

    对比其他编程语言,Python更适合图像处理,因为Python有好多工具包应用于图像处理当中,既能提高效率,也能节省时间.那么Python图像处理工具有哪些?本文为大家介绍10个Python图像处理工 ...

  • 使用网络摄像头和Python中的OpenCV构建运动检测器(Translate)

    重磅干货,第一时间送达 本期我们将学习如何使用OpenCV实现运动检测 运动检测是指检测物体相对于周围环境的位置是否发生了变化.接下来,让我们一起使用Python实现一个运动检测器应用程序吧! 该运动 ...

  • 如何使用OpenCV在Python中访问IP摄像头

    重磅干货,第一时间送达 capture = cv2.VideoCapture('rtsp://192.168.1.64/1') capture = cv2.VideoCapture('rtsp://[ ...

  • 【从零学习OpenCV 4】图像中添加高斯噪声

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • 【从零学习OpenCV 4】图像中添加椒盐噪声

    重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习OpenCV 4>.为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通 ...

  • python进阶—OpenCV之常用图像操作函数说明

    文章目录 cv2.threshold cv2.bitwise_and cv2.bitwise_or cv2.bitwise_not cv2.inRange cv2.resize cv2.adaptiv ...

  • Python 中的函数装饰器和闭包

    函数装饰器可以被用于增强方法的某些行为,如果想自己实现装饰器,则必须了解闭包的概念. 装饰器的基本概念 装饰器是一个可调用对象,它的参数是另一个函数,称为被装饰函数.装饰器可以修改这个函数再将其返回, ...

  • Python中tuple和list的区别?基础学习!

    想必大家都知道,Python数据类型有很多种,其中有两个对象的写法非常相似,它就是tuple元组和list列表,让人傻傻分不清楚.那么你知道Python中tuple和list有什么区别吗?我们来看看具 ...

  • Python中缩进是什么?入门分享!

    众所周知,Python是一门独特的编程语言,它语法清晰.简单易学,而且Python是通过缩进来识别代码块的,因为一般的语言都是通过{}或者end来作为代码块标记. Python中缩进是什么? 要求严格 ...

  • python中的内置函数

    前言 本人只在csdn写博客 内置函数 介绍 一. 数学运算 abs()求绝对值函数 round() 近似取值 pow()求指数 divmod()求商和余数 max()求最大值和min()求最小值 s ...