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

news2024/11/18 15:49:46

2018年认证杯SPSSPRO杯数学建模

动态模糊图像复原

B题 动态模糊图像

原题再现:

  人眼由于存在视觉暂留效应,所以看运动的物体时,看到的每一帧画面都包含了一段时间内 (大约 1/24 秒) 的运动过程,所以这帧画面事实上是模糊的。对电影的截图来说,动态画面的每一帧也都是模糊的,例如图 1 为某部电影截图,展现的是在高速飞行中的拍摄效果,所以俯拍到的路面字迹是模糊的。但是一般来说,电脑游戏的每一帧画面都是以清晰的静态方式绘制出的,所以需要较高的帧率才能感觉到平滑,否则感觉会不够流畅。为了以较低的帧率能够取得较流畅的感受,在计算机视觉技术中,人们开发出了能够模拟动态模糊效果的算法。
在这里插入图片描述
在这里插入图片描述
  第二阶段问题: 在拍摄到的某一帧画面中,往往只有部分场景处于运动状态。例如图 2 是伦敦的公交车经过电话亭时拍摄到的画面,图中的主要景观中,只有车辆是运动的,所以产生了运动模糊的效果。请你设计有效的数学模型,将只有部分景观存在动态模糊的帧恢复出尽可能清晰的画面。在论文中可以使用图 2 ,也可以另行选用动态模糊的图像作为算例。

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

  图像的模糊退化是数字图像处理和视觉系统中存在的一个重要问题,导致这种现象出现的原因有很多。根据产生模糊的原因不同,图像的模糊可以分为很多种,生活中常见的是运动模糊,它的实质大多是由于原目标图像与相机摄像头之间的相对运动造成了运动方向上的平滑滤波,即原始清晰图像与退化函数的卷积过程。在本题目中所给的图像,就是属于运动模糊,处理这种类型的图像,可以分为几个步骤。
  首先,对图像进行预处理,即对图像进行格式转换、加窗处理。相机在视觉范围之内进行成像时,成像范围之外的边缘信息并未被卷积关系牵涉进来,因而在图像复原时由于缺少这些边缘信息而在图像边缘处产生截断现象,即产生边缘振铃效应,为了有效地抑制复原图像的振铃效应,提出了一种基于边缘恢复的抑制运动模糊图像振铃效应的方法——最优窗算法。其可在保留原图像边缘细节,且不增加运算量的前提下,有效抑制图像恢复过程中的振铃效应。然后对预处理后的图像进行傅里叶变换,和灰度均衡,得到图像的频谱,以便进行下一步的图像处理。
  其次,为了得到点扩散函数的计算模型,需要对图像进行二值化和 Radon 变换。图像二值化就是将图像上的像素点的灰度值设置为 0 或 255,就是将整个图像呈现出明显的黑白效果的过程,从而得到图像的轮廓信息,图像的二值化有很多方法,有固定门限二值化、Dither 矩阵二值化、基本自适应门限二值化等,这些方法的运用需要选定一个合适的阈值,阈值可以手动选择也可以自动生成,按图片的需要进行选择。然后对图像进行 Radon 变换,在数学上,Radon 是一种积分变换,这个变换将二维平面函数变换成一个定义在二维空间上的一个线性函数,即相当于得到函数的投影讯号,对图像做 1 到180 的 Radon 变换,得到一个变换矩阵,找出这个矩阵中的最大值,此最大值所对应的列数即为图像的模糊角度。模糊的图像的频谱会出现黑色带条,通过分析频谱图,得到一个量化的反比关系公式和黑带的精确位置,通过微分自适应可以估算出运动模糊图像的模糊长度。
  通过以上的分析,用 MATLAB 和 OPENCV 建立相应的数学模型,处理题目中和自行拍摄的图像,得出模拟结果,并对结果进行分析,指出缺点和不足。

