图像降噪算法 NL-means 介绍

news2025/1/16 0:02:08

介绍

Non-Local Means 非局部均值降噪算法,简称NLM,该算法来自 2005年论文“A non-local algorithm for image denoising”;该算法是经典的图像降噪算法,是很多降噪算法的参考对比算法。

2014 年,有 NLM衍生算法NLMP,该算法来自论文“Parameter-Free Fast Pixelwise Non-Local Means Denoising”;NLMP 算法快速且开源。

  • FFmpeg 项目已经集成NLM算法,集成到 filter 中。

  • OpenCV 项目已经集成NLM算法,有现成方法可调用,fastNlMeansDenoisingfastnlmeansdenisingcoloredfastnlmeansdenisingmultifastnlmeansdenisingcoloredmulti

  • 项目地址:https://www.ipol.im/pub/art/2014/120/

  • 原论文下载地址:https://download.csdn.net/download/yanceyxin/89281660

  • 衍生论文下载地址:https://download.csdn.net/download/yanceyxin/89281644

  • NLMP 源码下载:https://download.csdn.net/download/yanceyxin/89281686

原理

  1. 来源
    (1)图像中的像素点之间不是孤立存在的,某一点的像素与别处的像素点一定存在某种关联,可以概括为灰度相关性和几何结构相似性,这就是均值滤波的思想。但相似像素并不局限于某个局部区域,如图像中的长边缘、结构纹理等。
    (2)NLM一般有两种应用方案,基于像素点方案、基于块方案。
  2. 算法流程
    (1)在需要滤波像素点 u 周围设置半径 f 的邻块记作当前块,size为(2f+1)^2,同时设置一个与其等同大小的参考块,逐像素遍历整个图像,计算参考块于当前块的欧氏距离;
    (2)计算出来的块与块之间的距离还不是参考块相对于当前块的权重,我们需要一个单调递减的函数来对欧式距离加以约束,距离越小权重越大,距离越远,权重越小且下降的速度越快。最后可以用这个函数来产生权重:为图像噪声方差;
    (3)计算出参考块与当前块之间的权重,用参考块中心和对应的权重对当前块中心像素进行滤波;
  • 核心思想:该算法利用图像中所有像素的信息,通过比较像素邻域的相似性来计算权重,然后进行加权平均。
  • 算法特性:NL-means算法与局部滤波器或频域滤波器的主要区别在于,它系统地使用图像能提供的所有可能的自预测。
  • NL-means算法的核心公式是:
    在这里插入图片描述
  • 相关原理图:
    在这里插入图片描述
    在这里插入图片描述
  1. 实验结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

源码示例

  • 利用 OpenCV 集成的fastNlMeansDenoisingColored方法实验 NLM 算法
#include <opencv2/opencv.hpp>
#include <opencv2/photo.hpp>

int main() {
    // 加载彩色噪声图像
    cv::Mat noisy_image = cv::imread("noisy_image.jpg", cv::IMREAD_COLOR);

    // 确保图像已加载
    if(noisy_image.empty()) {
        std::cout << "Failed to load the image" << std::endl;
        return 1;
    }

    // 输出原始图像的尺寸
    std::cout << "Noisy Image Size: " << noisy_image.size() << std::endl;

    // 对图像进行去噪
    cv::Mat output_image;
    cv::fastNlMeansDenoisingColored(noisy_image, output_image, 10, 10, 7, 21);

    // 输出去噪后图像的尺寸
    std::cout << "Denoised Image Size: " << output_image.size() << std::endl;

    // 保存去噪后的图像
    cv::imwrite("denoised_image.jpg", output_image);

    // 显示去噪前后的图像
    cv::imshow("Noisy Image", noisy_image);
    cv::imshow("Denoised Image", output_image);
    cv::waitKey(0);

    return 0;
}

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

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

相关文章

树莓派4b测量PM2.5

1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…

正点原子i.MX 93开发板,双核A55+M33+NPU,双路RS485FDCAN千兆网,异核/AI/工业开发!

正点原子i.MX 93开发板新品上市&#xff01;双核A55M33NPU&#xff0c;双路RS485&FDCAN&千兆网&#xff0c;异核/AI/工业开发&#xff01; NXP的i.MX系列是一系列面向多媒体和工业应用的ARM架构微处理器。从i.MX6U到i.MX93&#xff0c;这一系列经历了显著的发展&#x…

kubectl_进阶_安全

安全 在前面的学习中&#xff0c;我们知道对于资源对象的操作都是通过 APIServer 进行的&#xff0c;那么集群是怎样知道我们的请求就是合法的请求呢&#xff1f; 这就涉及到k8s的安全相关的知识了。 1. API对象 Kubernetes有一个很基本的特性就是它的所有资源对象都是模型…

TypeScript 基础学习笔记:interface 与 type 的异同

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 TypeScript 学习笔记&#xff1a;interface 与 type 的异同&#x1f3a3; 引言&#x1f680; 快速入门1️⃣ Interface&#xff08;接口&#xff09;&#x1f4cb; 定义&#x1f91d; 实现&#x1f4a1; 特点 2️⃣ Type Al…

深度学习网络:设计、开发和部署

