Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenCV - 图像保留纹理去噪 fastNlMeansDenoising

OpenCV - 图像保留纹理去噪 fastNlMeansDenoising

作者头像
为为为什么
发布于 2022-08-06 09:38:38
发布于 2022-08-06 09:38:38
4K00
代码可运行
举报
文章被收录于专栏:又见苍岚又见苍岚
运行总次数:0
代码可运行

图像去噪是图像处理中的重要需求,本文介绍 OpenCV 库中集成的去噪函数 fastNlMeansDenoising。

简介

  • 去噪是十分重要的预处理步骤之一,但是在去噪的同时保留正常的图像纹理则需要更精细的去噪算法
  • 之前介绍过的 Photoshop 中的表面模糊 算法可以算是去噪中比较有效的方法之一,但是没有快速算法
  • OpenCV 集成了 Non-Local Means Denoising 算法的同时对其进行了加速
  • 可以有效处理高斯白噪声
  • 官方文档:https://docs.opencv.org/2.4.13.7/modules/photo/doc/denoising.html?highlight=fastnlmeansdenoising

Non-Local Means Denoising

  • 其中p​ 为当前正在处理的像素,q​ 为周围邻域一个像素,d(B§, B(q))​ 为二者邻域patch 数据的距离度量(欧氏距离),u(q)​为q​的权重,​ 为权重标准化系数
  • 即为了估计当前像素p去噪后的真实像素值,需要周围邻域像素的信息辅助,邻域单个像素辅助也不可靠,需要邻域像素周围的patch与p 周围的patch 数据相比较,将结果作为估计像素的权重加权求和计算得到当前像素点的去噪像素值
  • 考虑一幅彩色图像 u=\left(u_{1}, u_{2}, u_{3}\right) ,对于像素 p,为其去噪的核心公式为:

  • 其中 i=1,2,3​,B(p,r)​ 为 p​ 周围 r​ 为半径的邻域,w(p, q)​ 为权重,​ 为权重标准化系数
  • 权重的计算与像素间距离度量相关,定义p, q 间欧式距离度量 d{2}=d{2}(B(p, f), B(q, f)) :

  • 有了 d^2​,定义 w(p, q)​计算方法:

  • 其中 σ​ 表示噪声标准差,h​ 表示过滤参数,越大表示去噪能力越强,同时图像的细节丢失的也会越多

OpenCV 函数介绍

核心函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cv2.fastNlMeansDenoising(src, h=3, templateWindowSize=7, searchWindowSize=21 )
参数介绍

参数

含义

src

噪声图像(对于此函数接受2D图像)

templateWindowSize

用于计算权重的模板块的像素大小,需要奇数,建议为7

searchWindowSize

用于计算给定像素加权平均数的窗口的像素大小,需要奇数,建议为21

h

参数调节过滤器强度。较大的 h 值可以完全去除图像中的噪声,但同时也去除了图像中的细节,较小的 h 值可以保留细节,但同时也保留了一些噪声, 默认为3

配套函数
  • fastNlMeansDenoising 仅用于灰度图像去噪
  • 彩色图像去噪需要用到 fastNlMeansDenoisingColored函数,该函数会将图像转换到 CIELAB 空间并分别对 L 和 AB 分量去噪
  • fastNlMeansDenoisingMulti 函数用于连续相关灰度图像的快速去噪(例如视频中的连续灰度帧)
  • fastNlMeansDenoisingColoredMulti 函数用于连续相关彩色图像的快速去噪(例如视频中的连续彩色帧)

实现示例

  • 示例代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import cv2
from mtutils import to_gray_image
from mtutils import cv_rgb_imread
from mtutils import PIS


if __name__ == '__main__':
    noise_image_path = 'assets/noise.jpg'
    noise_img = cv_rgb_imread(noise_image_path)

    # h -> 6
    denoised_img = cv2.fastNlMeansDenoisingColored(noise_img, None, 6, 10, 7, 21)
    PIS([noise_img, 'with noise'], [denoised_img, 'denoised'])
    
    pass

  • 效果示例

原始论文

