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

MATLAB中deconvwnr函数用法

目录

语法

说明

示例

使用 Wiener 滤波对图像进行去模糊处理


        deconvwnr函数的功能是使用 Wiener 滤波对图像进行去模糊处理。

语法

J = deconvwnr(I,psf,nsr)
J = deconvwnr(I,psf,ncorr,icorr)
J = deconvwnr(I,psf)

说明

J = deconvwnr(I,psf,nsr) 使用 Wiener 滤波算法对图像 I 进行反卷积,从而返回去模糊后的图像 J。psf 是对 I 进行卷积的点扩散函数 (PSF)。nsr 是加性噪声的噪信功率比。在估计图像与真实图像之间的最小均方误差意义上,该算法是最优的。

J = deconvwnr(I,psf,ncorr,icorr) 对图像 I 进行反卷积,其中 ncorr 是噪声的自相关函数,icorr 是原始图像的自相关函数。

J = deconvwnr(I,psf) 使用 Wiener 滤波算法对图像 I 进行反卷积,无估计噪声。在不含噪情况下,Wiener 滤波等效于理想的逆滤波。

示例

使用 Wiener 滤波对图像进行去模糊处理

        将图像读入工作区并显示它。

I = im2double(imread('cameraman.tif'));
imshow(I);
title('Original Image (courtesy of MIT)');

如图所示:

仿真运动模糊。

LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
figure, imshow(blurred)

如图所示:

仿真加性噪声。

noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...noise_mean, noise_var);
figure, imshow(blurred_noisy)
title('Simulate Blur and Noise')

如图所示:

        尝试在假设没有噪声的情况下进行还原。

estimated_nsr = 0;
wnr2 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
figure, imshow(wnr2)
title('Restoration of Blurred, Noisy Image Using NSR = 0')

        如图所示:

尝试使用更好的噪信功率比估计值进行还原。

estimated_nsr = noise_var / var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
figure, imshow(wnr3)
title('Restoration of Blurred, Noisy Image Using Estimated NSR');

如图所示:

参数说明

I — 模糊图像

        模糊图像,指定为任意维度的数值数组。

psf — 点扩散函数

        点扩散函数,指定为数值数组。

nsr — 噪信比

        噪信比,指定为非负标量或与图像 I 大小相同的数值数组。如果 nsr 是数组,则它表示频谱域。为 nsr 指定 0 等效于创建一个理想的逆滤波器。

ncorr — 噪声的自相关函数

噪声的自相关函数,指定为任意大小或维度(不超过原始图像)的数值数组。

  • ​如果 ncorr 的维度与图像 I 的维度匹配,则值对应于每个维度内的自相关。

  • ​如果 ncorr 是向量,psf 也是向量,则 ncorr 中的值表示第一个维度的自相关函数。

  • 如果 ncorr 是向量,psf 是数组,则一维自相关函数通过对称性外插至 psf 的所有非单一维度。

  • 如果 ncorr 是标量,则值表示噪声的功率。

icorr — 图像的自相关函数

图像的自相关函数,指定为任意大小或维度(不超过原始图像)的数值数组。

  • ​如果 icorr 的维度与图像 I 的维度匹配,则值对应于每个维度内的自相关。

  • ​如果 icorr 是向量,psf 也是向量,则 icorr 中的值表示第一个维度的自相关函数。

  • 如果 icorr 是向量,psf 是数组,则一维自相关函数通过对称性外插至 psf 的所有非单一维度。

  • 如果 icorr 是标量,则值表示图像的功率。

J — 去模糊后的图像

去模糊后的图像,以数值数组形式返回。J 与 I 的数据类型相同。

提示

  • ​输出图像 J 可能出现算法中使用的离散傅里叶变换引入的振铃效应。要减少振铃效应,请在调用 deconvwnr 之前使用 I = edgetaper(I,psf)。

参考

[1] Gonzalez, R. C., and R. E. Woods. Digital Image Processing. Addison-Wesley Publishing Company, Inc., 1992.

相关文章:

MATLAB中deconvwnr函数用法

目录 语法 说明 示例 使用 Wiener 滤波对图像进行去模糊处理 deconvwnr函数的功能是使用 Wiener 滤波对图像进行去模糊处理。 语法 J deconvwnr(I,psf,nsr) J deconvwnr(I,psf,ncorr,icorr) J deconvwnr(I,psf) 说明 J deconvwnr(I,psf,nsr) 使用 Wiener 滤波算法对…...

赛宁网安入选国家工业信息安全漏洞库(CICSVD)2023年度技术组成员单

近日,由国家工业信息安全发展研究中心、工业信息安全产业发展联盟主办的“2023工业信息安全大会”在北京成功举行。 会上,国家工业信息安全发展研究中心对为国家工业信息安全漏洞库(CICSVD)提供技术支持的单位授牌表彰。北京赛宁…...

