图像复原之维纳滤波

基本原理

图像复原是图像处理的重要组成部分,由于图像在获取和传输过程中通常不可避免的要受到一些噪声的干扰,因此在进行其他图像处理以及图像分析之前,应该尽量将图像复原到其原始真实状态。图像复原的关键问题是在于建立退化模型。图像退化模型如下:
在这里插入图片描述

维纳滤波器是一种自适应最小均方误差滤波器,它最终的目的是使得复原图像和原始图像的均方误差最小。省去推导过程,给出频率的维纳滤波公式
在这里插入图片描述

示例演示

在下面例子中,我们对退化函数进行了简化,将退化函数置为1,因此维纳滤波公式简化为:
在这里插入图片描述

#include <opencv2\opencv.hpp>
#include <iostream>using namespace std;
using namespace cv;Mat GetSpectrum(const Mat &src)
{Mat dst, cpx;Mat planes[] = { Mat_<float>(src), Mat::zeros(src.size(), CV_32F) };merge(planes, 2, cpx);dft(cpx, cpx);split(cpx, planes);magnitude(planes[0], planes[1], dst);//频谱就是频域幅度图的平方multiply(dst, dst, dst);return dst;
}Mat WienerFilter(const Mat &src, const Mat &ref, int stddev)
{//这些图片是过程中会用到的,pad是原图像0填充后的图像,cpx是双通道频域图,mag是频域幅值图,dst是滤波后的图像Mat pad, cpx, dst;//获取傅里叶变化最佳图片尺寸,为2的指数int m = getOptimalDFTSize(src.rows);int n = getOptimalDFTSize(src.cols);//对原始图片用0进行填充获得最佳尺寸图片copyMakeBorder(src, pad, 0, m - src.rows, 0, n - src.cols, BORDER_CONSTANT, Scalar::all(0));//获得参考图片频谱Mat tmpR(pad.rows, pad.cols, CV_8U);resize(ref, tmpR, tmpR.size());Mat refSpectrum = GetSpectrum(tmpR);//获得噪声频谱Mat tmpN(pad.rows, pad.cols, CV_32F);randn(tmpN, Scalar::all(0), Scalar::all(stddev));Mat noiseSpectrum = GetSpectrum(tmpN);//对src进行傅里叶变换Mat planes[] = { Mat_<float>(pad), Mat::zeros(pad.size(), CV_32F) };merge(planes, 2, cpx);dft(cpx, cpx);split(cpx, planes);//维纳滤波因子Mat factor = refSpectrum / (refSpectrum + noiseSpectrum);multiply(planes[0], factor, planes[0]);multiply(planes[1], factor, planes[1]);//重新合并实部planes[0]和虚部planes[1]merge(planes, 2, cpx);//进行反傅里叶变换idft(cpx, dst, DFT_SCALE | DFT_REAL_OUTPUT);dst.convertTo(dst, CV_8UC1);return dst;
}int main(int argc, char** argv)
{char *imgName = "D:\\TestData\\lena.jpg";Mat inputImg;inputImg = imread(imgName, 0);if (!inputImg.data){cout << "No image data" << endl;return -1;}imshow("OriginImage", inputImg);cv::Mat noise(inputImg.size(), inputImg.type());float m = (10);float sigma = (50);cv::randn(noise, m, sigma); //mean and varianceMat noiseImg =inputImg + noise;imshow("NoiseImage", noiseImg);Mat resultImg = WienerFilter(noiseImg, inputImg, 50);imwrite("./result.jpg", resultImg);imshow("ResultImage", resultImg);waitKey(0);return 0;
}

运行结果

在这里插入图片描述

参考资料

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像复原

1图像复原的而理论模型 定义&#xff1a;在成像过程中&#xff0c;由于成像系统各种因素的影响&#xff0c;可能使获得的图像不是真实景物的完善影像。图像在形成、传播和保存过程中使图像质量下降的过程&#xff0c;称为图像退化。图像复原就是重建退化的图像&#xff0c;使其…

UBI.city白皮书发布与空投领取方法