file:///C:/Users/issuser/Downloads/NonLocalDenoising.pdf

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年2月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
REST API设计指导——译自Microsoft REST API Guidelines(四)
前面我们说了,如果API的设计更规范更合理,在很大程度上能够提高联调的效率,降低沟通成本。那么什么是好的API设计?这里我们不得不提到REST API。
雪雁-心莱科技
2018/12/27
2.2K0
REST API设计指导——译自Microsoft REST API Guidelines(一)
前面我们说了,有章可循,有据可依,有正确的产品流程和规范,我们的工作才不至于产生混乱,团队的工作才能更有成效。我们经常见到,程序开发可能只用了半个月,但是接口的联调却经常需要花费半个月甚至一个月左右。
雪雁-心莱科技
2018/12/27
1.2K0
5个REST API安全准则
当开发REST API时,从一开始就必须注意安全方面。 REST是通过URL路径元素表达系统中特定实体的手段。REST不是一个架构,而是一种在Web上构建服务的架构风格。 REST允许通过简单的URL(而不是复杂的请求主体或POST参数)与基于web的系统交互。 1 - 授权 (1)保护HTTP方法 RESTful API通常使用GET(读),POST(创建),PUT(替换/更新)和DELETE(删除记录)。 对于每个资源并非都要提供所有这些操作。 必须确保传入的HTTP方法对于会话令牌/API密
lyb-geek
2018/08/16
4K0
HTTP API 设计指南HTTP API 设计指南
这篇指南介绍描述了 HTTP+JSON API 的一种设计模式,最初摘录整理自 Heroku 平台的 API 设计指引 Heroku 平台 API 指引。
Originalee
2018/08/30
2.6K0
Rest api简介
理解和使用内容协商 我们的开发者在发送一个 REST API 请求的同时,根据应用场景,针对相同的资源,可能会期待不同的返回形式。 比如,我希望根据用户客户端语言,同一个资源的内容可以返回不同的语言。又比如,当我使用 Java 编程的时候,我希望得到 ATOM 格式的返回结果,而当我使用 JavaScript 编程的时候,我希望得到 Json 格式的返回结果。 因此,我们在设计 REST API 的时候,应该提供完备的内容协商能力。 使用 URL 参数进行内容协商 最容易想到的自然是通过 URL 参数进行控
xiangzhihong
2018/02/02
2.4K0
Rest api简介
REST API有关幂等性等11条最佳实践
在我的职业生涯中,我使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同的错误,因此我认为写下一组最佳实践可能会更好。
lyb-geek
2023/11/08
3930
REST API有关幂等性等11条最佳实践
跟我一起探索 HTTP-跨源资源共享(CORS)
跨源资源共享CORS,是一种基于HTTP头的机制,该机制通过允许服务器标示除了它自己以外的其他源(域、协议或端口),使得浏览器允许这些源访问加载自己的资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的“预检”请求。在预检中,浏览器发送的头中标示有 HTTP 方法和真实请求中会用到的头。
用户1418987
2023/10/16
5630
跟我一起探索 HTTP-跨源资源共享(CORS)
【API架构】REST API 设计的原则和最佳实践
这篇最佳实践文章面向对创建 RESTful Web 服务感兴趣的开发人员,这些服务提供跨多个服务套件的高可靠性和一致性;遵循这些准则;服务定位于内部和外部客户快速、广泛、公开采用。 这是一个完整的图表,可以轻松理解 REST API 的原理、方法和最佳实践。 现在,让我们从每个盒子的原理开始详细说明它。 六项原则/约束 客户端-服务器:关注点分离是客户端-服务器约束背后的原则。通过将用户界面问题与数据存储问题分开,我们提高了用户界面跨多个平台的可移植性,并通过简化服务器组件提高了可扩展性。 无状态:通
架构师研究会
2022/03/08
1.6K0
REST API 最佳实践
客户端(前端)和服务器(后端)之间的通信通常不是超级直接的。因此,我们使用一个叫作“应用编程接口”(或 API)的接口,作为客户端和服务器之间的中介。
恋喵大鲤鱼
2023/05/07
1.9K0
REST API 最佳实践
REST API 安全设计指南
REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构设计。 目前在三种主流的Web服务实现方案中,REST模式服务相比复杂的SOAP和XML-RPC对比来讲,更加简洁,越来越多的web服务开始使用REST设计并实现。但其缺少安全特性,《REST API 安全设计指南》就是一个REST API安全设计的指南,权当抛砖引玉,推荐网站后台设计及
BestSDK
2018/02/27
3.4K1
REST API 安全设计指南
报`Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.`错误解决办法
使用了promise,但是在使用的过程中报Uncaught (in promise)错误,第一次遇到这种错误,所以在此记录下,方便以后解决问题
天天Lotay
2023/04/16
3.3K0
报`Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.`错误解决办法
REST API 设计最佳实践:如何构建、设计和使用 API ?
总的来说,HTTP协议出现以来Web服务也就存在了。但是,自从云计算出现后,才成为实现客户端与服务和数据交互的普遍方法。
API 小达人
2023/07/17
7910
RESTful API的设计原则是什么?
设计一个高效且易于使用的 RESTful API 需要遵循一系列原则和最佳实践。以下是 RESTful API 设计的主要原则:
王小婷
2025/05/25
940
深入解析 RESTful API:从设计到实践的完整指南
在当今的互联网世界中,不同系统之间的数据交互和通信是构建现代应用的核心需求。无论是移动应用、Web 平台,还是微服务架构,RESTful API 都扮演着桥梁的角色。它以其简洁性、灵活性和可扩展性,成为开发者构建分布式系统的首选方案。本文将从基础概念到实际应用,一步步拆解 RESTful API 的设计与实现,助你掌握这一关键技术。
DevKevin
2025/02/16
4690
为什么我使用 GraphQL 而放弃 REST API?
本文最初发布于 Max Desiatov 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。
winty
2021/05/19
2.5K0
分布式系统核心:REST风格的架构,REST成熟度模型及REST API管理
正确、完整地使用REST是困难的,关键在于RoyFielding所定义的REST只是一种架构风格,它并不是规范,所以也就缺乏可以直接参考的依据。好在Leonard Richardson补充了这方面的不足。
IT大咖说
2021/06/15
9630
分布式系统核心:REST风格的架构,REST成熟度模型及REST API管理
《ASP.ENT Core 与 RESTful API 开发实战》-- 读书笔记(第1章)
API 是一个系统向外暴露或公开的一套接口,通过这些接口,外部应用程序能够访问该系统
郑子铭
2021/01/13
9510
《ASP.ENT Core 与 RESTful API 开发实战》-- 读书笔记(第1章)
如何设计好的RESTful API
现阶段的开发模式多以前后端分离形式存在,前后端开发人员需要通过大量 API 来进行数据交互,如果在交互过程中前后端人员经常遭遇如下问题:
乱敲代码
2019/08/23
1.8K0
restful api接口规范和服务调用的区别_rest接口规范
网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现”APIFirst”的设计思想。RESTful API是目前比较成熟的一套互联网应用程序的API设计理论。
全栈程序员站长
2022/10/01
1.9K0
REST API安全设计指南
REST API 安全设计指南。REST 全称是 Representational State Transfer,它利用传统 Web 特点,提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构设计。
iginkgo18
2021/09/12
2K0
推荐阅读
相关推荐
REST API设计指导——译自Microsoft REST API Guidelines(四)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验