实验三、图像复原

news2024/11/9 6:17:58

1.  实验目的

(1) 理解退化模型。

(2) 掌握常用的图像复原方法。

2.  实验内

(1) 模拟噪声的行为和影响的能力是图像复原的核心。 示例 1 :使用 imnoise 添加噪声。

J = imnoise(I,'gaussian')  将方差为 0.01  的零均值高斯白噪声添加到灰度图I J = imnoise(I,'gaussian',m)  添加高斯白噪声,均值为 m ,方差为 0.01

J = imnoise(I,'gaussian',m,var_gauss)  添加高斯白噪声,均值为 m ,方差为 var_gauss J = imnoise(I,'localvar',var_local)  添加局部方差为 var_local  的零均值高斯白噪声。

J = imnoise(I,'localvar',intensity_map,var_local)  添加零均值高斯白噪声。噪声的局部方差 var_local I 中图像强度值的函数。图像强度值到噪声方差的映射由向量 intensity_map 指定。

J = imnoise(I,'poisson')  数据中生成泊松噪声,而不是向数据中添加人为噪声。有关详 细信息,请参阅算法。

J = imnoise(I,'salt & pepper')  添加椒盐噪声,默认噪声密度为 0.05。这会影响大约 5%   像素。J = imnoise(I,'salt & pepper',d)  添加椒盐噪声,其中 d 是噪声密度。这会影响 大约 d*numel(I)  个像素。

J = imnoise(I,'speckle')使用方程 J = I+n*I  添加乘性噪声,其中 n 是均值为 0、方差为 0.05 的均匀布随机噪声。

J = imnoise(I,'speckle',var_speckle)  添加方差为 var_speckle  的乘性噪声。

示例 2 :使用指定的分布产生空间随机噪

均匀噪声实例z = a + (b a) xU(0, 1)

 

clear

clc

a=2;

b=5;

noise= a + (b - a) * rand(100, 100) ;

blackIm=zeros( 100, 100);

noisedIm=noise + blackIm;

subplot(1,2, 1);histogram(noisedIm);

subplot(1,2,2);imshow(noisedIm,[])

示例 3 :自编程实现指定噪声与周期噪声 (见资料 imnoise2.m, imnoise3.m  文件)

例:利用椒盐噪声污染图像

[M,N]=size(f);

R=imnoise2('salt & pepper',M,N,0. 1,0);

gp=f;

gp(R==0)=0;

subplot(1,2, 1),imshow(f);

subplot(1,2,2),imshow(gp);

%图像是被概率只有 0. 1 的胡椒噪声污染的 uint8 类图像,图像上出现点 (胡椒状)

[M,N]=size(f);

R=imnoise2('salt & pepper',M,N,0,0. 1);

gp=f;

gp(R==1)=255;

figure

subplot(121),imshow(f);

subplot(122),imshow(gp);

%图像是被概率只有 0. 1 的盐粒噪声污染的 uint8 类图像,图像上出现点 (盐粒状)

意,由椒盐噪声成的噪声数组有三个值:对应于胡椒噪声的 0 ,对应于盐粒噪 1 ,以及对应于噪声的 0.5。为了使这个数组有,还需要对他进步的处理。椒 噪声污染图像时,需要找到 R 中所有的 0 值坐标,把相应原图像的坐标位置置为最 灰度,找到 R 中值为 1 的坐标,把相应原图像的坐标位置置为最灰度值。

例:利用周期噪声污染图像

 

C=[0 64;0 128;32 32;64 0;128 0;-32 32];

[r,R,S]=imnoise3(512,512,C);

subplot(3,2, 1),imshow(S,[]),title('规定脉冲的')

subplot(3,2,2),imshow(r,[]),title('空域中相应的正弦噪声模型')

C=[0 32;0 64;16 16;32 0;64 0;-16 16];

[r,R,S]=imnoise3(512,512,C);

subplot(3,2,3),imshow(S,[])

subplot(3,2,4),imshow(r,[])

C=[6,32;-2 2];

[r,R,S]=imnoise3(512,512,C);

subplot(3,2,5),imshow(r,[])

A=[1,5];

[r,R,S]=imnoise3(512,512,C,A);

subplot(3,2,6),imshow(r,[])

注意:像出现周期噪声通常源于电,电机的扰,通常通过在频域滤波来处理。

周期噪声的噪声模型是个离散的维正弦波,程为:

r (x, y ) = Asin 【2xp0 (x + Bx )/ M + 2xv0 (y + By ) / N】 

其中,x=0, 1,2 M-1 y=0, 1,2, … ,N- 1 A 是振幅,u0 v0 分别确定了关于 x 轴和 y 的正弦频率。Bx By 分别是关于原点的相移。定义M 函数接受任意数量的脉 位置 (频率坐标),每个脉冲位置都有自己的振幅,频率和相移参数。该函数还能够

输出各个正弦波之和的傅叶变换以及谱。