问题分析:

  观察所给图片,图中所示为公交车在路上行驶的画面,其中静止的行人和电话亭,以及商店的招牌都清晰可见,公交车因为运动而造成了在图像中的模糊。分析可知,图像的拍摄与公交车的平面有一定的角度,本题中的相机拍摄时是静止的,只有公交车是运动的,所以在求解时,需要对动态模糊的角度和动态模糊的长度的估算。在处理这种部分模糊的图像时,可以分为以下步骤:
  1.首先需要对部分动态模糊图像进行分离,将图像中模糊部分和非模糊部分分离。
  2.对分离后的模糊图像进行傅里叶变换得出其频谱,从而观察动态模糊的方向。
  3.利用灰度均衡和消除噪声技术,对图像进行预处理,方便后面的处理过程。按照不同的方式分类,噪声分为白噪声、椒盐噪声、冲击噪声和量化噪声等,对噪声的消除有很多种方法,比如均值滤波,自适应维纳滤波,中值滤波等方法都可以很好的消除图片的噪声;
  4.运用二值化和 Radon 变换求出图片的轮廓信息。
  5.综合以上的处理过程,求出模糊图像处理中的两个重要参数:模糊角度和模糊长度。得到模糊图像的点扩散函数。
  6.对模糊图像进行去模糊处理。其方法主要有逆滤波恢复、有约束最小二乘法恢复、维纳滤波恢复和 Richardson-Lucy 滤波恢复等方法。
  在本文中我们基于 MATLAB 和 OPENCV 建立模糊图像的模型,利用改进后的维纳滤波方法处理模糊图像,并取得了较好的效果。因为带最优窗维纳滤波法可以有效的抑制振铃效应,获得高质量的恢复图像。

模型假设:

  1、假设镜头已经准确的对焦
  2、假设所有的噪声因素是白噪声
  3、不考虑其他因素对图片造成的运动模糊
  4、拍照的过程是一个瞬间动作。

论文缩略图:

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

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

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

close all;
clear all; 
%% 读入并显示图像
filename = '图 2.jpg'; 
I = imread(filename);
figure(1), imshow(uint8(I)); title('原图');
%% 对动态模糊图像进行灰度化,并进行二维快速傅里叶变换,生成其频谱图
gb = rgb2gray(I);
figure(4), imshow(uint8(gb)); 
[p,q]=size(gb);
gb=rot90(gb,2);
figure(5), imshow(uint8(gb)); 
PQ = paddedsize(size(gb)); 
F = fft2(gb, PQ(1), PQ(2)); 
figure(5), imshow(uint8(F)); 
%% 作出倒频谱
F1 = log(1+abs(F)); 
F2 = abs(F1).^2; 
F3 = real(ifft2(F2)); 
figure(6), imshow(uint8(F3)); 
%% 将倒频谱压缩,居中
H = log(1+abs(F3));% 将倒频谱动态范围进行压缩
Hc = fftshift(H); % 将压缩结果进行循环移位,使低频成分居中
figure(9), imshow(uint8(Hc)); 
%% 通过阈值处理,边缘检测“canny”算子二值化倒频谱
T = graythresh(Hc); 
bw=edge(Hc, 'canny', T); 
figure(7), imshow(bw);
%% 对倒频谱从 1°到 180°作 radon 变换,以求出模糊角度
theta = 1:180; 
R = radon(bw, theta); 
figure(8), imshow(R); 
%% 计算出通过倒频谱 radon 变换估计出的模糊角度
MAX = max(max(R)); 
[m, n] = find(R == MAX); 
if 90 < n <= 180 
 beita = n - 90; 
elseif 0 < n < 90 
beita = n + 90; 
elseif n == [90;90] | n == [180;180] 
beita = n(1) 
end
beita
len=5;
nsr=0.005;
psf=fspecial('motion',len, beita);
wnr1=deconvwnr(gb,psf,nsr);
figure(8),imshow(wnr1,[0 255]),title('维纳滤波复原图像(NSR=0.015)');
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

CSV转Excel文件(适合大文件转VBA语言)

