2018年认证杯SPSSPRO杯数学建模B题(第一阶段)动态模糊图像全过程文档及程序

2018年认证杯SPSSPRO杯数学建模

B题 动态模糊图像

原题再现:

  人眼由于存在视觉暂留效应,所以看运动的物体时,看到的每一帧画面都包含了一段时间内 (大约 1/24 秒) 的运动过程,所以这帧画面事实上是模糊的。对电影的截图来说,动态画面的每一帧也都是模糊的,例如图 1 为某部电影截图,展现的是在高速飞行中的拍摄效果,所以俯拍到的路面字迹是模糊的。但是一般来说,电脑游戏的每一帧画面都是以清晰的静态方式绘制出的,所以需要较高的帧率才能感觉到平滑,否则感觉会不够流畅。为了以较低的帧率能够取得较流畅的感受,在计算机视觉技术中,人们开发出了能够模拟动态模糊效果的算法。
  第一阶段问题: 当我们给出一张动态模糊的图片时,很难看清被摄景观的细节。请设计合理的数学模型,以恢复出尽可能清晰的画面。为简单起见,我们可以假设摄像机的运动导致了模糊,也就是图中的全部景观都以一个相同的速度运动。在论文中可以使用图 1,也可以另行选用动态模糊的图像作为算例。
在这里插入图片描述

整体求解过程概述(摘要)

  为了以较低的帧率能够取得较流畅的感受,在计算机视觉技术中,人们开发出了能够模拟动态模糊效果的算法。在此我们假设摄像机的运动导致了模糊,也就是图中的全部景观都以一个相同的速度运动,利用模糊图像复原算法复原出高清晰、高分辨率的图像。
  针对问题一建立 PSF 点扩散函数:通过采取傅里叶变换得到图片每点处的梯度大小,用来反映三维图像中的第三个量,然后灰度化处理频谱图S(𝑢, 𝑣)。以 R、G、B 为轴建立空间直角坐标系,结合 Radon 变换计算图像矩阵在某一特定方向的积分,较准确的得出运动模糊图像运动方向𝜃。
  针对问题二同样建立 PSF 点扩散函数:利用得到二维模糊图像𝑔的一维频谱图像S,将二维问题降维成一维问题并结合估计出的运动方向角度𝜃,将频谱图像反向旋转𝜃。对旋转后的一维频谱图像S进行 SPF 滤波与二值化处理,按列累加进行微分运算计算出自相关图像,估计出拍摄的物体与实际物体的位移差L。
  针对问题三建立点扩展函数:利用问题一、二所求的模糊方向和模糊尺度,建立相应的运动模糊图像点扩展函数。用 Lucy-Richardson 滤波算法建立基于MATLAB 平台的仿真对附件图片 1 进行复原。引入 PSNR 的定义将图像的清晰度与其相关联,分析清晰度与迭代次数的相关性,进而转化为分析迭代次数与 PSNR 的大小之间的关系,简化了模型。
  针对问题四将小波变换理论与 Lucy-Richardson 算法相结合:选取适当的阀值将图片进行多级分解,并将每一级的高低频部分单独分离:将低频部分与 L-R 算法结合利用 Lucy-Richardson 算法恢复图像;高频部分进行阀值降噪后,将噪声分离出去,最大可能地降低噪声对 Lucy-Richardson 算法的影响。在多次分级运算后,高低频的不同频域采取不同的复原方法,完成对模糊图片的复原。

问题分析:

  问题一的分析
  为了减少所拍图片的还原难度,我们需要得出拍摄相机与物体之间的模糊角度,通过这个角度我们可以更好的沿着指定方向进行还原。首先我们要创建出图片退化的线性数学模型,接着选择准则函数,并以适当的数学形式表达,然后进行数学推演。推演过程中通常要进行表达形式(即空域形式、频域形式、矩阵-矢量形式或变换域形式)的相互转换,最后得到图像复原的公式。
