数字图像处理实验5图像复原

一、实验目的

(1)了解图像复原的目的及意义,加深对图像复原理论的认识。

(2)掌握维纳滤波复原基本原理。

(3)掌握约束最小二乘方复原方法。

(4)掌握盲解卷积复原方法

二、实验内容

 (1)维纳滤波复原。

 (2)约束最小二乘方复原

 (3)盲解卷积复原

三、实验代码及结果、分析

(1)维纳滤波复原

  • 代码:

I=imread('E:\大三课件\大三下\数字图像处理\实验\实验5\lena.jpg');

I=rgb2gray(I);

noise=5*randn(size(I));      

noise = noise - min(min(noise));

J  = double(I) +noise;

R1=wiener2(J,[10 10]);    %未知噪声

R2=wiener2(J,[10 10],noise);  %已知噪声分布

figure      

subplot(2,2,1),imshow(uint8(I));title('原始图像');      

subplot(2,2,2),imshow(uint8(J));title('退化图像');      

subplot(2,2,3),imshow(uint8(R1));title('盲复原');

subplot(2,2,4),imshow(uint8(R2));title('非盲复原');

  • 结果:

  • 分析:
  1. 维纳滤波又叫最小均方差滤波,它的目标是找到一个原图像f的估计图像f',使得它们之间的均方误差最小。  e^2 = E((f-f')^2)
  2. randa()函数是产生随机噪声,nosize应该是一个矩阵,min(min(noise))表示先取每列中的最小值,再取最小值中的最小值
  3. 关于维纳滤波函数有wiener2和deconvwnr,分别适用于灰度图像和彩色图像
  4. R1为未知噪声的分布,R2为已知噪声分布

 

(2)约束最小二乘方复原方法

  • 代码:

I=imread('E:\大三课件\大三下\数字图像处理\实验\实验5\lena.jpg');

I=rgb2gray(I);I = im2double(I);[hei,wid,~] = size(I);

PSF = fspecial('motion', 21, 11);%摄像物体逆时针方向以11角度运动了21个像素

blurred = imfilter(I, PSF, 'conv', 'circular');%运动模糊图像

% 逆滤波结果

If = fft2(blurred);Pf = psf2otf(PSF,[hei,wid]);deblurred =ifft2(If./Pf);

% 运动模糊+高斯噪声

noise_mean = 0;noise_var = 0.00001;

blurred_noisy = imnoise(blurred, 'gaussian',noise_mean, noise_var);

% 约束最小二乘法

p = [0 -1 0;-1 4 -1;0 -1 0];P = psf2otf(p,[hei,wid]);

gama = 0.002;%γ设置成0.001左右会有比较好的效果If = fft2(blurred_noisy);numerator = conj(Pf);

denominator = Pf.^2 + gama*(P.^2);

deblurred2 = ifft2( numerator.*If./ denominator );

subplot(2,3,1),imshow(I);title('原始图像');

subplot(2,3,2), imshow(blurred); title('运动模糊图像');

subplot(2,3,3), imshow(deblurred); title('运动模糊复原')

subplot(2,3,4), imshow(blurred_noisy),title('运动模糊+噪声图像')

subplot(2,3,5), imshow(deblurred2),title('无约束最小二乘法复原');

subplot(2,3,6); imshow(deconvreg(blurred_noisy, PSF,0)); title('deconvreg函数复原');%自带的去模糊deconvreg函数

  • 结果:

  • 分析:

1、fspecial('type', len,theta)函数,用于预定于滤波算子,type=motion为运动算子,theta参数表示逆时针方向的角度,len表示运动了len个像素

2、约束最小二乘方滤波效果比自带的去模糊deconvreg函数好

3、约束最小二乘方滤波对高噪声和中等噪声产生结果要好于维纳滤波,对于低噪声两种滤波产生结果基本相等

 

(3)盲解卷积复原方

  • 代码:

I=checkerboard(8);