在经历了至少5次的全面推翻与重构后&#xff0c;UBI.city的方案终于可以发布了。 UBI.city简介 UBI.city是去中心化组织的动态治理协议&#xff0c;白皮书可在官网 www.ubi.city 中查阅。 随着The DAO在2016年募集了1170万枚ETH&#xff08;价值约2.45亿美元&#xff09;&am…

WhatsApp被禁用操作教程|实操WhatsApp解封的过程|2023三月

我是上周被WhatsApp被禁用了&#xff0c;按照网上的方法&#xff0c;点击Support提交&#xff0c;会自动跳转一个邮件&#xff0c;发送到WhatsApp官方&#xff0c;我满心欢喜地等待解封&#xff0c;以为会像大家说的那样&#xff0c;第二天可以解封。 就是点击那个 支持 提交了…

微信网页版解封方法

最近&#xff0c;微信又推出了网页版的【文件传输助手】&#xff0c;也就是说&#xff0c;无需登录客户端的微信&#xff0c;即可进行文件或图片的传输。 网址是 https://filehelper.weixin.qq.com网址巨长&#xff0c;咋一看&#xff0c;又长又难记&#xff0c;玩个锤子 经…

微信小程序-获取用户头像信息以及修改用户头像

这里主要用到button的open-type功能&#xff0c;官网已有说明&#xff1a; 给button设置open-type"chooseAvatar"&#xff0c;来使bindchooseavatar方法生效&#xff0c;在bindchooseavatar指定的函数中获取用户的头像信息 <button open-type"chooseAvata…

小程序中新版本的获取用户头像与昵称:bind:chooseavatar

前言&#xff1a; 自从微信官方把获取用户昵称与头像的功能改动以后&#xff0c;给我们开发和用户的操作又增加了很多负担&#xff0c;但是没办法&#xff0c;只能使用最新的使用方法了。 小程序用户头像昵称获取规则调整公告 新版实现效果&#xff1a; 注意&#xff0c;真机…

关于QQ群头像以及微信讨论组头像的工具类

QQ群头像以及微信讨论组头像工具类介绍 介绍&#xff1a; 由于段时间公司项目需求&#xff0c;在翻了网上很多代码后发现&#xff0c;很多人用的是自定义View的办法来实现此类头像的效果&#xff0c;但是&#xff0c;这样一来就必须改变项目中原有的控件&#xff0c;而且当需要…

桌面宠物!

电脑桌宠&#xff1a; 天选姬 下载地址&#xff1a;https://www.asus.com.cn/supportonly/FA506QR/HelpDesk_download/ 选择系统&#xff0c;点击软件程序下的查看更多&#xff0c;选择天选姬桌面大鹅&#xff08;Desktop Goose&#xff09; 下载地址&#xff1a;https://wwu.…

微信小程序最新调用用户头像以及昵称

众所周知&#xff1a;微信小程序开发是面对“公告”编程&#xff0c;小程序的api更新迭代之快&#xff0c;让人叫苦不堪&#xff0c;&#xff0c;&#xff0c; 最近开发小程序项目时&#xff0c;获取用户头像和昵称的方式发生了很大的改变&#xff1a; 它居然绑定到一个 butt…

微信小程序新版头像昵称API [保存用户头像到服务器]

根据微信官方文档的说法&#xff0c;2022年10月之后&#xff0c;原本的获取昵称和头像的api&#xff0c;也就是wx.getUserProfile和wx.getUserInfo将停止支持&#xff0c;在那之后发布和更新的小程序必须停止使用这两个api。 这两个api获得的用户头像均为一个url&#xff0c;指…

相片怎么变成漫画头像?分享个好用的处理工具

①.首先我们在电脑上打开任意浏览器&#xff0c;搜索进入改图在线做图页面。进入之后&#xff0c;可以看到上方的导航栏中有“去玩特效”这个导航&#xff0c;点击这里或者首页推荐工具下方的“照片特效”进入即可。 ②.进入照片特效页面后&#xff0c;这里有很多中卡通人脸特效…

taro小程序用户头像昵称获取

