2016年认证杯SPSSPRO杯数学建模B题(第二阶段)多帧图像的复原与融合全过程文档及程序

news2024/11/17 8:50:39

2016年认证杯SPSSPRO杯数学建模

B题 多帧图像的复原与融合

原题再现:

  数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制,拍摄设备只能在较低的分辨率下成像。为简单起见,我们只考虑单色成像。假设成像的分辨率为 32 × 64,成像方式是将整个矩形视野划分成 32 × 64 个相同大小的矩形格子,图像中每个像素的取值为对应格子的亮度平均值。每间隔一定时间拍摄一帧图像,运动的画面体现为图像的序列。
  第二阶段问题: 对一副静态的图像而言,每个像素对应于视野中的一个格子,每个格子内部的细节信息已经无法还原。但如果在视野移动的过程中拍摄系列图像,我们通过对多帧图像进行对比分析,仍然有可能还原出来一些在单张照片中无法体现的细节。请建立合理的数学模型和算法,通过对多帧图像进行分析,尽可能多地还原出被摄物的细节。

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

  随着计算机技术的发展,人们对于图像美观的需求越来越高,图像处理技术也逐渐成为了一个热点问题。然而,人们所得到的图像并不一定是清晰而且完整的。在对图像的进行收集时,有众多的因素会引起所收集图像的分辨率的下降和图像失真,其主要表现为模糊、噪声和丢失像素点。造成模糊的因素有很多,例如由被拍摄的运动对象所带来的运动模糊现象、拍摄仪器的大光圈所带来的散焦现象以及当矢量图转化为位图时所导致的失真现象等。为了解决以上问题,我们对多种算法进行了分析比较:
  对于低分辨率下运动图片中的细节缺失问题,我们使用了基于维纳滤波器的几何均值滤波算法作为基础的复原模型。我们对多张合适的单色、模糊图片进行统计分析并优化得到合适的算法。通过实验我们发现:要保证模型所匹配到缺失细节的数量和准确度,需要重点考虑两点因素:相邻两幅运动图像的相似程度和特征块匹配及其融合。对于前者,我们使用了交叉熵和峰值信噪比作为评判指标;对于后者,我们在不同情况分别使用了傅里叶变换、小波变换的方式择优进行融合。
  在模型的对比验证阶段,我们分别利用了传统滤波算法和本文提出的多帧图像复原与融合模型进行图像复原,并通过实验体现了我们提出模型的效率;最后,我们使用峰值信噪比、信息熵、均方差等数据进行实验结果分析并验证了模型的健壮性。

问题分析:

  题目要求研究单色成像,那么每一个像素点的区别就是用格子的亮度来表示。对于一个32×64 的矩阵格子,我们可以生成一个大小为32×64 的亮度矩阵来模拟视野中观察到的图像。随着物体在视野区域向某个方向移动,亮度矩阵会随之有规律的变化。
  题目没有明确规定间隔多少时间拍摄一帧图像。由于视野向某个方向缓慢运动,不同的时间间隔拍摄图像,在同一帧中视野区域内容也不一样。将拍摄时间间隔作为变量,建立的算法要求在足够大的拍摄时间间隔下实现较高的识别度。
  题目要求通过多帧图像对比分析还原出在单张照片中无法体现的细节。在建立模型的过程中,我们仍需考虑现有的单张图片还原算法处理模糊图片,再将本文的算法模型进行对比,体现出多帧图像处理的优势。题目要求尽可能多的还原出被摄物的细节。即在不限定算法时间复杂度的前提下(电脑能够运行完成算法即可),还原出被摄物最多的细节。
  被摄物的细节可以由主观评价和客观评价组成。主观评价可以由多准则决策方法实现。但由于该题需要客观地评价被摄物的细节,我们的模型通过大量客观的图像评价指标评价算法细节还原效率以及准确度,主观评价部分展示经过算法处理的图片,文中不作主观评价。

模型假设:

  1. 假设计算机能接受的亮度的范围为0至255。那么亮度矩阵表示为由0至255构成,大小为32×64 的亮度矩阵。
  2. 假设原始的图像噪声足够少,使得肉眼能够分辨出图片的部分细节。
  3. 假设拍摄的时间间隔足够小,使相邻两组视野中图像有相同的特征便于算法提取。
  4. 假设相机在运动过程拍摄的照片会产生模糊,从而导致照片细节不清晰。
  5. 假设选取的进行实验的20张随机图片样本可以代表总体。
  6. 假设算法运行的实验环境相同。

论文缩略图:

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

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

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