C 是具有 K 对频率 K×2 矩阵。定义频率中脉冲位置的域坐标(u, v) 。这些位置相对于 频率矩形中心在(floor(M/2) + 1, floor(N/2) + 1) 。脉冲位置被指定为相对于中心的增量。 例如,如果 M = N = 512 ,则中心位于 (257, 257) 。要指定 (280, 300)  处的脉冲,我们 指定对 (23, 43);即 257 + 23 = 280 257 + 43 = 300 。每个脉冲只需要一对坐

(2) 空域滤

help imfilter

imfilter -  多维图像的 N  维滤波

MATLAB  函数 使用多维滤波器 h  对多维数组 A 进行滤波,并在 B  中返回 果。

B = imfilter(A,h)

B = imfilter(A,h,options,...)

h = fspecial(type)

type -  滤波器的类型

'average' | 'disk' | 'gaussian' | 'laplacian' | 'log' | 'motion' | 'prewitt' | 'sobel'

help medfilt2

medfilt2 -  二维中位数滤波

MATLAB  函数 对图像 I  执行二维中位数滤波。每个输出像素包含输入图像中 应像素周围 3×3  邻域的中位数值。

J = medfilt2(I)

J = medfilt2(I,[m n])

J = medfilt2(___,padopt)

实验一

1. 1 至少 2 种不同类型的噪声,并绘制原图像、加噪后图像及对应直方图 图形窗口中[subplot(m,n,p)]

1.2 有椒盐噪声图像进行 5×5 方形窗口中值滤波。

附加内容: 自编程实现均值、中值、 自适应中值滤波器

(2) 幅退化的图像可以近似地用方g=Hf+n ,其中 g 为图像,H 为变称为点扩散函数 (PSF),f 为原始的真实图像,n 为附加噪声, 它在像捕获过程中产并且使图像质量变坏。其中,PSF 个很重要的因素, 值直接影响到恢复后图像的质量。

MATLAB具箱4 个图像恢复函数。这 4 个函数都以PSF 和模糊 图像作为主要变量。deconvwnr 函数使维纳滤波对图像恢复,求取最小二deconvreg 数实现约束去卷积,求取有约束的最小二乘解,可以设置对输出图 像的约束。deconvlucy 函数实现了个加速衰减的 Lucy-Richardson 算法。该 优化技术和泊松统计量进多次迭代。使该函数,不需要提供有关模糊 中附加噪声的信息。deconvblind 函数使的是盲去卷积算法,它在不知道 PSF 情况下进恢复。调deconvblind 函数时,将 PSF 的初值作为个变量 传递。该函数除了返回个修复后的图像以外,还返回个修复后的 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 滤波等效于理想的逆滤波。

%读取图片到工作区

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')

%假定噪声为 0 恢复图像

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');

实验二(选做其一)

2. 1  选择一幅晰的灰度图像,对该图像进行模糊化处理,然后分别采用逆滤波、 维纳滤波和约束最小二乘方滤波对模糊图像进行复原,比较各种图像复原方法 原效果。

2.2  选择一幅清晰的灰度图像,对该图像进行模糊化处理并加入不同强度的高斯 噪声,然后分别采用逆滤波、维纳滤波和约束最小二乘方滤波对退化图像进行 比较各种图像复原方法的复原效果。

加内容: 自编程实现不同截至频率的逆滤波并比较其复原效果。

Matlab help 图像去模糊_长笛人倚楼Gloria_新浪博客 (sina.com.cn)

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

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

相关文章

简单的做一个学校毕业啊项目

前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python:一种编程语言&…

2023年14界蓝桥杯省赛题解

2023年14界蓝桥杯省赛题解 蒟蒻笔者大二,第一次省赛。总结一下:“300块没了,退钱!” A、日期统计 问题描述 小蓝现在有一个长度为 100 的数组,数组中的每个元素的值都在 0 到 9 的范围之内。数组中的元素从左至右如…

【Spring专题】「技术原理」从源码角度去深入分析关于Spring的异常处理ExceptionHandler的实现原理

ExceptionHandler的作用 ExceptionHandler是Spring框架提供的一个注解,用于处理应用程序中的异常。当应用程序中发生异常时,ExceptionHandler将优先地拦截异常并处理它,然后将处理结果返回到前端。该注解可用于类级别和方法级别,…

ONNX转NCNN记录

【pytorch 转 onnx】pytorch-onnx 【onnx 转 ncnn】onnx-ncnn 【ncnn 加载模型】ncnn-load 一、python安装依赖项 pip install onnxruntime onnx opencv-python 二、创建模型并训练,加载模型参数并输出onnx #### pytorch 转 onnx import torch import torch.onnx…

小白学Pytorch系列- -torch.distributions API Distributions (1)

小白学Pytorch系列- -torch.distributions API Distributions (1) 分布包包含可参数化的概率分布和抽样函数。这允许构造用于优化的随机计算图和随机梯度估计器。这个包通常遵循TensorFlow分发包的设计。 不可能通过随机样本直接反向传播。但是,有两种主要方法可以…