Git系列之Git集成开发工具及git扩展使用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Git实战开发》。🎯🎯 &a…...

selenium headless 无头模式慢

selenium设置headlessTrue发现非常慢,headlessFalse要快很多。 最后测试发现升级到selenium最新版本,selenium4.15.2。设置--headlessnew,解决了,速度正常了。 新版selenium有了两种headless模式,参见:He…...

快速修复因相机断电导致视频文件打不开的问题

3-5 本文主要解决因相机突然断电导致拍摄的视频文件打不开的问题。 在日常工作中,有时候需要使用相机拍摄视频,比如现在有不少短视频拍摄的需求,如果因电池突然断电的原因,导致拍出来的视频播放不了,这时候就容易出大…...

Ceph 笔记, ssh写入缓存

硬件建议 — Ceph 文档 写入缓存 企业级 SSD 和 HDD 通常包括断电保护功能,包括 在运行时断电时确保数据耐久性,以及 使用多级缓存来加快直接或同步写入速度。这些设备 可以在两种缓存模式之间切换 -- 刷新到的易失性缓存 具有 fsync 的持久性媒体&a…...

WebSocket魔法师:打造实时应用的无限可能

1、背景 在开发一些前端页面的时候,总是能接收到这样的需求:如何保持页面并实现自动更新数据呢?以往的常规做法,是前端使用定时轮询后端接口,获取响应后重新渲染前端页面,这种做法虽然能达到类似的效果&…...

网络运维Day06-补充

文章目录 RAID磁盘阵列RAID0条带模式RAID1镜像模式RAID5高性价比模式RAID01RAID10 逻辑卷一块磁盘的使用流程逻辑卷的使用流程 制作逻辑卷步骤一:添加硬盘步骤二:分区规划步骤三:制作物理卷步骤四:制作卷组步骤五:制作…...

openssl+SM2开发实例一(含源码)

一、SM2算法介绍 SM2(国密算法2) 是中国国家密码管理局(CNCA)颁布的椭圆曲线密码算法标准,属于非对称加密算法。它基于椭圆曲线离散对数问题,提供了安全可靠的数字签名、密钥交换和公钥加密等功能。SM2被设…...

操作系统 | 编写内核

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖少年有梦不应止于心动,更要付诸行动。 目录结构 1. 操作系统实验之编写内核 1.1 实验目的 1.2 实验内容 1.3 实验步骤 1.4 实验过程 …...

Rust逆向学习 (4)