1 clc
2 clear all
3 close all
4 %for i=1:2
5 I=imread(7.png’);
6 %subplot(231);
7 figure(1)
8 imshow(I);
9 I=rgb2gray(I);
10 %subplot(232);
11 figure(2)
12 imshow(I);
13 noise=0.1*randn(size(I));
14 PSF=fspecial(’motion’,21,11);
15 Blurred=imfilter(I,PSF,’circular’);
16 BlurredNoisy=im2uint8(Blurred);
17 NP=abs(fftn(noise)).ˆ2;
18 NPOW=sum(NP(:)/prod(size(noise)));
19 NCORR=fftshift(real(ifftn(NP)));
20 IP=abs(fftn(I)).ˆ2;
21 IPOW=sum(IP(:)/prod(size(noise)));
22 ICORR=fftshift(real(ifftn(IP)));
23 ICORR1=ICORR(:,ceil(size(I,1)/2));
24 NSR=NPOW/IPOW;
25 %subplot(233);
26 figure(3)
27 imshow(BlurredNoisy,[]);
28 %title(’第一帧’);
29 %subplot(234);
30 figure(4)
31 imshow(deconvwnr(BlurredNoisy,PSF),[]);
32 %title(’deconbwnr(A,PSF,NSR));
33 %subplot(235);
34 figure(5)
35 imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);
36 %title(’deconbwnr(A,PSF,NCORR,ICORR));
37 %subplot(236);
38 figure(6)
39 pic=imshow(deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1),[]);
40 %title(’deconbwnr(A,PSF,NPOW,ICORR_1_D));
41 %end
1 load wbarb; X1 = X; map1 = map; subplot( 2,2,1) ;
2 image( X1) ; colormap( map1) ; title( ’图像wbarb’) ;
3 load woman; X2 = X; map2 = map; subplot( 2,2,2) ;
4 image( X2) ; colormap( map2) ; title( ’图像woman’) ;
5 [C1,L1]= wavedec2( X1,2,’sym4’) ; [C2,L2]=wavedec2( X2,2,’sym4’) ; C = C1
+ C2;
6 XX = waverec2( C,L1,’sym4’) ; subplot( 2,2,3) ; image( XX) ; colormap(map1) ; title( ’小波融
合1) ;
7 Csize1 = size( C1) ;
8 for i = 1: Csize1( 2)
9 C1( i) = 1.2*C1( i) ;
10 end
11 Csize2 = size( C2) ;
12 for j = 1: Csize2( 2)
13 C2( j) = 0.8* C2( j) ;
14 end
15 C = 0.5* ( C1 + C2) ; XXX = waverec2( C,L2,’sym4’) ;
16 subplot( 2,2,4) ; image( XXX) ; colormap( map2) ; title( ’小波融合2);
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

QT作业。。

1.使用手动连接,将登录框中的取消按钮使用t4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数将登录按钮使用t5版本的连接到自定义的槽函数中,在槽函数中判断u界面上输入的账号是否为"admin",密码是否为&q…

(done) 机器学习中的方差 variance 和 偏差 bias 怎么理解?

来源:https://blog.csdn.net/weixin_41479678/article/details/116230631 情况1属于:低 bias,高 variance (和 human performance 相近,但和 验证集dev set 相远) 通常意味着模型训练轮数太多 情况2属于:高 bias&#…

基于NetCoreServer的WebSocket客户端实现群播(学习笔记)

一、NetCoreServer介绍 超快速、低延迟的异步套接字服务器和客户端 C# .NET Core 库,支持 TCP、SSL、UDP、HTTP、HTTPS、WebSocket 协议和 10K 连接问题解决方案。 开源地址:https://github.com/chronoxor/NetCoreServer 支持: Example: TC…

分享Pandas 数据分析实战课程

分享Pandas 数据分析实战课程,3 小时掌握数据分析核心技能。 链接:https://pan.baidu.com/s/1Ikk3I1dfoFO0id3EBZJdGg?pwd4y83 提取码:4y83 链接:https://pan.quark.cn/s/fa2acd7513f4 提取码:yWu7

【3DsMax】展UV记录

目录 一、概念 二、边的颜色 三、UV的连续性 四、合理的划分UV接缝 五、总结 一、概念 展uv的概念可以理解为把三维的模型铺平展成一个平面,然后在这个平面上去绘制图案。 二、边的颜色 我们先创建一个长方体,然后在修改器列表中添加“UVW展开”…

数据格式化方法

