使用逆滤波算法deconvwnr恢复图像回复图像时,产生了很多横竖条纹。解决办法

ops/2024/9/19 0:38:33/ 标签: 算法, 计算机视觉, opencv, 数字图像处理

使用逆滤波算法deconvwnr恢复图像回复图像时,产生了很多横竖条纹。解决办法

原来的代码

% 清除工作空间并关闭所有图形窗口
clear; clc; close all;% 读取原始图像
original_image = imread('pic3.jpg');% 显示原始图像
subplot(131);
imshow(original_image);
title('Original Image');% 创建模糊核(PSF)
PSF = fspecial('gaussian', [5 5], 2); % 高斯模糊核
blurred_image = imfilter(original_image, PSF); % 模糊图像% 显示模糊图像
subplot(132);
imshow(blurred_image);
title('Blurred Image');% 估计噪声方差
estimated_noise_variance = 0.0001; % 估计的噪声方差% 使用逆滤波算法deconvwnr恢复图像
restored_image = deconvwnr(blurred_image, PSF, estimated_noise_variance);% 显示恢复后的图像
subplot(133);
imshow(restored_image);
title('Restored Image');

结果图:

在这里插入图片描述

横竖条纹可能是由于逆滤波算法的过度放大导致的,这是常见的问题之一。在处理模糊和噪声的图像时,逆滤波容易放大高频噪声,从而产生这种条纹效应。为了解决这个问题,可以尝试以下方法之一:

1.正则化参数调整:逆滤波算法通常有一个正则化参数,用于控制放大高频噪声的程度。通过调整正则化参数,可以尝试减轻条纹效应。
2.使用其他复原算法:除了逆滤波算法外,还有许多其他复原算法可供选择,如Richardson-Lucy 算法、Wiener 滤波器等。尝试使用不同的算法可能会获得更好的结果。
3.处理模糊核不确定性:如果模糊核的准确性不高或无法准确估计,可以尝试使用一些更复杂的方法来处理模糊核的不确定性,如盲去卷积算法
4.后处理:对恢复的图像进行后处理操作,如边缘增强、降噪等,以改善图像质量并减轻条纹效应。

尝试调整正则化参数来减轻条纹效应,代码如下:

% 使用逆滤波算法deconvwnr恢复图像,并调整正则化参数
restored_image = deconvwnr(blurred_image, PSF, estimated_noise_variance, 0.01);% 显示恢复后的图像
subplot(133);
imshow(restored_image);
title('Restored Image');

结果:横竖条纹减少
图像:
在这里插入图片描述

可以尝试不同的正则化参数值,以找到最适合所选图像的结果。
如果问题仍然存在,可能需要尝试其他复原算法或进行更复杂的处理。


http://www.ppmy.cn/ops/23197.html

相关文章

IDEA代码重构

重构 重构的目的: 提高代码的可读性、可维护性、可扩展性和性能。 重命名元素 重命名类 当我们进行重命名操作的时候可以看到第六行存在一个R(rename),点击后就会弹出所偶有引用,这样可以避免我们在修改后存在遗漏引用处未修改。 我们可以通过…

redis在实际项目作用

Redis 在项目中的作用可以根据不同分类进行概述,以下是几个重要分类及其对应的作用: 性能提升 缓存:作为高速缓存存储频繁访问的数据,减少对主数据库的访问次数,降低延迟,提高响应速度。起加速和保护的作…

Bentley二次开发教程27-交互窗口-界面开发方法

界面设计概述 引言 在我们掌握了交互式工具的使用方法后,在使用过程中会发现:虽然工具中拥有多种交互的手段,但仅凭工具中鼠标,特殊按键与信息提示等交互方法,没有办法同时对多个信息进行展示,也不够直观…

如何修改php版本

我使用的Hostease的Windows虚拟主机产品,由于网站程序需要支持高版本的PHP,程序已经上传到主机,但是没有找到切换PHP以及查看PHP有哪些版本的位置,因此咨询了Hostease的技术支持,寻求帮助了解到可以实现在Plesk面板上找到此切换PHP版本的按钮…

陪丨玩丨系丨统搭建制作流程APP小程序H5多端源码前后端一次性交付,本地授权,无二次费用!可定制开发!

陪丨玩app小程序H5开发,软件搭建,程序制作、系统设计 数据存储是陪玩平台源码的重点,没有数据库,用户的账号信息、平台产生的数据都无法顺利存储和读取,不能让用户拥有完善良好的用户体验。虽然是存放在服务器上&…

JavaScript简介及未来发展

JavaScript 是一种高级的、解释型的编程语言。它是一种基于原型、多范式的动态脚本语言,广泛应用于网页开发中,用于增强网页的交互性、创建动态更新的内容、动画等,并且能够响应用户的一,来龙去脉 JavaScript 最初由 Netscape 公司…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议:ICML 2021链接:https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别,这限制了它们的广泛应用。为了突破这一局限,本文探索了一种新的学习方法&#x…

