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

使用Python中的OpenCV降噪功能增强图像的3个步骤 Winki 2023-12-20 17:28:51 258

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

介绍

在这个项目中,我们将使用三个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 cv2
import numpy as np

步骤2:导入图像

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

这是我们所使用的图像:

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

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

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

步骤3:对影像进行除噪

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

denoise_1 = cv2.fastNlMeansDenoisingColored(img,None3,3,7,21)
denoise_2 = cv2.fastNlMeansDenoisingColored(img,None5,5,7,21)
denoise_3 = cv2.fastNlMeansDenoisingColored(img,None15,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我的最终结果。

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

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
Winki
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Winki
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区