目录 专栏导读背景1、右击新建一个Excel文件2、点击【开发工具】点击【VB编辑器】3、左边双击【Sheet1】打开代码编辑器&#xff0c;复制下面代码进行粘贴注意修改 路径 4、点击运行&#xff0c;等待即可结尾 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理…

噪声的产生机制和来源

噪声广泛存&#xff0c;噪声按照噪声携带能量的强弱分为功率型噪声和信号型噪声&#xff0c;功率型噪声持续时间短&#xff0c;能量强&#xff0c;对设备的寿命具有很大的影响&#xff0c;而信号型噪声顾名思义来源于信号且作用于信号&#xff0c;本节简述噪声的产生机理和来源…

媒体跟踪软件Ryot

什么是 Ryot &#xff1f; Ryot&#xff08;Roll Y our O wn Tracker&#xff09;&#xff0c;发音为“riot”&#xff0c;旨在成为您需要的唯一自托管跟踪器&#xff01;用于跟踪您生活的各个方面 - 媒体、健身等。 假设您有一个特殊的笔记本&#xff0c;您可以在其中写下您使…

Mybatis之关联

一、一对多关联 eg&#xff1a;一个用户对应多个订单 建表语句 CREATE TABLE t_customer (customer_id INT NOT NULL AUTO_INCREMENT, customer_name CHAR(100), PRIMARY KEY (customer_id) ); CREATE TABLE t_order ( order_id INT NOT NULL AUTO_INCREMENT, order_name C…

翻译: LLM构建 GitHub 提交记录的聊天机器人一 使用 Timescale Vector、pgvector 和 LlamaIndex

1. 检索增强生成 &#xff08;RAG Retrieval Augmented Generation&#xff09; 检索增强生成 &#xff08;RAG Retrieval Augmented Generation&#xff09; 对于增强应用程序开发中的大型语言模型 &#xff08;LLM&#xff09; 至关重要。它用外部数据源补充 LLM&#xff0c…

ChatGPT关键技术、发展方向与应用前景

源自&#xff1a;中国指挥与控制学会 作者&#xff1a;黄海涛 田虎 郑晓龙 曾大军 一、GPT类模型技术发展路径 图1 GPT类模型推出时间线1&#xff0c;2 二、ChatGPT模型的主要技术手段 图2 GPT类模型采用的Transformer解码器模型结构 图3 RLHF迭代训练过程真正推动ChatGPT模型…

物联网协议Coap之C#基于Mozi的CoapServer实现解析

目录 前言 一、C#的Coap Server实现 1、CoapServer相关类 2、主要类解析 3、资源控制器定义 4、ResourceManager管理器 二、CoapServer生命周期 1、Server创建代码 2、服务端创建 3、绑定endpoint 4、准备接收请求 总结 前言 在之前的关于物联网协议的介绍中&#…

ELK日志分析

目录 1.ELK概述 ELK简述 ElasticSearch Kiabana Logstash 可添加其他的组件 Filebeat filebeat结合logstash带来好处 缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; Fluentd ELK的好处 完整日志系统基本特征 ELK的工作原理 2.ELK Elasticsearc…

Git提交 ssh: connect to host github.com port 22: Connection timed out解决方案

你们好&#xff0c;我是金金金。 场景 之前都是好好的&#xff0c;不知道今天为什么提交代码就这样了 排查 根据英文可以看出&#xff0c;ssh端口号被拒绝了&#xff0c;22号端口不行&#xff0c;那就换一个端口 造成error的原因 ssh端口被拒绝 解决 找到.ssh文件&#xff…

Producer源码解读

Producer源码解读 在 Kafka 中, 我们把产生消息的一方称为 Producer 即 生产者, 它是 Kafka 的核心组件之一, 也是消息的来源所在。它的主要功能是将客户端的请求打包封装发送到 kafka 集群的某个 Topic 的某个分区上。那么这些生产者产生的消息是怎么传到 Kafka 服务端的呢&a…

Linux系统三剑客之grep和正则表达式的介绍(一)

