《数字图像处理》实验报告五

一、实验任务与要求

  • 实现一个自适应局部降噪滤波器;
  • 在一幅测试版图像中加入运动模糊和高斯噪声,产生一幅退化图像,采用 deconvwnr 函数实现逆滤波及维纳滤波。

 

二、实验报告

(一)实现一个自适应局部降噪滤波器

1、自适应局部降噪滤波器函数

%自适应局部降噪滤波器函数 adpfilter
function g=adpfilter(f,nhood,noise_var)f=im2double(f);local_mean=filter2(ones(nhood),f)/prod(nhood); %局部均值 u=(1/mn)*∑f(x,y)  模板滤波,重叠区相*然后相加local_var=filter2(ones(nhood),f.^2)/prod(nhood)-local_mean.^2; %局部方差 σ^2=(1/mn)*∑f^2(x,y)-u^2g=f-local_mean; %g(x,y)=f(x,y)-uf=local_var-noise_var; %局部方差-噪声方差f=max(f,0);g=local_mean+((g./max(local_var,noise_var)).* f);
end

2、处理代码

f=imread('circuitboard.tif');
f=imnoise(f,'gaussian',0,0.01); %添加高斯噪声
g=adpfilter(f,[3,3],1000);%自适应局部降噪滤波器
subplot(1,2,1);
imshow(f);title('原图');
subplot(1,2,2);
imshow(g);title('自适应局部降噪');

3、处理效果

 

(二)在一幅测试版图像中加入运动模糊和高斯噪声,产生一幅退化图像,采用 deconvwnr 函数实现逆滤波及维纳滤波

1、给图像加上运动模糊

f=imread('checkerboard-clean.tif');
f=im2double(f);
PSF=fspecial('motion',45,45); %运动滤波器 
gb=imfilter(f,PSF,'circular'); %运动模糊

2、继续加上高斯噪声

noise=imnoise(zeros(size(f)),'gaussian',0,0.001); %均值为0,方差为0.001的高斯噪声
g=gb+noise; %运动模糊+高斯噪声
subplot(4,2,1);
imshow(f);title('原图');
subplot(4,2,2);
imshow(gb);title('运动模糊图像');
subplot(4,2,3);
imshow(noise);title('高斯噪声图像');
subplot(4,2,4);
imshow(g);title('模糊图像+噪声图像');

3、处理效果

     

     

4、实现逆滤波(忽略噪声) 

default_nsr=0;
r1=deconvwnr(g,PSF,default_nsr);
subplot(4,2,5);
imshow(r1);title('逆滤波');

5、实现维纳滤波(考虑噪声) 

signal_var=var(f);
noise_var=var(noise);
estimate_nsr=noise_var/signal_var;
r2=deconvwnr(g,PSF,estimate_nsr);
subplot(4,2,6);
imshow(r2);title('考虑噪声的维纳滤波');

6、处理效果

      

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

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

相关文章

ajax请求接口不设置请求头可以请求成功,但是设置请求头之后就跨域,已解决

遇到这个问题我们不要着急找后端,先通过控制台看看有没有报错,控制台的列表是不会有这个红色报错的,所以我们要看下图: 点击这个红色,然后在下面会出现一些信息 很明显是这个请求头timestamp的请求头被屏蔽了&#xff…

Linux C语言程序中线程本地存储变量的内存分配和使用

在多线程中,有一种叫线程本地存储(Thread-Local Storage,TLS)的变量,它是每个线程有且只有一份自己的副本,对于这个线程来说,它是全局变量,可被所有函数共用;因为每个线程…

单机、集群和分布式

目录 1.概述 2.单机服务器 单机版的服务器的性能,设计上的瓶颈? 3.集群 解决瓶颈1: 没有解决瓶颈2: 没有解决瓶颈3: 集群的优点? 集群的缺点? 4.分布式 分布式的优点? 分…

c++笔记提高效率-emplace函数

在C中,标准库容器的emplace方法是一种高效的插入操作,用于在容器中直接构造元素。与insert和push方法相比,emplace方法可以避免不必要的复制或移动操作,因为它直接在容器内部构造元素。下面详细介绍各容器的emplace方法及其用法。…

java常用类(2)

目录 1.String概述 1.1 字符串的不变性 1.2 创建String对象两种方式的区别 1.3 字符串中的构造方法 1.4 字符串判断功能的方法 1.5 字符串获取功能的方法 1.6 字符串转换功能的方法 1.7 字符串替换功能的方法 2.StringBuffer 2.1 构造方法 2.2 插入方法 2.2.1 app…

a-table单元格指定合并以及表格双击编辑以及未填写指定验证功能