首先你需要一个可以展示代码的组件; 我使用的是tech-ui(内部组件库); 你如果没有类似的组件,可以参考以下链接替代: react-monaco-editor -- 代码编辑器(适用Umi)_umi monaco editor-CSDN博客 Codemirror -- 代码编辑器(react…

schweizer-electronic 公司 safedat2 操作使用说明

schweizer-electronic 公司 safedat2 操作使用说明

优质的短效HTTP代理具备什么优点?

随着网络时代的蓬勃发展,数据的获取与处理成为了企业决策和市场竞争的关键。在这场数据的角逐中,优质的短效HTTP代理脱颖而出,备受业界瞩目。优质的短效HTTP代理,提供了稳定的网络连接和匿名性,更为数据采集提供了关键…

css设置div的2个span一个在最左边,一个在最右边

界面&#xff1a; 代码&#xff1a; <html><style>.top span {display: block;position: absolute;margin: 0 20px; /* 添加边距以避免太靠近边缘 */ }.top span:nth-child(1) {left: 5px; /* 调整左侧位置 */ }.top span:nth-child(2) {right: 5px; /* 调整右侧位…

1.6 学Python能干什么,Python的应用领域有哪些

Python能干什么&#xff0c;Python的应用领域 Python 作为一种功能强大的编程语言&#xff0c;因其简单易学而受到很多开发者的青睐。那么&#xff0c;Python 的应用领域有哪些呢&#xff1f; Python 有着非广泛的应用&#xff0c;几乎所有大中型互联网公司都在使用 Python&a…

推荐一款很不错的vscode高亮插件

用过很多款高亮插件&#xff0c;总感觉大部分显示都很乱&#xff0c;但是其中有一款用起来很清晰明了&#xff0c;很喜欢&#xff01; 插件名字&#xff1a;select-highlight-cochineal-color 使用效果&#xff1a; 底色高亮让人感觉很清晰&#xff0c;一个好的高亮插件能让你…

鸿蒙一次开发,多端部署(九)应用市场首页

本小节将以应用市场首页为例&#xff0c;介绍如何使用自适应布局能力和响应式布局能力适配不同尺寸窗口。 页面设计 一个典型的应用市场首页的UX设计如下所示。 观察应用市场首页的页面设计&#xff0c;不同断点下的页面设计有较多相似的地方。 据此&#xff0c;我们可以将页…

2024蓝桥杯每日一题(单调队列)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;单调栈 试题二&#xff1a;滑动窗口 试题三&#xff1a;子矩阵 试题四&#xff1a;最大子序和 试题一&#xff1a;单调栈 【题目描述】 给定一个长度为 N 的整数数列&#xff0c;输出每…

怿星科技Neptune CHT-S测试系统,让智能座舱测试更加高效便捷

随着汽车“智能化”浪潮的推进&#xff0c;汽车的智能化水平正在持续刷新行业认知。在这股智能化潮流中&#xff0c;智能座舱作为客户体验最为直观的部分&#xff0c;其重要性不言而喻。倘若座舱设备出现死机、黑屏、卡顿等现象&#xff0c;都将对客户的使用体验产生非常大的影…

Python Flask 表单的使用

新建templ;ates/index.html 内容如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <form action"">账号&#xff1a;<input …

Flutter Widget:StatefulWidgetStatelessWidgetState

Widget 概念 Widget 将是构建Flutter应用的基石&#xff0c;在Flutter开发中几乎所有的对象都是一个 Widget 。 在Flutter中的widget 不仅表示UI元素&#xff0c;也表示一些功能性的组件&#xff0c;如&#xff1a;手势 、主题Theme 等。而原生开发中的控件通常只是指UI元素。…

[Rust] 使用vscode实现HelloWorld程序并进行debug

一、简介 本文介绍了如何使用vscode编写rust&#xff0c;实现打印"Hello, world!"的程序。 二、工具安装 0. 环境介绍&#xff1a; Linux &#xff08;或者windowswsl&#xff09; 1. 安装rust编译器rustc和包管理器cargo。 请参考连接&#xff1a;Rust 程序设…

Skywalking的Helm Chart方式部署

背景 之前介绍了AWS云上面的EKS的集中日志方案。这次主要介绍调用链监控了&#xff0c;这里我们用的是Skywalking。监控三王者&#xff08;EFKPrometheusSkywalking&#xff09;之一。之前AWS云上面使用fluent bit替代EFK方案&#xff0c;其实&#xff0c;AWS云在调用链方面&a…

1Panel应用推荐:DataEase开源数据可视化分析工具

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…

查看Scala类的方法

文章目录 一、概述如何查看Scala类的方法二、使用Scala文档查看类的方法三、使用反射机制查看类的方法 一、概述如何查看Scala类的方法 本文介绍了在Scala中查看Int类方法的两种方法&#xff1a;使用Scala标准库文档和使用反射机制。通过Scala标准库文档&#xff0c;您可以方便…