微信发布《小程序用户头像昵称获取规则调整公告》之后&#xff0c;无法再使用getUserProfile获取用户头像和昵称&#xff0c;因此小程序官方提供了头像昵称填写功能来完善个人资料。 对button添加open-type"chooseAvatar" bind:chooseavatar"onChooseAvatar&qu…

聊天截图厚码也不安全,大神写了算法分分钟给你还原

金磊 发自 凹非寺量子位 | 公众号 QbitAI 讲个恐怖的故事。 早上跟同事在微信闲谈&#xff0c;聊起了一位女同事最近的变化。 结果他反手就把文字打上马赛克&#xff0c;截图丢进了群里&#xff1a; 还欠欠儿地补了一刀&#xff1a; XXX&#xff0c;他说你坏话了呦~ 万万没想到…

深度对话三维家 | 4万亿市场,家装设计会诞生AIGC首个杀手级赚钱应用吗?

2022年&#xff0c;ChatGPT的火爆登场&#xff0c;超级烧钱的AI大模型赛道随即进入“千模大战”&#xff0c;“战况”惨烈异常。 时间来到2023年年中&#xff0c;AIGC热度不减&#xff0c;虽然创业者还在汹涌入局。究竟如何使用AIGC技术&#xff1f;AIGC技术可以在哪些场景率先…

2022年AIGC简单展望

2022 对于社会是不平凡的一年&#xff0c;而对于科技也同样是不平凡的一年。人们在社会中遭受着失意&#xff0c;却在科技中寻找希冀。对于一个命运共同体&#xff0c;它想着如何破除衰退&#xff0c;而同样对于一个活生生的个体或者家庭&#xff0c;他们也在摸索改变命运的机遇…

资本观望,大厂入局,海外大模型血脉压制……国内AIGC创业者的机会在哪里?...

图片来源&#xff1a;由无界 AI生成 A股AI概念股直线式拉涨&#xff0c;技术大牛带资进组分分钟成数十亿人民币独角兽&#xff0c;互联网巨头争抢着入局&#xff0c;政府各类扶持政策持续出台&#xff0c;媒体动不动就是万亿风口&#xff0c;500万年薪难招AIGC大牛……2022年以…

孔乙己新编

原创&#xff1a;刘教链 * * * 好币App的UI&#xff0c;是和别个儿不同的&#xff1a;开屏画面过后&#xff0c;扑面而来的是浓浓的山寨风&#xff0c;可以随时梭上一把。黄袍加身的人&#xff0c;傍午傍晚送完外卖&#xff0c;每每换上十几个u&#xff08;注&#xff1a;指USD…

裁员一万转身拥抱AI,Meta又要改名了

作者 | Eric 编辑 | Zuri‍‍‍‍‍‍ 首图来源&#xff1a;The New York TImes 美国科技四巨头中&#xff0c;如今就属Meta最显落寞了。 前不久&#xff0c;苹果CEO库克到访中国&#xff0c;不管是跟普通顾客在三里屯打成一片&#xff0c;还是跟科技部长会面&#xff0c;都受到…

巴比特 | 元宇宙每日必读:训练速度提升15倍,微软开源Deep Speed Chat,用户可通过“傻瓜式操作”训练大语言模型...

摘要&#xff1a;4月12日&#xff0c;微软宣布开源了Deep Speed Chat&#xff0c;用户可通过Deep Speed Chat提供的“傻瓜式”操作&#xff0c;以最短的时间、最高效的成本训练类ChatGPT大语言模型&#xff0c;这标志着一个人手一个ChatGPT的时代要来了。据悉&#xff0c;Deep …

AI大火:让卖课的先富起来

作者&#xff5c;路世明编辑&#xff5c;大 风 ChatGPT的爆火&#xff0c;再次掀起了全球人工智能产业的热潮。 自年初以来&#xff0c;国内外科技巨头相继开发并发布了一大批类GPT产品。海外方面&#xff0c;谷歌有Bard&#xff0c;Meta有LLaMA&#xff0c;亚马逊有Amazon B…