PSF=fspecial('gaussian',7,10);

V=.0001;

BlurredNoisy=imnoise(imfilter(I,PSF),'gaussian',0,V);

WT=zeros(size(I));

WT(5:end-4,5:end-4)=1;

INITPSF=ones(size(PSF));

FUN=inline('PSF+P1','PSF','P1');

[J P]=deconvblind(BlurredNoisy,INITPSF,20,10*sqrt(V),WT,FUN,0);

subplot(131);imshow(I);title('原图像');

subplot(132);imshow(BlurredNoisy);title('运动模糊+噪声图像');

subplot(133);imshow(J);title('盲去卷积');

  • 结果:

  • 分析:
  1. 盲解卷积复原是指在没有图像退化先验知识、对退化系统了解不足的条件下,通过观察退化图像的多个图像以某种方式抽出退化信息,进行图像复原
  2. 函数imnoise 是表示添加噪声污染一幅图像,叫做噪声污染图像函数,g=imnoise(f,'localvar',V)将均值为0,局部方差为V的高斯噪声添加到图像f上,其中V是与f大小相同的一个数组,它包含了每一个点的理想方差值
  3. Inline()函数:定义一个内置函数,本质上说跟function干的是一样的事,只不过它可以直接内嵌在命令行里,不用另外单独定义function

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

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

相关文章

MVVM模式的一个小例子

使用SilverLight、WPF也有很长时间了,但是知道Binding、Command的基本用法,对于原理性的东西,一直没有深究。如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个小例子,贴上代码,…

实现两个点集的欧式距离和cos距离和索引值寻找(含有两种解法,for循环和矩阵操作)

一.计算欧式距离 1,直接for循环 两个点集points1,points2,用dist来存储距离 points1np.array([[1,2],[3,4]]) points2 np.array([[5, 6],[7,8]]) dist np.zeros(shape[points1.shape[0],points2.shape[0]]) for i in range(points1.sha…

数字图像处理实验四图像频域增强

一、实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法。 (2)熟练掌握低通、高通、带通、同态滤波器的使用方法,明确不同性质的滤波器…

卡耐基梅隆大学专家谈核心技术市场化:「AI 周边相关机遇最大」

来源:ZDnet、机器之能编译 | 张玺摘要:技术市场化之难在哪?创业家最常犯什么错误?每位立志创业的朋友都应该研究下这篇对卡耐基梅隆 (CMU) 大学专家的采访。CMU 是全美技术转移最成功的机构之一,斥巨资帮助全校师生实现…

数字图像处理实验三图像增强

一、实验目的 (1)了解图像增强的目的及意义,加深对图像增强的 感性认识,巩固所学的图像增强的理论知识和相 关算法。 (2)熟练掌握直方图均衡化和直方图规定化的计算过 程。 (3)熟…

matplotlib与seaborn的一些使用

1.plt.plot画线画点 a np.array([[1, 2], [3, 4]]) print(a[:, 0]) plt.plot(a[:, 0], a[:, 1]) plt.show() plt.plot(a[:, 0], a[:, 1], o,colorred) plt.show()#添加风格 plt.plot(x,y,colorred,linewidth1.0,linestyle--) #设置x轴范围 plt.xlim((-1,2)) # …

无人驾驶汽车想要“普渡众生”,还要经历15个磨难

来源:Forbes 、网易智能摘要:无人驾驶汽车的未来与电动平衡车的历史有什么关系吗?电动平衡车也曾被预言将彻底改变交通。史蒂夫•乔布斯曾经说,城市将围绕这一设备重新设计;约翰•杜尔说,它将比互联网更大…

SQL的各种使用方法

一、Select语句例子 使用子查询查询employees表中,属于某一部门员工的姓名、职位、工薪、部门编号的信息 提示: 1)、需要关联employees表、departments表 2)、已知的信息为部门名称,部门名称由用户自己给出 按照要求写出SQL语句。 答案及…