文章目录 a-table单元格指定合并以及表格双击编辑以及未填写指定验证功能一、 a-table单元格指定合并1. a-table2. columns3. 图例 二、a-table 表格双击编辑以及未填写验证1. a-table2. js3. 图例 a-table单元格指定合并以及表格双击编辑以及未填写指定验证功能 一、 a-table…

从零开始精通Onvif之加密与认证

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。 概述 安全是Onvif规范的核心部分,它涵盖了加密和认证两大领域。在Onvif标准下,安全措施主要包括:设备访问控…

大模型AI技术实现语言规范练习

人工智能技术可以为语言规范练习提供多种有效的解决方案,帮助学习者更有效地掌握语言规范。以下是一些常见的应用场景。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 智能纠错 利用自然语言处理技术,可以…

DC/AC电源模块一种效率与可靠性兼备的能源转换解决方案

DC/AC电源模块都是一种效率与可靠性兼备的能源转换解决方案 DC/AC电源模块是一种能够将直流电源(DC)转换为交流电源(AC)的设备。它在现代电子设备中扮演着非常重要的角色,因为许多设备需要交流电源才能正常运行。无论…

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用

树形结构的勾选、取消勾选、删除、清空已选、回显、禁用 基本页面: 分为上传文件和编辑的页面 代码实现要点: 上传文件页面: 点开选择范围弹窗,三个radio单选框都为可选状态,默认显示的是第一个单选框(按…

开源C++版AI画图大模型框架stable-diffusion.cpp开发使用初体验

stable-diffusion.cpp是一个C编写的轻量级开源类AIGC大模型框架,可以支持在消费级普通设备上本地部署运行大模型进行AI画图,以及作为依赖库集成的到应用程序中提供类似于网页版stable-diffusion的功能。 以下基于stable-diffusion.cpp的源码利用C api来…

人工智能的未来:畅想智能新时代

人工智能正在改变我们的世界,它将带我们走向何方? 著名神经科学家、Numenta 公司创始人杰夫•霍金斯 Jeff Hawkins 在其著作《人工智能的未来》中,描绘了一幅人工智能发展的光明图景。他认为,人工智能将超越人类智能,…

理解Gobrs-Async相对于CompletableFuture的优势

Gobrs-Async框架针对复杂应用场景下的异步任务编排,提供了一些传统Future或CompletableFuture所不具备的特性和能力,以下是它能够解决的问题和相对于CompletableFuture的优势: 1. **全链路异常回调**: - Gobrs-Async允许为任务…

关于地图点击的操作

_this.map.dragging.disable(); //地图拖拽 _this.map.doubleClickZoom.disable(); //禁止双击放大地图 _this.map.scrollWheelZoom.disable(); //禁止鼠标滑轮滚动放大缩小地图 _this.map.dragging.enable(); //e…

备份和镜像TrinityCore

相比重新安装,省去了编译的过程,同时还能保留以前的人物、装备等。 注意,若不想重新编译安装,则需要创建一样的目录、账户等,以减少不必要的麻烦。 首先备份数据: mysql备份和导入方法见:使用dump备份my…

视觉与味蕾的交响:红酒与艺术的无界狂欢,震撼你的感官世界

在浩瀚的艺术海洋中,红酒以其不同的魅力,成为了一种跨界整合的媒介。当雷盛红酒与艺术相遇,它们共同呈现出一场特别的视觉盛宴,让人沉醉在色彩与光影的交织中,感受红酒与艺术的无界碰撞。 雷盛红酒,宛如一件…

AI作画Prompt不会写?Amazon Bedrock Claude3.5来帮忙

最新上线的Claude3.5 Sonnet按照官方介绍的数据来看,在多方面超越了CPT-4o,是迄今为止最智能的模型。 而跟上一个版本相比,速度是Claude 3 Opus的两倍,成本只有其五分之一。 Claude3.5 Sonnet不仅擅长解释图表、图形或者从不完…

vue3中子组件调用父组件事件

在 Vue 3 中,子组件调用父组件的事件(或方法)的方式与 Vue 2 类似,但 Vue 3 引入了 Composition API,这可能会改变你组织代码的方式。不过,基本的通信机制——通过自定义事件 ($emit) 通知父组件——仍然保…

总结:DataX

一、介绍 本文主要介绍DataX的安装与使用。 二、安装 安装:DataX/userGuid.md at master alibaba/DataX GitHub 六、案例 实现从MySQL同步数据到HDFS,然后使用Hive进行聚合计算并将结果存储回MySQL。 步骤2:使用DataX同步MySQL数据到H…

Day28:回溯法 491.递增子序列 46.全排列 47.全排列 II 332.重新安排行程 51. N皇后 37. 解数独

491. 非递减子序列 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素 。你可以按 任意顺序 返回答案。 数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情…