OpenCV计算摄影学(3)CUDA 图像去噪函数fastNlMeansDenoising()

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

使用非局部均值去噪算法(Non-local Means Denoising algorithm)执行图像去噪,该算法来源于 http://www.ipol.im/pub/algo/bcm_non_local_means_denoising,并包含了若干计算优化。预期噪声为高斯白噪声。

cv::cuda::fastNlMeansDenoising 是 OpenCV 的 CUDA 模块中用于图像去噪的一个函数。此函数实现了快速非局部均值去噪算法,旨在减少图像中的噪声同时尽可能保留边缘细节。

函数原型


void cv::cuda::fastNlMeansDenoising	
(	InputArray 	src,OutputArray 	dst,float 	h,int 	search_window = 21,int 	block_size = 7,Stream & 	stream = Stream::Null() 
)	

参数

  • 参数src 输入8位1通道、2通道或3通道的图像。
  • 参数sdst 与 src 具有相同大小和类型的输出图像。
  • 参数sh 调节滤波强度的参数。较大的 h 值能完美地去除噪声,但也会去除图像细节;较小的 h 值则会保留细节,但也会保留一些噪声。
  • 参数ssearch_window 用于计算给定像素加权平均值的窗口大小(以像素为单位)。应该是奇数。性能受其影响呈线性关系:更大的 search_window 意味着更长的去噪时间。推荐值为21像素。
  • 参数sblock_size 用于计算权重的模板块大小(以像素为单位)。应该是奇数。推荐值为7像素。
  • 参数sstream 用于异步调用的流。 该函数预期应用于灰度图像。对于彩色图像,请参阅 FastNonLocalMeansDenoising::labMethod。

代码示例

电脑没有Nvidia的显卡,程序编译不了,opencv不支持cuda的也编译不了。

#include <opencv2/opencv.hpp>
#include <opencv2/cudaimgproc.hpp>
#include <opencv2/core/cuda.hpp>int main() {// 加载输入图像cv::Mat src = cv::imread("noisy_image.jpg", cv::IMREAD_COLOR);if (src.empty()) {std::cerr << "无法加载图像文件" << std::endl;return -1;}// 创建与src相同大小和类型的输出图像dstcv::Mat dst;// 将输入图像上传到GPUcv::cuda::GpuMat gpu_src, gpu_dst;gpu_src.upload(src);// 创建CUDA流(可选)cv::cuda::Stream stream;// 应用快速非局部均值去噪算法cv::cuda::fastNlMeansDenoising(gpu_src, gpu_dst, 3.0f /* h */, 21 /* search_window */, 7 /* block_size */, stream);// 将去噪后的图像从GPU下载到CPUgpu_dst.download(dst);// 保存去噪后的图像cv::imwrite("denoised_image.jpg", dst);// 显示原始图像和去噪后的图像cv::imshow("Noisy Image", src);cv::imshow("Denoised Image", dst);cv::waitKey();return 0;
}

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

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

相关文章

Windows逆向工程入门之MASM字符处理机制

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 一、MASM字符编码体系深度解析 1. 多层编码支持架构 编码转换关键技术&#xff1a; 2. 字符串存储优化策略 内存优化特征&#xff1a; 二、逆向工程中的字符串特征识别 1. 字符串解…

Linux上用C++和GCC开发程序实现两个不同MySQL实例下单个Schema稳定高效的数据迁移到其它MySQL实例

设计一个在Linux上运行的GCC C程序&#xff0c;同时连接三个不同的MySQL实例&#xff0c;其中两个实例中分别有两个Schema的表结构分别与第三实例中两个Schema个结构完全相同&#xff0c;同时复制两个实例中两个Schema里的所有表的数据到第三个实例中两个Schema里&#xff0c;使…

如何评估所选择的PHP后端框架的性能?

大家在选择PHP后端框架的时候&#xff0c;如果想评估其性能如何&#xff0c;能不能扛得住你的项目&#xff1f;可以根据以下几点进行分析&#xff0c;帮助大家选择到更符合自己心目中的PHP后端框架。 1. 基准测试 基准测试是评估框架性能的基础方法&#xff0c;主要通过模拟高…

P8649 [蓝桥杯 2017 省 B] k 倍区间--前缀和--同余定理【蓝桥杯简单题-必开long long】

P8649 [蓝桥杯 2017 省 B] k 倍区间--前缀和--同余定理 题目 分析代码 还有一件事【老爹音】 题目 分析 首先&#xff0c;看到”连续子序列求和”这一要求时&#xff0c;我们果断选择前缀和解答。 接着就要用到一个非常巧妙的“同余定理”——如果 sum[j] % K sum[i] % K&am…

如何免费使用稳定的deepseek

0、背景&#xff1a; 在AI辅助工作中&#xff0c;除了使用cursor做编程外&#xff0c;使用deepseek R1进行问题分析、数据分析、代码分析效果非常好。现在我经常会去拿行业信息、遇到的问题等去咨询R1&#xff0c;也给了自己不少启示。但是由于官网稳定性很差&#xff0c;很多…

拉链表介绍

