当前位置: 首页 > news >正文

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;
}

相关文章:

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

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用非局部均值去噪算法&#xff08;Non-local Means Denoising algorithm&#xff09;执行图像去噪&#xff0c;该算法来源于 http://www.ipol.…...

【react】快速上手基础教程

目录 一、React 简介 1.什么是 React 2.React 核心特性 二、环境搭建 1. 创建 React 项目 2.关键配置 三、核心概念 1. JSX 语法 表达式嵌入 样式处理 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 合成事件&#xff08;SyntheticEvent) 5. …...

leaflet扩展插件esri-leaflet.js

esri-leaflet.js是一个开源的JavaScript库&#xff0c;它允许开发者在Leaflet地图上轻松地使用Esri的服务&#xff0c;如ArcGIS Online和ArcGIS Server的图层。以下是对esri-leaflet.js插件的详细介绍&#xff1a; 一、主要功能 esri-leaflet.js的主要功能是将Esri的地图服务…...

electron-builder打包时github包下载失败【解决办法】

各位朋友们&#xff0c;在使用electron开发时&#xff0c;选择了electron-builder作为编译打包工具时&#xff0c;是否经常遇到无法从github上下载依赖包问题&#xff0c;如下报错&#xff1a; Get "https://github.com/electron/electron/releases/download/v6.1.12/ele…...

分片加载网络图片

用户提到他们有一个很大的图片需要优化加载速度。用户尝试了把图片分成多份&#xff0c;每份高度100或者自定义&#xff0c;加载时有动画效果&#xff0c;但感觉还是有点慢。个人还是建议图片压缩或者使用CDN加速。 首先&#xff0c;我需要理解用户的问题。他们可能是在一个网…...

考研复试问题总结-数据结构(1)

1. 说一下你对数据结构的理解 我觉得数据结构不仅仅是存数据的“容器”&#xff0c;更是一种思维方式。其实&#xff0c;在我们写程序时&#xff0c;经常会遇到各种各样的数据操作需求&#xff0c;而不同的数据结构能解决问题的效率和方式都不一样&#xff0c;所以选择合适的数…...

DeepSeek 助力 Vue3 开发:打造丝滑的网格布局(Grid Layout)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

架构案例:从初创互联网公司到分布式存储与反应式编程框架的架构设计

文章目录 引言一、初创互联网公司架构演化案例1. 万级日订单级别架构2. 十万级日订单级别架构3. 百万级日订单级别架构 二、分布式存储系统 Doris 架构案例三、反应式编程框架架构案例总结 引言 分布式架构 今天我们将探讨三种不同类型的架构案例&#xff0c;分别探讨 一个初…...

51页精品PPT | 农产品区块链溯源信息化平台整体解决方案

PPT展示了一个基于区块链技术的农产品溯源信息化平台的整体解决方案。它从建设背景和需求分析出发&#xff0c;强调了农产品质量安全溯源的重要性以及国际国内的相关政策要求&#xff0c;指出了食品安全问题在流通环节中的根源。方案提出了全面感知、责任到人、定期考核和追溯反…...

【Pytest】setup和teardown的四个级别

文章目录 1.setup和teardown简介2.模块级别的 setup 和 teardown3.函数级别的 setup 和 teardown4.方法级别的 setup 和 teardown5.类级别的 setup 和 teardown 1.setup和teardown简介 在 pytest 中&#xff0c;setup 和 teardown 用于在测试用例执行前后执行一些准备和清理操…...

JavaScript系列03-异步编程全解析

本文介绍了异步相关的内容&#xff0c;包括&#xff1a; 回调函数与回调地狱Promise详解async/await语法Generator函数事件循环机制异步编程最佳实践 1、回调函数与回调地狱 JavaScript最初是为处理网页交互而设计的语言&#xff0c;异步编程是其核心特性之一。最早的异步编…...

Linux学习——退出vi编辑模式

初学Linux的时候&#xff0c;在使用vi 操作时候&#xff0c;有时候可能进入的是一个文件夹&#xff0c;这样子在退出的时候很不好操作&#xff01; 下面总结一些vi 退出命令&#xff0c;学习! 进入编辑模式&#xff0c;按 o 进行编辑 编辑结束&#xff0c;按ESC 键 跳到命令…...

第2章_保护您的第一个应用程序

第2章_保护您的第一个应用程序 在本章中&#xff0c;您将学习如何使用 Keycloak 保护您的第一个应用程序。为了让事情更有趣&#xff0c;您将运行的示例应用程序由两部分组成&#xff0c;前端 Web 应用程序和后端 REST API。这将向您展示用户如何向前端进行身份验证&#xff0…...

【AGI】DeepSeek开源周:The whale is making waves!

DeepSeek开源周&#xff1a;The whale is making waves&#xff01; 思维火花引言一、DeepSeek模型体系的技术演进1. 通用语言模型&#xff1a;DeepSeek-V3系列2. 推理优化模型&#xff1a;DeepSeek-R1系列3. 多模态模型&#xff1a;Janus系列 二、开源周三大工具库的技术解析1…...

Unity中动态切换光照贴图的方法

关键代码&#xff1a;LightmapSettings.lightmaps lightmapDatas; LightmapData中操作三张图&#xff1a;lightmapColor,lightmapDir,以及一张ShadowMap 这里只操作前两张&#xff1a; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public cl…...

第三十四:6.4.【v-model】

6.4.【v-model】&#xff1a;双向绑定 概述&#xff1a;实现 父↔子 之间相互通信。 前序知识 —— v-model的本质 <!-- 使用v-model指令 --> <input type"text" v-model"userName"> ​ <!-- v-model的本质是下面这行代码 --> <inpu…...