在这里插入图片描述
  就一张单纯图片而言,我们无法得知这张图片的频率大小,因为所拍摄的物体是空间的,而图片是平面的。因此需要引入第三个量,使图片能够反映出三维的信息。通过查阅相关资料,我们可以用梯度来反映第三个量,而我们可以通过采取傅里叶变换得到图片每点处的梯度大小。即将一些看似紊乱的函数,用很多条正弦波组合表现出来。从图片表示上,可以说是把图片上的信息用频率的方式给表示出来。表现出来的频率用灰度梯度的形式显示到电脑屏幕上。比如说,在一个温度变化不大,空间变化不大的区域如沙漠,其表现出来的灰度梯度就会比较平稳;而对于像大陆表面温度,变化是相对明显的,因此表现出来的灰度会呈现较为剧烈的现象。
  所以首先我们应该先把图形进行灰度化处理。以 R、G、B 为轴建立空间直角坐标系,则RGB图的每个象素的颜色可以用该三维空间的一个点来表示,而Gray 图的每个象素的颜色可以用直线R = G = B上的一个点来表示。于是rgb转gray 图的本质就是寻找一个三维空间到一维空间的映射,最容易想到的就是射影(即过rgb空间的一个点向直线R = G = B做垂线),事实上Matlab也是这样做的,并且有Gray = 0.29900 ∗ R + 0.58700 ∗ G + 0.11400 ∗ B。
  我们可以用matlab求出已知图像的傅里叶频谱图,其会表现出来明暗不一的亮点,这种现象就是梯度,就是这个点的频率与相邻点的频率差异大小(这里我们可以理解成空间上的高矮程度)。那么空间上的三维向量全给表现出来了。在亮度较大的地方,它的梯度也就较大;在亮度较小的地方,其梯度也就相对较小。同时,我们也能够看出能量的分布大小。如果变换后的图像亮点很多,说明原图片很多点与相邻点的梯度差异较大,说明原图像比较刺眼,比较尖锐。如果变换后的图像暗点很多,说明很多点与相邻点的梯度差异较小,说明原图像比较平稳,比较柔和。
  因为所拍图像可能含有很多外界因素的干扰。我们可以将傅里叶频谱图放在原点,这样图像就是以原点为中心对称分布。如果出现还有其他的对称点,那么这个就是干扰因素,可能受到了其他正弦函数的干扰。从图像上就可以很直观的看出图像是否收到干扰。当然这种方式只能较为粗略的观察图像的干扰情况,因此精度不高,但是也能满足实验要求了。设暗纹与x轴正向夹角为φ,运动模糊方向与x轴夹角为θ,图像尺寸为M × N,根据傅里叶变换的时频特性可以知道,可通过公式tan 𝜃 = tan(𝜑 − 90°) × M/N 得到模糊角度 θ ,因此只要通过 Radon 变换检测出频谱暗条纹与水平方向的夹角即可到运动模糊方向。

  问题二的分析
  在多数情况下,导致运动模糊是因为拍摄的设备与场景之间的相对运动造成的,例如无人机低空侦察,抓拍高速汽车等等。这类的运动模糊都具有速度较大、曝光时间较短的特点,因而在拍摄时间内,运动看成是匀速直线运动是再合适不过了。
  本文依据运动模糊图像和原始图像在频谱上的对应关系。我们可以直接在二维方向进行考虑,但 x,y 坐标下都会有位移,不方便考虑。我们可以结合估计出的运动方向角度,对图像进行旋转变换,运用微分自相关方法,将二维问题降维成一维问题,之后应用一维频谱的方法估计出拍摄的物体与实际物体的位移差(即模糊尺度)。
  问题三的分析
  问题三在前两问的基础上,考虑到利用 Lucy-Richardson 滤波法会和点扩散函数的两个参数有关,所以基于问题一和问题二的求解结果,得到附件图片 1的模糊尺度和模糊长度,利用模糊图像的运动模糊角度和运动模糊长度,可以得到相应图片的点扩散函数。同时基于matlab软件,设计相应的程序,利用Lucy-Richardson 滤波算法对该图片进行图片复原,在复原的同时,还要考虑迭代次数对于复原图形的影响,不同的迭代次数的图片会呈现出怎么的清晰度,同时引入一个关于 PSNR 的定义,将图像的清晰度与其相关联,分析清晰度与迭代次数的相关性,也就进而转化为分析迭代次数与 PSNR 的大小之间的关系,简化了模型,使问题三进而得以解决。
  问题四的分析
  由于附录图片 1 是有噪音的运动模糊图像,在考虑该条件的同时,我们采取与问题三不同的解决方法。我们采用小波变换理论与 Lucy-Richardson 算法相结合的算法,将图片进行多级分解,并将每一级的高低频部分单独分离,对于低频的这部分,利用 Lucy-Richardson 算法恢复图像,对于高频的部分,我们进行阀值降噪,将噪声分离出去,尽最大的可能性降低噪声对 Lucy-Richardson 算法的影响,在进行多次分级运算后,高低频的不同频域采取不同的复原方法,从而在多次分级运算后,完成对模糊图片的复原。

