【Emgu CV教程】6.11、图像平滑之快速非局部平均去噪

news2024/11/25 12:03:58

文章目录

  • 一、函数介绍
    • 1.FastNlMeansDenoising()函数
    • 2.FastNlMeansDenoisingColored()
  • 二、举例
    • 1.原始素材
    • 2.灰度图FastNlMeansDenoising()快速非局部平均去噪
    • 3.彩色图像FastNlMeansDenoisingColored()快速非局部平均去噪


一、函数介绍

快速非局部平均去噪” 是消除图像噪声的,在这里也放到了图像平滑这一单原来介绍。这个函数名气不大,不像前面那些函数应用广泛。根据网上专家的介绍,它是利用整幅图像进行去噪,以图像块为单位在图像中寻找相似区域,再对这些区域求平均,能够比较好地去掉图像中存在的高斯噪声。因此函数执行要消耗更多的时间,但是结果很好。

1.FastNlMeansDenoising()函数

灰度图进行快速非局部平均去噪时,使用FastNlMeansDenoising()函数,官方定义如下:

public static void FastNlMeansDenoising(
	IInputArray src,  // 输入图像
	IOutputArray dst, // 输出图像
	float h = 3f, // 灰度图过滤器强度。h值高可以很好的去除噪声,但也会把图像的细节抹去。
	int templateWindowSize = 7, // 相似性权重计算窗口大小(奇数,推荐值为 7)
	int searchWindowSize = 21 // 搜索窗口大小,建议是相似性权重计算窗口大小的3-5倍
)

2.FastNlMeansDenoisingColored()

彩色图像进行快速非局部平均去噪时,使用FastNlMeansDenoisingColored()函数,官方定义如下:

public static void FastNlMeansDenoisingColored(
	IInputArray src,  // 输入图像
	IOutputArray dst, // 输出图像
	float h = 3f, // 灰度图过滤器强度。h值高可以很好的去除噪声,但也会把图像的细节抹去。
	float hColor = 3f, // 彩色图像过滤器强度。h值高可以很好的去除噪声,但也会把图像的细节抹去。
	int templateWindowSize = 7, // 相似性权重计算窗口大小(奇数,推荐值为 7)
	int searchWindowSize = 21 // 搜索窗口大小,建议是相似性权重计算窗口大小的3-5倍
)

二、举例

1.原始素材

原始素材定义为srcMat,如下:
在这里插入图片描述
还是这张熟悉的向日葵图像,里面有白色和黑色的斑点作为椒盐噪声。

2.灰度图FastNlMeansDenoising()快速非局部平均去噪

代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
int h = 20; // 灰度图滤器强度
int templateWindowSize = 7; // 相似性权重计算窗口大小(奇数,推荐值为 7)
int searchWindowSize = 21; // 搜索窗口大小,相似性权重计算窗口大小的3-5倍
CvInvoke.CvtColor(tempMat, tempMat, ColorConversion.Bgr2Gray);
CvInvoke.FastNlMeansDenoising(tempMat, dstMat, h, templateWindowSize, searchWindowSize);

代码执行结果如下:
在这里插入图片描述
输出结果是一个灰度图,里面绝大多数的的椒盐噪声已经去除掉了,但是在我的笔记本电脑上,代码执行时间用了0.2秒左右,比较慢。

3.彩色图像FastNlMeansDenoisingColored()快速非局部平均去噪

代码如下:

Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat();
int h = 20; // 灰度图滤器强度
int hColor = 20; // 彩色图滤器强度
int templateWindowSize = 7; // 相似性权重计算窗口大小(奇数,推荐值为 7)
int searchWindowSize = 21; // 搜索窗口大小,相似性权重计算窗口大小的3-5倍
CvInvoke.FastNlMeansDenoisingColored(tempMat, dstMat, h, hColor, templateWindowSize, searchWindowSize);

执行结果是:
在这里插入图片描述
基本上椒盐噪声也全部去掉了,代码执行时间在0.45秒左右。

注意,在彩色图像去噪时,传入FastNlMeansDenoisingColored()函数的h参数和hColor参数都要设置。


原创不易,请勿抄袭。共同进步,相互学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1457983.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《最新出炉》系列初窥篇-Python+Playwright自动化测试-20-处理鼠标拖拽-下篇

1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,其次有人私信宏哥说是有那种…

Python假数据生成库之mimesis使用详解

概要 在软件开发和测试过程中,经常需要使用假数据来模拟真实环境,进行测试、演示或者填充数据库。Python Mimesis 库就是一个强大的工具,可以帮助快速、方便地生成各种类型的假数据。本文将深入探讨 Mimesis 库的功能、用法和示例代码,以帮助大家更好地了解如何利用这个库…

2024年及以后在您的项目中使用的最佳CSS框架

在过去几年中,CSS已经取得了长足的进步。在过去,您可能会使用CSS来创建依赖于HTML表格和CSS浮动作为其布局系统的简单外观的Web应用程序。而现在,您可以设计复杂的交互式用户界面,具有优雅的设计。 尽管CSS变得越来越先进&#x…

【ARMv8M Cortex-M33 系列 8.1 -- RT-Thread 堆内存 检查命令 free 实现及介绍】