React底层常见的设计模式

在React中&#xff0c;常见的设计模式为开发者提供了结构化和可重用的解决方案&#xff0c;有助于提高代码的可维护性和可扩展性。以下是对React中几种常见设计模式的详细解析&#xff0c;并附上示例代码和注释&#xff1a; 1. 容器组件与展示组件模式&#xff08;Container/P…...

从零基础到通过考试

1. 学习资源与实践平台 使用Proving Grounds进行靶机练习 OSCP的备考过程中&#xff0c;实战练习占据了非常重要的地位。Proving Grounds&#xff08;PG&#xff09;是一个由Offensive Security提供的练习平台&#xff0c;拥有152个靶机&#xff0c;涵盖了从基础到进阶的多种…...

UniApp 按钮组件 open-type 属性详解:功能、场景与平台差异

文章目录 引言一、open-type 基础概念1.1 核心作用1.2 通用使用模板 二、主流 open-type 值详解2.1 contact - 客服会话功能说明平台支持代码示例 2.2 share - 内容转发功能说明平台支持注意事项 2.3 getUserInfo - 获取用户信息功能说明平台支持代码示例 2.4 getPhoneNumber -…...

【无标题】ABP更换MySql数据库

原因&#xff1a;ABP默认使用的数据库是sqlServer&#xff0c;本地没有安装sqlServer&#xff0c;安装的是mysql&#xff0c;需要更换数据库 ABP版本&#xff1a;9.0 此处以官网TodoApp项目为例 打开EntityFrameworkCore程序集&#xff0c;可以看到默认使用的是sqlServer&…...

Windows安全中心空白0x80073d0a注册表修复指南

1. 这不是“界面卡住”&#xff0c;而是Windows安全服务的底层通信断联了你点开Windows 10 Defender安全中心&#xff0c;看到的不是熟悉的病毒防护、防火墙状态、设备性能与健康状况面板&#xff0c;而是一片灰白——顶部菜单栏勉强能显示“主页”“病毒和威胁防护”“防火墙和…...

SMUDebugTool深度解析:AMD Ryzen处理器硬件调试技术指南

SMUDebugTool深度解析&#xff1a;AMD Ryzen处理器硬件调试技术指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://…...

【架构实战】GitOps实践:让运维更优雅

【架构实战】GitOps实践&#xff1a;让运维更优雅 字数统计&#xff1a;约3600字 一、真实故事引入&#xff1a;一次误删引发的运维革命 2024年春天&#xff0c;我们团队负责维护一个拥有23个微服务的K8s生产集群&#xff0c;当时的运维方式还停留在"半自动化"阶段&a…...

AndroidWheelView扩展开发:如何自定义滚轮样式与交互效果

AndroidWheelView扩展开发&#xff1a;如何自定义滚轮样式与交互效果 【免费下载链接】androidWheelView 仿照iOS的滚轮控件&#xff0c;从请吃饭apk反编译出来的 项目地址: https://gitcode.com/gh_mirrors/an/androidWheelView 想要为你的Android应用添加iOS风格的优雅…...

B站成分检测器:5分钟快速上手智能识别工具

B站成分检测器&#xff1a;5分钟快速上手智能识别工具 【免费下载链接】bilibili-comment-checker B站评论区自动标注成分&#xff0c;支持动态和关注识别以及手动输入 UID 识别 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-comment-checker 你是否曾在B站评…...

Unity碰撞器性能优化:从幽灵Collider到物理契约治理

1. 为什么一个“看不见”的碰撞器&#xff0c;能让60帧的游戏掉到20帧&#xff1f;在Unity项目上线前的性能压测阶段&#xff0c;我接手过一个看似普通的横版跳跃游戏——美术资源干净&#xff0c;逻辑简单&#xff0c;主角只有3个动画状态&#xff0c;连粒子特效都控制在5个以…...

JMeter登录Cookie提取与传递全链路实战指南

1. 为什么“提取登录Cookie”是接口测试里最常卡壳的一步做JMeter接口测试的人&#xff0c;十有八九在登录环节栽过跟头——明明登录请求返回了200&#xff0c;Header里也明明白白写着Set-Cookie: JSESSIONIDabc123; Path/; HttpOnly&#xff0c;可后续所有带权限的接口全报401…...

高工独家报告|谁在收割2026智驾市场红利?440万辆背后的芯片大洗牌

高工智能汽车研究院发布《2026年中国市场智能汽车SoC芯片行业分析报告》。报告立足中国乘用车市场&#xff0c;基于乘用车前装量产数据库&#xff0c;全面解析智能驾驶SoC&#xff08;含前视一体机、域控制器及高阶自动驾驶辅助芯片&#xff09;与智能座舱SoC&#xff08;含端侧…...

2026头部GEO服务商哪家实力强?服务质量效果深度测评,合作优选榜单

随着生成式AI全面接管大众信息检索与商业决策场景&#xff0c;GEO生成式引擎优化已然成为企业品牌智能化布局的核心刚需。相较于传统SEO的页面排名逻辑&#xff0c;GEO主打适配大模型语义推理、信源采信、答案生成规则&#xff0c;帮助品牌成为AI问答中的核心推荐信源。当下多数…...

智在记录 AI 语音转写效果实测与场景价值展示

在日常的高强度工作与学习中&#xff0c;我们常常面临一个共同的痛点&#xff1a;信息输入的速度远远超过了我们消化和记录的能力。无论是长达两小时的部门战略会议&#xff0c;还是节奏飞快的在线网课&#xff0c;亦或是需要精准捕捉细节的医疗问诊&#xff0c;传统的“笔头记…...