正常矩形计算IOU与与NMS,多边形计算IOU

一.计算IOU def intersect(box_a, box_b):max_xy np.minimum(box_a[:, 2:], box_b[2:])min_xy np.maximum(box_a[:, :2], box_b[:2])inter np.clip((max_xy - min_xy), a_min0, a_maxnp.inf)return inter[:, 0] * inter[:, 1]def jaccard_numpy(box_a, box_b):&…

产业互联网受瞩目:互联网主战场从To C转向To B | 企鹅经济学

来源:科技日报摘要:最近,要论在互联网圈最火的词,非“产业互联网”莫属。如今,言必提产业互联网,已成为互联网圈的一种风潮。互联网的“上半场”已接近尾声,“下半场”的序幕正被拉开&#xff0…

json的用法

json格式 JSON格式:http://www.json.org/ python和JSON的关系请参考:http://docs.python.org/library/json.html JSON建构有两种结构: 1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中&#…

数据库设计方法

一、延续训练题 假设你是一个小的录影带出租店的老板。你的出租店里面有3000部电影。每部电影都有DVD或VHS录像带号码。对于每部电影,需要知道它的标题和类别(如,喜剧,悬疑,剧情,动作,战争&…

谷歌首席科学家:搞研究的痛苦,搞工程的人不懂

来源:量子位作者:Vincent Vanhoucke谷歌首席科学家、谷歌大脑技术负责人Vincent Vanhoucke(万努克)最近发出的一篇“劝退文”,引发海外科研学者的热议。在这博客中,万努克直言以研究为业,固然令…

L1/L2/smooth_l1_loss/center_loss+Dice Loss+focal loss+各种IOU loss+kl散度

一.L1/L2/smooth_l1_loss/center_loss公式与代码 1.公式 L2公式: smooth_L1公式: 2.三种函数numpy代码实现 import numpy as np import matplotlib.pyplot as plt#y |x| def L1():x np.arange(-2, 2, 0.01)y abs(x)plt.figure()plt.plot(x, y, …

虚拟机中Linux安装Tools

1. 插入光盘后将文件拷贝到常用放置软件的目录 2. 解压文件 3. 然后进入解压后的文件夹里找到安装文件进行安装(注意使用root权限安装) 4. 安装时也是一个交互的过程 5. 完成安装 转载于:https://www.cnblogs.com/ywj2013/p/3578931.html

世界创新竞争力发展报告:中美日创新产出竞争力居前三

来源:皮书说11月21日,由福建师范大学、中国科学技术交流中心联合攻关,具体由全国经济综合竞争力研究中心福建师范大学分中心组织研究的《世界创新竞争力黄皮书:世界创新竞争力发展报告(2011~2017&#xff0…

二分法查找+树

一,查找存在的一个数,该数在列表中唯一 二分法查找是针对有序数据的查找方法,时间复杂度是O(logn)。。 其中 n/2^k1 时,k 的值就是总共缩小的次数。而每一次缩小操作只涉及两个数据的大小比较,所以, 经过了…

Oracle 软件的安装

1、在oracle主页上注册登录 2、下载64位,将我接受许可协议,下载1of2和2of2,并解压到同一个文件夹 3、安装oracle软件 双击database文件夹里面的setup.exe,启动OUI去掉:我希望通过....只安装软件,不创建数据库选择语言…

算法笔试题

一,搜索连通域 M, N list(map(int, input().split(,))) print(M,N) book [] for i in range(M):line list(map(int, input().split(,)))book.append(line) print(book) # MN3 # book[[1, 0, 0], [0, 1, 0], [0, 1, 1]] print(book,book) class Solution:def __i…

Linux之vim编辑器

目录 vim编辑器 vim编辑器指令 命令模式指令 光标相关 移动光标相关 文本操作 底行模式指令 插入模式 vim配置 面试官:小伙子,你是用什么环境编写代码的? 小明:vs2019 面试官:小伙子,你是用什么环…