文章目录 RT-Thread 堆内存 检查命令 free 实现及介绍rt_memory_info 函数验证 RT-Thread 堆内存 检查命令 free 实现及介绍 在RT-Thread系统中,通常可以通过rt_memory_info函数获取当前的堆内存使用信息,然后你可以包装这个函数来显示剩余的堆空间。rt…

Keil软件生成bin文件

首先需要在keil的魔法棒里将运行脚本加上 加上脚本后,还需要将编译后的文件存放于什么位置 C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o "$LL.bin" "#L" 到这里就可以了

【知识点】CNN中concat与add的区别

cat操作经常用于将特征联合,多个卷积特征提取框架提取的特征融合或者是将输出层的信息进行融合;而add层更像是信息之间的叠加。 add是在一个特征上增加其语义信息,对最终的图像的分类是有益;cat导致的结果改进可能是由于cat操作通…

嵌入式 系统 开发 - 第一件事 “搭开发环境”

无论是对DSP,FPGA,或其他可编程芯片开发 都要 “搭开发环境” : 懒得写太多字,画个图来扯淡吧! 看看实际 怎么搞的 :) 这张照片仅仅是 老哥 自己的一个DSP开发实际连结的搞法儿啊&#xff0c…

从零开始手写mmo游戏从框架到爆炸(十六)— 客户端指定回调路由与登录

导航:从零开始手写mmo游戏从框架到爆炸(零)—— 导航-CSDN博客 我们这次来把注册、登录、选择英雄,进入主页-选择地图的功能完善。 在这之前,我们还要解决一个问题,就是服务端往客户端发消息的路由问题…

生产环境下,应用模式部署flink任务,通过hdfs提交

前言 通过通过yarn.provided.lib.dirs配置选项指定位置,将flink的依赖上传到hdfs文件管理系统 1. 实践 (1)生产集群为cdh集群,从cm上下载配置文件,设置环境 export HADOOP_CONF_DIR/home/conf/auth export HADOOP_CL…

面试redis篇-03缓存击穿

原理 缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这时间点对这个key有大量的并发请求过来,这些并发的请求可能会瞬间把DB压垮 解决方案一:互斥锁 解决方案二:逻辑过期 提问与回答 面试官 &a…

Springboot+vue的疫情信息管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的疫情信息管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的疫情信息管理系统,采用M(model&a…

wordpress企业网站模板免费

绿色风格的wordpress免费模板,经测试可以免费下载的WP模板。 https://www.wpniu.com/themes/300.html 简洁大气的文化艺术类wordpress模板,可以免费下载,实用易上手,新手也适合。 https://www.wpniu.com/themes/304.html 高端大…

Flask 学习99-Flask-SocketIO 快速入门与使用

前言 flask-socketio 为flask应用提供了一个客户端与服务器之间低延迟的双向通讯 官网地址:https://flask-socketio.readthedocs.io/en/latest/intro.html 环境准备 先安装flask-socketio pip install flask-socketio说明Flask-SocketIO 与 js版本客户端不匹配,二者不能正…

每日OJ题_二叉树dfs②_力扣129. 求根节点到叶节点数字之和

目录 力扣129. 求根节点到叶节点数字之和 解析代码 力扣129. 求根节点到叶节点数字之和 129. 求根节点到叶节点数字之和 难度 中等 给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。 每条从根节点到叶节点的路径都代表一个数字&am…

UPixelator - Pixelize 3d Scenes

UPixelator 资源为使用 3D 模型创建像素艺术风格游戏提供了基础。 这是一个无着色器的解决方案,用于对3d场景进行像素化处理,并减少正交相机的像素蠕变。 渲染管线 - 内置✓ - URP ✓ 测试版本 Unity 2021.3(内置,URP 12):Windows,WebGL Unity 2022.3(内置,URP 14):…

EasySass: could not generate CSS file. See Output panel for details.微信小程序报错及解决

解决微信小程序导入vscode的easysass包报错 问题发现问题来源和解决制作不易,感谢三联,谢谢大家啦 问题发现 当我喜滋滋的在vscode中导入easysass包之后,又在微信小程序中添加vscode扩展,又去文件中改好了配置文件后却直接弹出了…

10_Java泛型

一、为什么要有泛型 1.泛型的设计背景 集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分…

TiDB 7.5.0 LTS 高性能数据批处理方案

过去,TiDB 由于不支持存储过程、大事务的使用也存在一些限制,使得在 TiDB 上进行一些复杂的数据批量处理变得比较复杂。 TiDB 在面向这种超大规模数据的批处理场景,其能力也一直在演进,其复杂度也变得越来越低: ○ 从…

基于java的眼镜店仓库管理系统

源码获取,加V:qq2056908377 摘要: 随着电子商务的兴起,越来越多的商家选择在线销售他们的产品。眼镜店作为零售业的一种,也不例外。随着市场需求的不断增加,眼镜店需要更加高效的管理他们的仓库和库存&…

如何防止被恶意刷接口?

在面试时,经常会被问一个问题:如何防止别人恶意刷接口? 这是一个非常有意思的问题,防范措施挺多的。今天这篇文章专门跟大家一起聊聊,希望对你会有所帮助。 1 防火墙 防火墙是网络安全中最基本的安全设备之一&#x…