模型假设:

  1、假设摄像机的运动导致了模糊,也就是图中的全部景观都以一个相同的速度运动。
  2、摄像机的运动是匀速的。
  3、天气晴朗照片轮廓清晰。
  4、摄像机运作正常,数据保存完整。
  5、模糊图像像素在可傅里叶变换、radon 范围内。

论文缩略图:

在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

filename = 'C:\Users\hasee\Desktop\图片.jpg';
I = imread(filename);
7 
8 figure
9 imshow(uint8(I));
10 title('原图');
11 
12 %% 生成运动模糊图像
13 PSF = fspecial('motion',80, 150);
14 g = imfilter(I, PSF, 'circular');
15 figure 
16 imshow(uint8(g));
17 title('运动模糊图');
18 
19 %% 对运动模糊图像进行灰度化,并进行二维快速傅里叶变换,生成其
频谱图
20 gb = rgb2gray(g);
21 figure
22 imshow(uint8(gb));
23 PQ = paddedsize(size(gb));
24 F = fft2(gb, PQ(1), PQ(2));
25 figure
26 imshow(uint8(F));
27 
28 %% 作出倒频谱
29 F1 = log(1+abs(F));
30 F2 = abs(F1).^2;
31 F3 = real(ifft2(F2));
32 figure
33 imshow(uint8(F3));
34 
35 
36 %% 将倒频谱压缩,居中
37 H = log(1+abs(F3)); % 将倒频谱动态范围进行压缩
38 Hc = fftshift(H); % 将压缩结果进行循环移位,使低频成分居中
39 figure
40 imshow(uint8(Hc));
41 
42 %% 通过阈值处理,边缘检测“canny”算子二值化倒频谱
43 T = graythresh(Hc);
44 bw=edge(Hc, 'canny', T);45 figure
46 imshow(bw);
47 
48 %% 对倒频谱从 1°到 180°作 radon 变换,以求出模糊角度
49 theta = 1:180;
50 R = radon(bw, theta);
51 figure
52 imshow(R);
53 
54 %% 计算出通过倒频谱 radon 变换估计出的模糊角度
55 MAX = max(max(R));
56 [m, n] = find(R == MAX);
57 if 90 < n <= 180
58 beita = n - 90;
59 else if 0 < n < 90
60 beita = n + 90;
61 else if n == [90;90] | n == [180;180]
62 beita = n(1);
63 end;
clc;
I=imread('C:\Users\lenovo\Desktop\图 1.png');
PSF1=fspecial('motion',40,100);
MF=imfilter(I,PSF1,'circular');
gb=rgb2gray(MF);
f1=im2double(gb);
h=fspecial('Sobel'); 
J=conv2(f1,h,'same'); 
IP=abs(fft2(J)); 
%图像能量谱密度
s=fftshift(real(ifft2(IP))); 
figure,plot(s);
title('自相关图');
m=size(s,1);
S=sum(s);
mid=floor(m/2);
len=0;
ru=0;l=0; p =0;q =0;
for i=mid-10:-1:2if (S(i+5)>S(i))&&(S(i+2)>S(i))&&(S(i-2)>S(i))&&(S(i5)>S(i))&&(S(i+10)>S(i))&&(S(i10)>S(i))&&(S(i+1)>S(i))&&(S(i+3)>S(i))&&(S(i+4)>S(i))&&(S(i-3)>S(i))&&(S(i-
4)>S(i))ru=i; p=p+1;if p==2break;endend
end
for i=mid+10:1:m-2if 
(S(i+2)>S(i))&&(S(i+1)>S(i))&&(S(i+3)>S(i))&&(S(i+4)>S(i))&&(S(i+5)>S(i))&&(
S(i-2)>S(i))&&(S(i-1)>S(i))&&(S(i-3)>S(i))&&(S(i4)>S(i))&&(S(i+10)>S(i))&&(S(i-10)>S(i))l=i;q = q+1;if q ==2break;endend
end
len=(l-ru)/2
j=imread('图片.jpg');
figure(1),imshow(j); 
title('原图像');
len=40;
theta=83;
PSF = fspecial('motion',len,theta);
lucy=deconvlucy(j,PSF,i);%i 为迭代次数
figure,imshow(lucy); 
title(' Lucy richardson 图像复原');
function PSNR = psnr(f1, f2)%计算两幅图像的峰值信噪比
k = 8; %k 为图像是表示每个像素点所用的二进制位数,即位深。
fmax = 2.^k - 1;
a = fmax.^2;
e = im2uint8(f1) - im2uint8(f2);
[m, n] = size(e);
b = mean(mean(e));
PSNR = 10*log10(a/(b*m*n));
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