【华为机试真题详解JAVA实现】—矩阵乘法

目录 一、题目描述 二、解题代码 一、题目描述 如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的 矩阵的大小不超过100*100 输入描述: 第一行包含一个正整数x,代表第一个矩阵的行数 第二行…

APP测试弱网测试

1、为什么要做弱网测试 当前APP网络环境比较复杂,网络制式有2G、3G、4G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。 另外,当前app使用场景多变,如进地铁、上公交、…

【Linux】进程理解与学习Ⅳ-进程地址空间

环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习Ⅰ-进程概念浅谈Linux下的shell--BASH【Linux】进程理解与学习…

跟姥爷深度学习1 浅用tensorflow做个天气预测

一、前言 最近人工智能、深度学习又火了,我感觉还是有必要研究一下。三年前浅学了一下原理没深入研究框架,三年后感觉各种框架都成熟了,现成的教程也丰富了,所以我继续边学边写。原教程链接: 第一章:tens…

Linux- 系统随你玩之--玩出花活的命令浏览器下

文章目录1、背景2、常规操作2.1、测试相关2.1.1、修改 HTML 请求标头2.1.2、 模拟不同浏览器发出2.1.3、重定向2.2、 下载相关操作2.2.1、 后台下载2.2.2、设置下载重试次数2.2.3、过滤指定格式下载2.2.4、限制总下载文件大小2.2.5、匿名FTP下载2.2.6、FTP认证下载2.2.7、利用代…

(链表专题) 725. 分隔链表 ——【Leetcode每日一题】

725. 分隔链表 给你一个头结点为 head 的单链表和一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等:任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。 这 k 个部分应该按照在链表中出现的顺…

亚马逊 CodeWhisperer: 个人免费的类似GitHubCopilot能代码补全的 AI 编程助手

1、官网 AI Code Generator - Amazon CodeWhisperer - AWS 官方扩展安装教程 2、安装VSCode 下载安装VSCode 3、VSCode安装CodeWhisperer插件 安装VSCode插件 - AWS Toolkit主侧栏,点击AWS ,展开CodeWhisperer,点击Start 在下拉菜单中点…

【100个 Unity实用技能】 | C# 中关于补位的写法 PadLeft,PadRight 函数

Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案&#xff…

LeetCode_101

内容提要 贪心算法 保证每次操作都属局部最优的,从而使得最后的结果是全局最优 全局结果是局部结果的简单求和,且局部结果互不相干 分配问题 分发饼干 455 简单 分发糖果 135 困难 先从左往右遍历一遍,如果右边孩子的评分比左边的高…

TryHackMe-Year of the Jellyfish(linux渗透测试)

Year of the Jellyfish 请注意 - 此框使用公共 IP 进行部署。想想这对你应该如何应对这一挑战意味着什么。如果您高速枚举公共 IP 地址,ISP 通常会不满意… 端口扫描 循例nmap 扫描结果中还有域名,加进hosts FTP 枚举 尝试anonymous Web枚举 有三个端…

LoRa无线通信技术之CAD介绍

信道活动检测 Lora扩频调制技术的使用在确定信道是否已被可能低于接收机噪声底限的信号。在这种情况下使用常规的RSSI方式判断显然是不切实际的。为此,信道活动检测器用于检测其他LoRaTM信号的存在。下图为通道活动检测(CAD)过程: 工作原理 Lora信道活动检测模式被设计成以最…

一站式指标平台 Kyligence Zen 功能详解

近日,Kyligence 正式发布一站式指标平台 Kyligence Zen GA 版本。其基于 Kyligence 核心 OLAP 能力打造,融合了领先企业建设指标平台的丰富实践,具备 ZenML 指标语言、指标目录、Excel / WPS 直连分析、模板市场等创新能力,将以简…

GPU受限,国内AI大模型能否交出自己的答卷?

继百度之后,阿里、华为、京东、360等大模型也陆续浮出水面,大模型军备竞赛正式开启。 4月7日,阿里云宣布自研大模型“通义千问”开始邀请企业用户测试体验。 4月8日,华为云人工智能领域首席科学家田奇现身《人工智能大模型技术高峰…

一起学 WebGL:图元的类型

大家好,我是前端西瓜哥,今天来说说 WebGL 中的三种图元。 在 WebGL 中,图元有三种:点、线、以及三角形。 绘制的 API 为: gl.drawArrays(mode, first, count)这里的 mode 就是要绘制的图元类型。 我们绘制 4 个点&…

办公协作效率想提质增效,可借助开源大数据工具!

在信息爆炸式发展的今天,提升办公协作效率,让各部门的信息有效互通起来,做好数据管理,已经成为众企业提升竞争力的方式方法。那么,如果想要提升办公效率,就需要了解开源大数据工具了。在数字化发展进程中&a…