​书籍&#xff1a;Deep Learning Networks: Design, Development and Deployment 作者&#xff1a;Jayakumar Singaram&#xff0c;S. S. Iyengar&#xff0c;Azad M. Madni 出版&#xff1a;Springer书籍下载-《​深度学习网络&#xff1a;设计、开发和部署》该教材为学生和工…

Redis 实战之RDB文件结构

RDB文件结构 databases 部分key_value_pairs 部分value 的编码字符串对象列表对象集合对象哈希表对象有序集合对象INTSET 编码的集合ZIPLIST 编码的列表、哈希表或者有序集合 总结AOF持久化的实现命令追加 AOF 文件的写入与同步小结 在本章之前的内容中&#xff0c; 我们介绍了…

后门通信模型剖析

通信模型剖析 梳理DinodasRAT Linux后门通信模型如下&#xff1a; 发送数据-通信数据结构 #原始数据 20000000e703881435b674f7de23a2f80fe35ac0ba1a46c7d96e08a8747889eacf6b1950#载荷数据 e703881435b674f7de23a2f80fe35ac0ba1a46c7d96e08a8747889eacf6b1950#数据解密 180…

Datasophon基于dinky1.0.1升级到dinky1.0.2

1.首先下载dinky1.0.2版本 dinky1.0.2下载地址 2.关闭dinky1.0.1 3.升级dinky1.0.2 3.1 解压dinky1.0.2.ta.gz tar -xzvf dinky-release-1.16-1.0.2.tar.gz -C /opt/datasophon/rm -rf dinky-release-1.16-1.0.2.tar.gz复制dinky1.0.1的配置文件到dinky1.0.2目录 cp /op…

leetcode91.解码方法(动态规划)

问题描述&#xff1a; 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; A -> "1" B -> "2" ... Z -> "26" 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可…

难定取舍,静观其变

今&#xff08;2024年5月8日&#xff09;天&#xff0c;本“人民体验官”在推广人民日报官方微博文化产品《带着笑意的眼睛&#xff0c;能看见最美的风景》的同时&#xff0c;还要联系4月初至今期间&#xff0c;与隐藏在《麻辣论坛》幕后的那位昵称“800727”者所爆发的一连串&…

Python:一种强大的编程语言与无限可能

引言 Python是一种易于学习且功能强大的编程语言&#xff0c;它被广泛用于各种领域&#xff0c;包括数据科学、人工智能、Web开发、系统自动化等。Python以其简洁的语法、丰富的库和易于阅读的风格&#xff0c;成为了许多开发者的首选。本文将探讨Python的特性和应用&#xff…

用户下单操作

一&#xff1a;用户下单需求分析和设计&#xff1a; 用户下单业务说明&#xff1a; 在电商系统中&#xff0c;用户是通过下单的方式通知商家&#xff0c;用户已经购买了商品&#xff0c;需要商家进行备货和发货。 用户下单后会产生订单相关数据&#xff0c;订单数据需要能够体…

pytest教程-40-钩子函数-pytest_runtest_call

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_runtest_setup钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_runtest_call钩子函数的使用方法。 pytest_runtest_call 钩子函数在 pytest 调用测试函数&#xff08;即测试用…

探索 JavaScript 宇宙:DOM与BOM的星际邂逅

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f4af;Web API&#x1f340;1 API的概念&#x1f340;2 Web API的概念…

JavaScript数字分隔符

● 如果现在我们用一个很大的数字&#xff0c;例如2300000000&#xff0c;这样真的不便于我们进行阅读&#xff0c;我们希望用千位分隔符来隔开它&#xff0c;例如230,000,000; ● 下面我们使用_当作分隔符来尝试一下 const diameter 287_266_000_000; console.log(diameter)…

xhs 旋转滑块流程分析

声明 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 前言 之前搞过 x-s的纯…

CentOs9编译C指令报错的一种解决方案

今天使用centos9编译c代码时&#xff0c;显示bash: gcc: command not found... 下图是我的报错页面&#xff0c;依据提示信息安装gcc之后依旧显示失败 找到其中一种解决方式&#xff0c;完美解决&#xff0c;供参考 输入以下指令更新软件包列表&#xff0c;这里需要等待几分…

如何有效使用Tacotron系列语音合成模型

谷歌开发的Tacotron系列&#xff0c;主要用于文本到语音&#xff08;TTS&#xff09;的转换。模型基于端到端的序列到序列&#xff08;Seq2Seq&#xff09;架构&#xff0c;能够直接从文本中生成自然听起来的语音。Tacotron系列是基于神经网络的自回归语音合成模型&#xff0c;…

2024全国计算机专业大学排名前10强名单

根据2024软科中国大学专业排名——计算机科学与技术专业&#xff0c;全国计算机专业最好的5所大学分别是清华大学、浙江大学、北京大学、国防科技大学和北京航空航天大学等&#xff0c; 以下是上大学网&#xff08;https://www.sdaxue.com/&#xff09;整理的全国计算机专业&a…

IoTDB 入门教程 基础篇⑤——数据模型和基础概念

文章目录 一、前文二、数据模型2.1 关系型数据库MySQL。2.2 时序数据库TDengine2.3 时序数据库InfluxDB2.4 时序数据库IoTDB&#xff08;本专栏的正主&#xff09; 三、基础概念3.1 数据库&#xff08;Database&#xff09;3.2 设备模板&#xff08;元数据模板&#xff09;3.3 …