PyQt5零基础入门(五)——QLabel显示图像

QLabel显示图像 前言显示静态图片显示动态图 前言 QLabel是Qt库中的一个部件&#xff0c;通常用于显示文本或富文本文档。然而&#xff0c;QLabel也可以用来显示图像。 一种常见的使用QLabel显示图像的方法是使用QPixmap类。QPixmap可以从文件中接收图片&#xff0c;然后可以…

2024年WebGIS开发三维面试题及答案解析

​前言 简介 面试之前 面试流程 自我介绍 1 面试简介 1 、首先做一个简单的自我介绍 2 、在公司/学习中做了什么样的项目&#xff1f; 在项目中参与哪些模块&#xff1f;重点介绍做了哪些功能? 3 、用户名/密码传输给后台的时候是加密传输还是明文传输 4 、token如何校…

多模态、长文本、智能体,智谱AI推出GLM-4模型全家桶,发布即上线

2024年01月16日&#xff0c;智谱AI首届技术开放日(Zhipu DevDay)在北京中关村国家自主创新示范区展示中心成功举办。现场&#xff0c;智谱AI团队全面展示了其投身于大模型事业三年多来所积累的技术成果&#xff0c;并重磅发布了新一代基座大模型GLM-4。 此次GLM-4的发布及上线&…

C#调用Newtonsoft.Json将bool序列化为int

使用Newtonsoft.Json将数据对象序列化为Json字符串时&#xff0c;如果有布尔类型的属性值时&#xff0c;一般会将bool类型序列化为字符串&#xff0c;true值序列化为true&#xff0c;false值序列化为false。如下面的类型序列化后的结果如下&#xff1a; public class UserInfo…

开源图床LightPicture搭建本地图片管理系统并实现无公网IP远程访问

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

OSI七层协议和五层协议

【 1 】互联网协议交互的基础 硬件设备 光缆 【 2 】OSI七层协议 物理层&#xff08;Physical Layer&#xff09;&#xff1a;负责传输比特流&#xff08;0和1&#xff09;以及物理连接的建立和维护。数据链路层&#xff08;Data Link Layer&#xff09;&#xff1a;提供可…

掌握Spring MVC拦截器整合技巧,实现灵活的请求处理与权限控制!

拦截器 1.1 拦截器概念1.2 拦截器入门案例1.2.1 环境准备1.2.2 拦截器开发步骤1:创建拦截器类步骤2:配置拦截器类步骤3:SpringMVC添加SpringMvcSupport包扫描步骤4:运行程序测试步骤5:修改拦截器拦截规则步骤6:简化SpringMvcSupport的编写 1.3 拦截器参数1.3.1 前置处理方法1.3…

操作系统课程设计-内存管理

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 步骤 3.2 关键代码 3.2.1 显示虚拟内存的基本信息 3.2.2 遍历当前进程的虚拟内存 4 实验结果与分析 5 代码 前言 本实验为课设内容&#xff0c;博客内容为部分报告内容&#xff0c;仅为大家提供参考&#xff0c;请勿直…

【计算机网络】【新加坡南洋理工大学】【Computer Control Network】【广域网和局域网简介】【中英对照(自译)】

一、说明 仅供学习使用。 二、广域网&#xff08;WAN&#xff09;和局域网&#xff08;LAN&#xff09;简介