1.正则表达式 目录 1.正则表达式 1.什么是正则表达式 &#xff1f; 2.正则表达式的使用场景 3.正则表达式字符表示 4.它们之间的区别 2.grep命令 作用&#xff1a; 语法&#xff1a; 说明&#xff1a; 选项&#xff1a;options 重点 实例 3.后面的下次再更新。 …

hanlp,pkuseg,jieba,cutword分词实践

总结&#xff1a;只有jieba,cutword,baidu lac成功将色盲色弱成功分对,这两个库字典应该是最全的 hanlp[持续更新中] https://github.com/hankcs/HanLP/blob/doc-zh/plugins/hanlp_demo/hanlp_demo/zh/tok_stl.ipynb import hanlp # hanlp.pretrained.tok.ALL # 语种见名称最…

统计学-R语言-6.3

文章目录 前言总体方差的区间估计总体方差的区间估计(一个总体方差的估计)总体方差的区间估计(两个总体方差比的估计) 总结 前言 本篇文章是最后一个介绍参数估计的章节。 总体方差的区间估计 研究一个总体时&#xff0c;推断总体方差 使用的统计量为样本方差 。研究两个总体…

MacOS受欢迎的数据库开发工具 Navicat Premium 15 中文版

Navicat Premium 15 Mac是一款数据库管理工具&#xff0c;提供了一个全面的解决方案&#xff0c;用于连接、管理和维护各种数据库系统。以下是Navicat Premium 15 Mac的一些主要功能和特点&#xff1a; 软件下载&#xff1a;Navicat Premium 15 中文版下载 多平台支持&#xff…

代码、课程、教学的一些思考-2024

1 代码、算法、艺术品 1.1 代码 最典型的C代码示例。 以下是一个简单的C代码示例&#xff0c;它打印出“Hello, World!”&#xff1a; #include <iostream> int main() { std::cout << "Hello, World!"; return 0; } 这段代码定义了一个程序&a…

2024年美国各州即将生效的新隐私保护法(上)

2024年美国各州即将生效的新隐私保护法&#xff08;上&#xff09; 文章目录 2024年美国各州即将生效的新隐私保护法&#xff08;上&#xff09;前言一、2023年隐私保护法开始生效的五个州二、2023年通过了新的隐私保护法的八个州三、2024年确定截止的州及法律法规&#xff08;…

Python GUI 新手入门教程:轻松构建图形用户界面

Python 凭借其简单性和多功能性&#xff0c;已经成为最流行的编程语言之一。被广泛应用于从 web 开发到数据科学的各个领域。 在本教程中&#xff0c;我们将探索用于创建图形用户界面&#xff08;GUIs&#xff09;的 Python 内置库&#xff1a; Tkinter&#xff1a;无论你是初…

深入学习卷积神经网络(CNN)的原理知识

在深度学习领域中&#xff0c;已经经过验证的成熟算法&#xff0c;目前主要有深度卷积网络&#xff08;DNN&#xff09;和递归网络&#xff08;RNN&#xff09;&#xff0c;在图像识别&#xff0c;视频识别&#xff0c;语音识别领域取得了巨大的成功&#xff0c;正是由于这些成…

gitlab 命令执行漏洞(CVE-2022-2992)

1.漏洞影响版本 GitLab CE/EE 中的一个漏洞影响从 11.10 开始到 15.1.6 之前的所有版本、从 15.2 开始到 15.2.4 之前的所有版本、从 15.3 开始到 15.3.2 之前的所有版本。允许经过身份验证的用户通过从 GitHub API 端点导入实现远程代码执行。 查看 gitlab 版本。(登录后才能…

keil logic analyzer使用

DARMSTM.DLL--- -pSTM32F103VC ---- TRAMSTM.DLL ------ -pSTM32F103VC 然后点击DEBUG按钮 用上面的名称USART1_SR 点击STUP 不同的引脚&#xff0c;用不同的名称&#xff0c;通过放大缩小来查看波形。当前串口用的是USART1_SR&#xff0c;只能用这个名称&#xff0c;…