【氮化镓】GaN HEMT SEEs效应影响因素和机制

研究背景:AlGaN/GaN HEMT因其在高电压、高温和高频率下的操作能力而受到关注,尤其在航空航天和汽车应用中,其辐射响应变得尤为重要。重离子辐射可能导致绝缘体失效,即单事件效应(SEEs)引起的栅介质击穿。 …

解决uniapp修改内置组件样式,在微信中不生效问题

下面是作者在开发工作中遇到的问题&#xff0c;踩坑几小时最后解决的办法。 接下来以UNIAPP文档中的内置组件 slider 为例 接下来直接上样式代码&#xff1a; <style lang"scss" scoped>::v-deep .wx-slider-wrapper {height: 100% !important;}::v-deep .w…

React的useEffect

概念&#xff1a;useEffect是一个React Hook函数&#xff0c;组件渲染之后执行的函数 参数1是一个函数&#xff0c;可以把它叫做副作用函数&#xff0c;在函数内部可以放置要执行的操作参数2是一个数组&#xff08;可选参&#xff09;&#xff0c;在数组里放置依赖项&#x…

Gone框架介绍6 - 如何使用gone开发web服务

文章目录 1.安装gone辅助工具2.创建一个web项目并运行代码项目结构3.Router4.Controller5.Service 我在两年前实现了一个Golang的依赖注入框架&#xff0c;并且集成了gin、xorm、redis、cron、消息中间件等功能&#xff0c;自己觉得还挺好用的&#xff1b;之前一直没有时间写文…

Idea实现远程debug调试

创建demo package com.merchen.hello_world.controller;import org.springframework.web.bind.annotation.*;RestController RequestMapping("/res") public class ResController {GetMapping("/test/{value}")public String testController(PathVariable…

Variables of type ByteArray cannot be used to query

问题描述 Activiti使用processVariableValueLessThanOrEqual()方法根据变量查询报错&#xff0c;报错信息如下 org.activiti.engine.ActivitiIllegalArgumentException: Variables of type ByteArray cannot be used to queryat org.activiti.engine.impl.QueryVariableValue.i…

什么是面向对象?

谈到面向对象&#xff0c;我们不得不说到面向过程。因为面向对象就是从面向过程过渡而来的。 面向过程&#xff1a;就是将一个大的任务分成一条条小的步骤&#xff0c;这些步骤由一个个函数来完成。 而面向对象呢&#xff0c;更加注重这个任务中的参与者&#xff0c;需求里有…

工具链工具——映射与调度、模拟与验证、开发与测试工具

本篇文章将重点介绍工具链的工具相关知识&#xff0c;我们将从工具链的基本概念出发&#xff0c;重点介绍工具链中的映射和调度工具、模拟与验证工具、开发和测试工具&#xff0c;最后提出对工具链发展的展望&#xff0c;从而对工具链的工具进行一个较为系统的讲解。 工具链的…

销售凭证中缺少贷方科目和风险类别-原因分析

信用账户&#xff08;VBAK/LIKP&#xff0c;-KNKLI&#xff09;和风险类别&#xff08;VBAK/LIKP-CTLPC&#xff09;未在销售订单或交货中填充&#xff0c; 缺少信用主数据可导致&#xff1a; 缺少信用检查&#xff0c;销售凭证的信用状态显示“未执行”缺少信用敞口的信用值…

这些小众工作软件让你事半功倍

大家好&#xff0c;我是追求高效工作的小红书种草小能手&#xff01;今天要和大家分享几款超实用的工作软件&#xff0c;它们可能不像那些大牌软件那样家喻户晓&#xff0c;但绝对能让你的工作生活焕然一新&#xff01;&#x1f31f; 1️⃣《亿可达》- &#x1f5a5;️自动化办…

Git中标签(Tag)的使用

在Git中&#xff0c;标签是一种轻量级的指针&#xff0c;它指向某个特定的提交。与分支不同的是&#xff0c;标签通常用于标记重要的提交&#xff0c;如发布版本。标签是静态的&#xff0c;一旦指向某个提交&#xff0c;通常不会再改变。在本文中&#xff0c;我们将介绍Git中标…

C++:常函数

在C中&#xff0c;常函数&#xff08;const member functions&#xff09;是指在类的成员函数声明和定义中使用 const 关键字修饰的函数。常函数的存在主要是为了在类的实例上提供一种保证&#xff1a;该函数不会修改类的成员变量。 在类的成员函数声明中&#xff0c;如果函数…

优化ES搜索性能

最近做的舆情系统用到了ES,比数据库的效率要高得多,不过我也一直在顾虑经过长时间的运行之后数据编的特别多,到时ES也变得吃力,最近也有一些了解 优化ES主要从两方面考虑,硬件和软件 集群和硬件优化 使用更好的硬件肯定是能快速解决问题的,但是这需要钱,我们说了不算,所以主…