思瑞浦与IAR携手共筑嵌入式开发新生态--AMEYA360

2024年1月18日思瑞浦与IAR联合宣布&#xff0c;IAR旗舰产品IAR Embedded Workbench for Arm已全面支持思瑞浦TPS32混合信号微控制器主流系列产品&#xff0c;为开发者提供更完整、高效的开发解决方案。 思瑞浦总部位于中国&#xff0c;提供模拟及嵌入式处理器产品和解决方案&am…

腊八与健康,探寻羊奶与腊八渊源的奥秘

腊八与健康&#xff0c;探寻羊奶与腊八渊源的奥秘 腊八这个传统节日在我国有着悠久的历史&#xff0c;它是在农历腊月初八举行的一个重要的节日。腊月初八&#xff0c;民间有吃腊八粥的习俗&#xff0c;这是一种由多种杂粮、豆、米、枸杞等制作而成的美味佳肴。而在腊八粥中&a…

django后台手机号加密存储

需求&#xff1a; 1 &#xff1a;员工在填写用户的手机号时&#xff0c;直接填写&#xff0c;在django后台中输入 2&#xff1a;当员工在后台确认要存储到数据库时&#xff0c;后台将会把手机号进行加密存储&#xff0c;当数据库被黑之后&#xff0c;手机号字段为加密字符 3&am…

AVL树 -- C++实现

AVL树 – C实现 1. AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1…

【软件测试】学习笔记-精准测试

软件测试行业从最开始的手工测试到自动化测试&#xff0c;从黑盒测试到白盒测试&#xff0c;测试理念和技术都发生了日新月异的变化。现如今&#xff0c;几乎所有的软件公司都有一套强大且复杂的自动化测试用例&#xff0c;用来夜以继日地保证产品的正确性和稳定性。 然而&…

selenium爬虫爬取当当网书籍信息 | 最新!

如果对selenium不了解的话可以到下面的链接中看基础内容&#xff1a; selenium爬取有道翻译-CSDN博客 废话不多说了下面是代码并且带有详细的注释&#xff1a; 爬取其他类型的书籍和下面基本上是类似的可以自行更改。 # 导入所需的库 from selenium import webdriver from …

6.3.3分离音频和视频

6.3.3分离音频和视频 Camtasia4有一个很实用的功能&#xff0c;那就是能够把视频片段中的视频和音频分离开来&#xff0c;这在多媒体作品创作中非常有用。 1&#xff0e;启动Camtasia音频编辑器。 2&#xff0e;选择【文件】|【打开】命令&#xff0c;在弹出的“打开文件”对…

企业面临哪些能源消耗问题,能源消耗监测管理系统是如何解决这些问题?

随着全球环境问题的日益严重&#xff0c;能源问题一直被世界广泛关注。在企业运营过程中&#xff0c;能源消耗问题也是一大挑战。企业在生产和运营过程中需要大量的能源支持&#xff0c;包括电、水、气、热等多种能源。由于能源价格的不稳定性&#xff0c;使得企业在能源消耗方…

【北亚企安数据恢复】RAIDZ多块磁盘离线导致服务器崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; ORACLE SUN ZFS某型号存储&#xff0c;共40块磁盘组建存储池&#xff0c;其中的36块磁盘分为三组&#xff0c;每组12块&#xff0c;单个组使用ZFS特有的RAIDZ管理所有磁盘&#xff0c;RAIDZ级别为2&#xff1b;另外的4块磁盘作为全局热备。存储…

Dubbo分层设计之Exchange层

前言 Dubbo 框架采用分层设计&#xff0c;自上而下共分为十层。Exchange 层位于倒数第三层&#xff0c;它在 协议层 的下方、数据传输层的上方。 第一次看源码的时候&#xff0c;大家应该都会有一个疑问&#xff1a;都已经有 Transport 层了&#xff0c;为啥还要定义 Exchange…

JAVA调试webservice接口

java程序调试webservice接口可以使用调用工具进行调试&#xff0c;对应的调试工具 可在这个目录下面下载 SoapUI 下载地址&#xff1a;https://www,soapui.org/ 一、webservice项目可以使用soapUi 可以使用工具进行调试的前提是这个接口地址必须在前端的浏览器能够正常的打…