拉链表 是处理 缓慢变化维&#xff08;SCD&#xff09; 的一种常用方法&#xff0c;特别适用于需要保留历史记录的场景。以下是拉链表的详细说明及实现方法&#xff1a; 1. 什么是拉链表&#xff1f; 拉链表是一种用于记录维度数据历史变化的表结构&#xff0c;通过 开始时间 …

ChatGPT与DeepSeek:AI语言模型的巅峰对决

目录 引言 一、ChatGPT 与 DeepSeek 简介 &#xff08;一&#xff09;ChatGPT &#xff08;二&#xff09;DeepSeek 二、技术原理剖析 &#xff08;一&#xff09;ChatGPT 技术原理 &#xff08;二&#xff09;DeepSeek 技术原理 &#xff08;三&#xff09;技术原理对比…

【愚公系列】《Python网络爬虫从入门到精通》036-DataFrame日期数据处理

标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度…

PDF文档中表格以及形状解析

我们在做PDF文档解析时有时需要解析PDF文档中的表格、形状等数据。跟解析文本类似的常见的解决方案也是两种。文档解析跟ocr技术处理。下面我们来看看使用文档解析的方案来做PDF文档中的表格、图形解析&#xff08;使用pdfium库&#xff09;。 表格解析&#xff1a; 在pdfium库…

ES、OAS、ERP、电子政务、企业信息化(高软35)

系列文章目录 ES、OAS、ERP、电子政务、企业信息化 文章目录 系列文章目录前言一、专家系统&#xff08;ES&#xff09;二、办公自动化系统&#xff08;OAS&#xff09;三、企业资源规划&#xff08;ERP&#xff09;四、典型信息系统架构模型1.政府信息化和电子政务2.企业信息…

存储对象(MySQL笔记第五期)

p.s.这是萌新自己自学总结的笔记&#xff0c;如果想学习得更透彻的话还是请去看大佬的讲解 目录 视图视图的检查选项视图的更新及作用 存储过程变量系统变量用户定义变量局部变量 IF判断、casewhile、pereat、loop游标(cursor)条件处理程序(handler) 存储函数触发器 -- 表结构…

释放你的IDE潜能:Code::Blocks 插件创意开发深度指南

释放你的IDE潜能:Code::Blocks 插件创意开发深度指南 在软件开发的浩瀚世界中,集成开发环境 (IDE) 扮演着至关重要的角色。一款优秀的 IDE 不仅能提升开发效率,更能激发开发者的创造力。Code::Blocks,作为一款开源、跨平台的 C, C++ 和 Fortran IDE,以其轻量级、高度可定…

Graphics View画一个可调速的风机(pyqt)

效果如图&#xff1a; 风机具备调节转速的功能&#xff0c;转速通过扇叶旋转的快慢来区别&#xff0c;共分为四档&#xff0c;其中零档为静止状态&#xff0c;而一、二、三档则依次增加转速。在代码中&#xff0c;BlowerWrapper 类包含了可旋转的扇叶、风机外框以及选项三个主要…

人工智能之数学基础:线性代数中矩阵的运算

本文重点 矩阵的运算在解决线性方程组、描述线性变换等方面发挥着至关重要的作用。通过对矩阵进行各种运算,可以简化问题、揭示问题的本质特征。在实际应用中,我们可以利用矩阵运算来处理图像变换、数据分析、电路网络等问题。深入理解和掌握矩阵的运算,对于学习线性代数以…

Java 大视界 -- Java 大数据机器学习模型的可解释性增强技术与应用(107)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

02内存映射与bmp解码

一、mmap 内存映射 内存映射的作用是把硬件设备的地址&#xff0c;映射到应用层的内存空间&#xff0c;这样用户就可以跨越系统层访问linux的硬件设备。 1、man 2 mmap 查看映射函数接口 NAMEmmap, munmap - map or unmap files or devices into memory映射 解除…

基于PLC的智能窗控制系统设计

摘 要 对于智能窗控制系统来说&#xff0c;该工艺设计主要通过三种控制模式进行窗户的开关设计,当手动模式时,通过手动按钮控制窗户的开关,天气控制模式时,根据室外湿度和风速控制窗户的开关,室内控制模式时,通过室内的温度控制窗户的开关.按照此设计要求&#xff0c;系统通过可…

建筑兔零基础人工智能自学记录34|深度学习与神经网络2

1、人工神经网络ANN 从生物课上学到的有关神经元、突触的生物神经网络&#xff0c;被模仿出了简化的人工神经网络&#xff08;ANN,artificial neural network&#xff09;。 ANN结构为&#xff1a;输入层、隐藏层、输出层 人工神经元&#xff1a; 基于生物神经元的数学模型 …

手机放兜里,支付宝“碰一下”被盗刷?

大家好&#xff0c;我是小悟。 近期&#xff0c;网络上关于“支付宝‘碰一下’支付易被盗刷”的传言甚嚣尘上&#xff0c;不少用户对此心生疑虑。 首先&#xff0c;要明确一点&#xff1a;“碰一下”支付并不会像某些传言中所描述的那样容易被隔空盗刷。这一观点已经得到了支付…

最新版本SpringAI接入DeepSeek大模型,并集成Mybatis

当时集成这个环境依赖冲突&#xff0c;搞了好久&#xff0c;分享一下依赖配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…