Reverse for Struct Rust中的结构体是一个重要的内容,由于Rust中没有类的概念,因此其他编程语言中的封装、继承、多态与Rust中的表现都有较大差异。 我们使用参考书中的一个示例开始进行分析。 Struct 初始化 struct User {username: String,email: …...

uniapp vue2 vuex 持久化

1.vuex的使用 一、uniapp中有自带vuex插件,直接引用即可 二、在项目中新建文件夹store,在main.js中导入 在根目录下新建文件夹store,在此目录下新建index.js文件 index.js import Vue from vueimport Vuex from vuexVue.use(Vuex)const store new Vuex.Store(…...

【媒体邀约】媒体宣传——企业成长的催化剂

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传是企业成长的催化剂,它在各种方面对企业的成功和发展起到了关键作用。 1. 曝光和知名度: 媒体宣传可以将企业和其产品或服务推向广泛的受众,…...

ansible问题排查

拷贝模板时报错:AnsibleError: template error while templating string: Missing end of comment tag. 原因 shell脚本中地{#和jinja中的语法comment tag相同,而且只有一半,导致无法渲染导致。 解决 在有语法冲突的地方使用组合标签{% r…...

7天入门python系列之第四天python数据结构

第3天主要是学习Python的函数和模块 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。第四天开始python 数据…...

远程电脑未连接显示器时分辨率太小的问题处理

背景:单位电脑显示器坏了,使用笔记本通过向日葵远程连接,发现分辨率只有800*600并且不能修改,网上找了好久找到了处理方法这里记录一下,主要用到的是一个虚拟显示器软件usbmmidd_v2 1)下载usbmmidd_v2 2)…...

Java 设计模式——解释器模式

目录 1.概述2.结构3.案例实现3.1.抽象表达式类3.2.终结表达式3.3.非终结表达式3.4.环境类3.5.测试 4.优缺点5.使用场景 1.概述 (1)如下图,设计一个软件用来进行加减计算。我们第一想法可能就是使用工具类,提供对应的加法和减法的…...

面试经典150题——Day37

文章目录 一、题目二、题解 一、题目 73. Set Matrix Zeroes Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0’s. You must do it in place. Example 1: Input: matrix [[1,1,1],[1,0,1],[1,1,1]] Output: [[1,0,1],[0,…...

在 Arduino IDE 2.0 中安装 ESP32 板(Windows、Mac OS X、Linux)

有一个新的 Arduino IDE——Arduino IDE 2.0(测试版)。在本教程中,您将学习如何在 Arduino IDE 2.0 中安装 ESP32 板并将代码上传到板。本教程与 Windows、Mac OS X 和 Linux 操作系统兼容。 据 Arduino 网站称:“ Arduino IDE 2.…...

西门子S7-1200PLC混合通信编程(ModbusTcp和UDP通信)

S7-1200PLC的MODBUS-TCP通信 西门子PLC ModbusTcp通信访问网关后从站(SCL语言轮询状态机)-CSDN博客文章浏览阅读305次。西门子PLC的ModbusTcp通信在专栏已有很多文章介绍,所不同的是每个项目的通信需求都略有不同,今天我们以访问网关后的三个从站数据来举例,给出轮询的推荐…...

信科赛(原大唐杯)电信业务仿真 --部分新加内容

全部都要自己填,务必完全背会...

贵阳伍子柒GEO——深耕贵阳本地,为贵阳企业打造专业、高效的本地推广解决方案

扎根贵阳,服务贵阳,是贵阳伍子柒网络科技公司的初心与坚守。作为深耕贵阳本地GEO推广领域的专业服务商,我们深知贵阳本地企业的推广困境:大数据企业面临AI可见性低、专业术语适配难的问题,文旅企业受季节影响大、曝光精…...

避坑指南:Qt5.14.2在Jetson Nano上交叉编译OpenGL ES2的完整流程与常见错误修复

Jetson Nano上Qt5.14.2交叉编译实战:OpenGL ES2避坑全攻略 在嵌入式开发领域,将Qt应用程序部署到ARM架构设备上一直是个充满挑战的任务。当项目需要图形加速支持时,OpenGL ES模块的引入会让这个过程的复杂度呈指数级上升。Jetson Nano作为一款…...

百灵快传(B0Pass)性能优化技巧:如何提升大文件传输速度与并发处理能力

百灵快传(B0Pass)性能优化技巧:如何提升大文件传输速度与并发处理能力 【免费下载链接】b0pass 百灵快传(B0Pass):基于Go语言的高性能 "手机电脑超大文件传输神器"、"局域网共享文件服务器"。LAN large file transfer tool。 项目…...

ODrive配置AS5047P磁编码器避坑指南:从SPI接线、参数设置到三种上电校准模式的深度解析

ODrive与AS5047P磁编码器实战:SPI配置优化与三种启动模式深度解析 在机器人关节、云台稳定系统等高精度运动控制场景中,无刷电机与绝对值磁编码器的组合已成为行业标配。AS5047P作为14位分辨率的SPI接口磁编码器,配合ODrive开源驱动器&#x…...

做再生牛津布出口的靠谱公司有哪些?

做再生牛津布出口,想找个靠谱的伙伴,这事儿我太有感触了。 在这个行业里泡了五年,看过太多品牌方和采购朋友踩坑。要么是环保认证搞不定,货到了港口被卡住;要么是面料性能不达标,看着挺“绿”,用…...

python terrascan

# 聊聊Python Terrascan:当IaC安全遇上Python的灵活 最近在基础设施即代码(IaC)安全扫描这个领域,有个工具逐渐引起了注意——Python Terrascan。它不是那种一夜爆红的技术,而是随着云原生和DevSecOps的普及&#xff0…...

降AI率工具哪个好?教你用免费额度筛选出最适合的

降AI率工具哪个好?教你用免费额度筛选出最适合的 买东西之前先试用,这个常识在选降AI率工具时同样适用。现在主流工具基本都提供免费额度,白嫖的机会不用白不用。今天教你一套"用免费额度筛选最适合工具"的完整方法,跟…...

C语言环境搭建指南

学习计算机的人大多接触过C语言,它常被视为编程入门的首选语言,经典的Hello World程序便是许多人的第一段代码。掌握一门语言前,首先需要搭建合适的开发环境。对于C语言而言,选择合适的编译器和编辑工具尤为关键。通过安装集成开发…...

Redis怎样优化大量Lua并发调用带来的CPU压力

EVAL并发高导致Redis CPU突增是因为其单线程执行Lua脚本,大量请求串行等待而非算力瓶颈;常见表现为CPU使用率高但延迟不明显、evicted_keys上升;根本原因包括全量KEYS扫描、未预热EVALSHA、大结果返回及纯计算循环。为什么 EVAL 并发高会导致…...