2016年认证杯SPSSPRO杯数学建模B题(第一阶段)低分辨率下看世界全过程文档及程序

2016年认证杯SPSSPRO杯数学建模

B题 低分辨率下看世界

原题再现:

  数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制,拍摄设备只能在较低的分辨率下成像。为简单起见,我们只考虑单色成像。假设成像的分辨率为 32 × 64,成像方式是将整个矩形视野划分成 32 × 64 个相同大小的矩形格子,图像中每个像素的取值为对应格子的亮度平均值。每间隔一定时间拍摄一帧图像,运动的画面体现为图像的序列。
  第一阶段问题: 现在整个视野区域向某个方向缓慢运动,拍摄到的系列图像实时地传输到计算机中。请你建立合理的数学模型和算法,通过分析实时拍摄的图像,使用尽量少的时间,以判断出运动的方向。

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

  随着数码光学的软硬件发展,数码摄像技术得到广泛应用,由于成像设备等各方面因素的限制,设定成像分辨率为32×64,每个像素取对应网格亮度平均值。在图像摄取过程中,整个视野区域向某个方向(理解为直线)缓慢运动时,每隔一段时间拍摄一帧图像获得一组图像序列,实时传输给计算机,要求以尽量少的时间判断出运动的方向,并保证足够的精度。若图像满足“各向同性的一阶马尔科夫过程”假设,则使用一到两帧图像便可判断出运动方向。由于没有对帧率明确定义,进行分类讨论:
  一、摄像帧率较低,或者说不考虑单帧画面的运动性,图像是清晰的,则根据运动跟踪理论,利用至少两帧图像可判断出运动方向。拍摄了一组图像来模拟不同真实运动方向的连续两帧图像,在MATLAB编程环境下,建立了简洁的基于特征的图像跟踪算法模型,跟踪计算二值化处理后图像中的目标形心。涵盖全部方向范围的试验,结果验证了当背景中目标较明显时,模型可以以较高精度判断出运动方向,并可扩展到解决更复杂的图像跟踪问题。模型可应用到行人跟踪、智能交互等领域中。
  二、摄像帧率较高,每帧图像包含了因为视野区域发生运动导致的位移,即图像是模糊的,通过设计图像模糊算法,仅利用一帧图像便可判断出运动方向。利用Photoshop生成了一组模拟不同真实运动方向的模糊图像,基于滤波方向为运动模糊方向时,微分图像灰度绝对值之和最小,在MATLAB编程环境下,建立高通滤波算法模型,涵盖全部方向范围的试验结果验证了可以在大角度范围内准确地判断出运动方向;通过建立基于频谱预处理的算法模型补充解决小角度运动方向判断精度不足问题。这两个模型可应用到视频监视、智能交通等领域中。
  本文还对以上两种情况下建立的模型进行讨论、修正和优化。另外,两帧图像间的运动方向判断模型可以推广到序列图像的方向识别中;不过,本文只考虑了平面运动,没有分析空间运动情况。

问题分析:

  题目给出的前提和条件有:
  (1)成像方式
像素(Pixel)指基本原色素及其灰度的基本编码。通过数码摄像设备等设备获得图像传输到计算机,可得到由像素组成的点阵图(即题目中的相同大小矩形格子的组合),以每英寸的像素数(PPI,Pixels Per Inch)来衡量。图像分辨率的表达方式也为“水平像素数×垂直像素数”,题目给定成像分辨率取32×64。点阵图具有精细的图像结构、丰富的灰度层次和广阔的颜色阶调(色调值)。题目为简单起见,给定只需考虑单色成像,即用灰阶图(Gray Scale)来显示图像,图像的所有轮廓都是由深浅不同的灰色像素构成,是把白色和黑色之间按对数关系分为0~255共256阶,称为灰度,这里每个像素的取值为对应格子的亮度(lightness)平均值。其实,亮度是与颜色多明亮有关系的色彩空间的一个维度,调整亮度的方法就是设置Gamma值——其定义恰恰是图像的灰度值[14]。
  (2)运动方式
  运动方向:题目给定视野区域向“某个方向”运动,则认为始终是直线运动,即将成像系统看成线性系统。当然,并未说明是平面运动还是空间运动,即没有说明成像设备与成像目标物体之间的距离是否发生改变。首先讨论平面运动的情况,空间运动的情况将在后面进行说明。
  运动速度:“缓慢”是一个相对拍摄时间间隔(帧率)而言的概念,没有具体说明,我们进行讨论:
  一、帧率较低,也就是两帧图像之间隔了数秒甚至更久,成像目标物体发生相对很大位移变化的情况,如图2-1 a)所示,不考虑单帧画面存在运动,即对“运动的画面体现为图像的序列”的一种理解,那么每一幅图像都是清晰地,需要通过设计数学算法,对至少两幅连续图像进行追踪分析才能够判断出运动方向。
  二、考虑实际情况,帧率是较高的,一般是十几至数十秒分之一,则“缓慢”运动,也就是说在两帧之间成像设备与成像目标物体相对位移较小,必然产生模糊运动的情况,如图2-1 a)所示。那么可以通过设计数学算法,仅利用一帧图像便可判断出运动方向,以实现时间尽量少的要求。
在这里插入图片描述

  运动形式:可能匀速运动,加速运动,(振动),主要考虑匀速运动,对分析问题影响不大。
  (3)实时传输
  题目中说明了拍摄图像“实时”传递给计算机,则计算机可以进行实时分析运算,以判断运动方向和修正,认为这个传递时间可以忽略不计,理论上,求出的计算机每次运算耗时应足够短。
  第一阶段问题:要求用最优方法判断出摄影视野区域运动的方向。具体理解为应在结合数码摄像技术和生活实际的前提下,约定满足要求而尽量小的误差区间,以此前提给出以最快时间获取运动方向的数学模型和算法,并对若干满足题目给定条件的图像案例进行试验,验证模型是否符合运行时间最快、判断精度够高的要求。我们按照对题意的不同考虑及是否会产生图像运动模糊来分类,分别用运动跟踪算法和运动模糊算法建立不同模型,判断运动方向,计算误差。

模型假设:

  (1)假设摄像时的环境等客观条件不发生任何改变,即控制无关变量。
  (2)假设图像是自然图像,即每帧图像是“各向同性的一阶马尔科夫过程”,即图像的自相关及其功率谱是各向同性的,即每一帧图像只依赖于前一帧而不依赖过往图像。
  (3)假设是直线的相对运动,因为题目中说明了只是“向某个方向”。在实际应用中,匀速直线运动问题更具有一般性和普遍性;并且,变速的、非直线运动在某些条件下可以被分解成分段匀速直线运动。只要解决匀速直线运动图像序列的方向判断问题,变速的、非直线运动图像序列的方向判断问题就相对容易解决。
  (4)因为运动方向不变,则可将一序列图像移动问题简化成相邻两帧甚至一帧图像间移动的问题,制定出有效算法后再推广到序列图像问题。
  (5)依题,为了辨识方便和计算简单,可以将图像进行灰度化甚至二值化处理。
  (6)只考虑平面运动,不扩展到空间运动。

论文缩略图:

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

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

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

clc
clear
M=32; %图像的像素点宽度
N=64; %图像的像素点高度
%--------------将原始图像处理成符合要求的格式---------------------------%
A=read_seqim(5); %imread 函数读取图像 1 文件
B=read_seqim(8); %imread 函数读取图像 2 文件
for i=1:2
 if i==1
 Origin=A;
 else
 Origin=B;
 end
% imshow(Origin); %显示原图像
% title('原始彩色图像');
hsv=rgb2hsv(Origin); %提取黑白图像的亮度
H=hsv(:,:,1);%色彩
S=hsv(:,:,2);%深度
V=hsv(:,:,3);%亮度
A=size(Origin);%判断原始数据的像素
%-------------将原图像分割成 32X64 快区域,对每一个区域进行------------%
m=floor(A(1)/M); %原图宽度上将原图分为几块
n=floor(A(2)/N); %原图高度上将原图分为几块
Scolor=zeros(M,N);
t=1;
for i1=1:M
 t1=1;
 for j1=1:N
 Medium=V(t:i1*m,t1:j1*n);
 Scolor(i1,j1)=sum(sum(Medium))/(m*n);
 t1=j1*n;
 end
 t=i1*m;
end
%----------------------------储存两张处理后的图像----------------------------%
 if i==1
 saveas(gcf,['C:\Users\diaosi\Desktop\matlab1\','图像 1 处理后图像.jpg']);
 pic_original=Scolor;
 else

saveas(gcf,['C:\Users\diaosi\Desktop\matlab1\','图像 2 处理后图像.jpg']);
 pic_compare=Scolor;
 end
end
%------------显示原始图像与对比图像(都是经过处理后的)---------------%
figure(1)
imshow(pic_original);
title('图像 1 灰度处理');
figure(2)
imshow(pic_compare);
title('图像 2 灰度处理');
%----------------------------------二值化处理----------------------------------%
pic_original_bw=im2bw(pic_original);
figure(3)
imshow(pic_original_bw);
title('灰度图像 1 二值化处理');
saveas(gcf,['C:\Users\diaosi\Desktop\matlab1\','图像 1 处理后二进制图像.jpg']);
pic_compare_bw=im2bw(pic_compare);
figure(4)
imshow(pic_compare_bw);
title('灰度图像 2 二值化处理');
saveas(gcf,['C:\Users\diaosi\Desktop\matlab1\','图像 2 处理后二进制图像.jpg']);
%%_______X 代表高度,Y 代表宽度___________%%
%---------------求灰度图像 1 二值化处理后亮度的中心位置----------------%
t=0;%定义图像 1 亮度为 1 的个数
pic_original_local_sum_X=0;
pic_original_local_sum_Y=0;
for i=1:M
 for j=1:N
 if (pic_original_bw(i,j)==1)
 pic_original_local_sum_X=pic_original_local_sum_X+i;
 pic_original_local_sum_Y=pic_original_local_sum_Y+j;
 t=t+1;
 end
 end
end 
pic_original_local_X=floor(pic_original_local_sum_X/t);%定义定义图像 1 亮度中心 X 方向上的位
置
pic_original_local_Y=floor(pic_original_local_sum_Y/t);%定义定义图像 1 亮度中心 Y 方向上的位
置 
%-----------求灰度图像 2 二值化处理后亮度的中心位置---------------%
t1=0;%定义图像 2 亮度为 1 的个数
pic_compare_local_sum_X=0;%x 方向上的位置
pic_compare_local_sum_Y=0;%Y 方向上的位置
for i=1:M
 for j=1:N
 if (pic_compare_bw(i,j)==1)
 pic_compare_local_sum_X=pic_compare_local_sum_X+i;
 pic_compare_local_sum_Y=pic_compare_local_sum_Y+j;
 t1=t1+1;
 end
 end
end 
pic_compare_local_X=floor(pic_compare_local_sum_X/t1);%定义定义图像 2 亮度中心 X 方向的位
置
pic_compare_local_Y=floor(pic_compare_local_sum_Y/t1);%定义定义图像 2 亮度中心 Y 方向的位
置
%------------------判别运动的方向,并输出结果到命令窗口---------------------%
if(pic_compare_local_Y>pic_original_local_Y)&&(pic_compare_local_X>pic_original_local_X) 
degree=atan(abs(pic_compare_local_Y-pic_original_local_Y)/abs(pic_compare_local_X-pic_original_
local_X))*180/pi;
 fprintf('运动方向为右下,与 Y 轴的夹角为%f\n',degree)
elseif(pic_compare_local_Y>pic_original_local_Y)&&(pic_compare_local_X<pic_original_local_X) 
degree=atan(abs(pic_compare_local_Y-pic_original_local_Y)/abs(pic_compare_local_X-pic_original_
local_X))*180/pi;
 fprintf('运动方向为右上,与 Y 轴的夹角为%f\n',degree) 
elseif(pic_compare_local_Y<pic_original_local_Y)&&(pic_compare_local_X<pic_original_local_X) 
degree=atan(abs(pic_compare_local_Y-pic_original_local_Y)/abs(pic_compare_local_X-pic_original_
local_X))*180/pi;
 fprintf('运动方向为左上,与 Y 轴的夹角为%f\n',degree)
elseif(pic_compare_local_Y<pic_original_local_Y)&&(pic_compare_local_X>pic_original_local_X)
degree=atan(abs(pic_compare_local_Y-pic_original_local_Y)/abs(pic_compare_local_X-pic_original_
local_X))*180/pi;
 fprintf('运动方向为左下,与 Y 轴的夹角为%f\n',degree) 
elseif(pic_compare_local_Y>pic_original_local_Y)&&(pic_compare_local_X==pic_original_local_X
)
 fprintf('运动方向为右\n')
elseif(pic_compare_local_Y<pic_original_local_Y)&&(pic_compare_local_X==pic_original_local_X
)
 fprintf('运动方向为左\n')
elseif(pic_compare_local_Y==pic_original_local_Y)&&(pic_compare_local_X<pic_original_local_X
)
 fprintf('运动方向为上\n')
elseif(pic_compare_local_Y==pic_original_local_Y)&&(pic_compare_local_X>pic_original_local_X
)
 fprintf('运动方向为下\n')
end
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

架构师之路(十四)计算机网络(网络层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 网络层提供主机…

Dlearning

Deep Learning Basic 神经网络&#xff1a; #mermaid-svg-rR22a8Udy5SxGOoP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rR22a8Udy5SxGOoP .error-icon{fill:#552222;}#mermaid-svg-rR22a8Udy5SxGOoP .error-t…

线扫相机使用教程

一.线扫相机的采集原理 在现有的工业 2D 相机中&#xff0c;主要有两种类型的相机&#xff0c;面阵相机和线扫相机。这两种相机有其 各自的特点。 面阵相机&#xff1a;主要用于采集较小尺寸的产品&#xff0c;特别是长度方向较小的产品。其采集原理是通过 单次或多次曝光&…

Atlassian 停服 Bitbucket?三步快速迁移至极狐GitLab

之前的文章Jira 母公司全面停服 Server 产品&#xff0c;用户如何迁移至极狐GitLab提到了 Atlassian 将在 2 月 15 日以后停止对 Server 端产品的服务支持&#xff0c;此后用户将无法像之前一样继续使用 Jira、Bitbucket、Bamboo、Confluence 这些产品了。如果用户想要继续使用…

蓝牙----蓝牙消息传输_GATT服务发现

蓝牙消息传输_GATT服务发现 1.主机和从机GATT服务的发现2.通知的使用 1.主机和从机GATT服务的发现 GATT服务的发现由主机执行&#xff0c;一共三个阶段  1.处理交换 MTU 请求和响应&#xff0c;启动对 Simple Service 服务的发现。 if (discState BLE_DISC_STATE_MTU){// MT…

四川思维跳动商务信息咨询有限公司专注抖音电商服务

在当今这个数字化时代&#xff0c;电商服务已经成为企业发展的重要驱动力。四川思维跳动商务信息咨询有限公司作为一家专注于抖音电商服务的公司&#xff0c;以其卓越的服务质量和创新能力&#xff0c;成为了行业的领航者。 四川思维跳动商务信息咨询有限公司自成立以来&#x…

pyqt5+vscode 配置坑笔记

1.conda activate XX 时失败 这样出来的python版本也是错的&#xff08;总是全局版本&#xff09; 无法加载文件 D:\Documents\WindowsPowerShell\profile.ps1&#xff0c;因为在此系统上禁止运行脚本 系统设置允许执行脚本解决 无法加载文件WindowsPowerShell\profile.ps1…

leetcode hot100组合

在本题中&#xff0c;是要求返回[1,n]这个数组的长度为k的组合。涉及到排列、组合、棋盘、分割等问题的时候&#xff0c;要考虑利用回溯来进行解决。 回溯和递归类似&#xff0c;也分为三步进行分析 确定递归函数的返回值和参数&#xff1a;一般来说返回值都是void&#xff0c…

互斥锁/读写锁(Linux)

一、互斥锁 临界资源概念&#xff1a; 不能同时访问的资源&#xff0c;比如写文件&#xff0c;只能由一个线程写&#xff0c;同时写会写乱。 比如外设打印机&#xff0c;打印的时候只能由一个程序使用。 外设基本上都是不能共享的资源。 生活中比如卫生间&#xff0c;同一…

微软人工智能办公AI工具 Copilot Pro 11项 Copilot 功能

Copilot&#xff08;曾用名 Bing Chat 和 Bing Chat Enterprise&#xff09;在此期间成为了许多用户的日常AI伴侣&#xff0c;并在正式发布后将继续为用户提供AI驱动的网络聊天体验。 微软Copilot官方网址链接&#xff1a;Microsoft Copilot: 你的日常 AI 助手 Copilot详情&am…

香港web3盛会:Unisat确认参加Big Demo Day项目路演

本次“Big Demo Day”将于1月31日举办第十期&#xff0c;是由Zeepr 总冠名&#xff0c;Central Research、Techub News联合主办、数码港、852web3支持举行的大型线下活动。Big Demo Day集结了Web2和Web3行业精英聚焦香港市场。 Unisat确认参加 Big Demo Day 线下活动&#xff0…

14.java集合

文章目录 概念Collection 接口概念示例 Iterator 迭代器基本操作&#xff1a;并发修改异常增强循环遍历数组&#xff1a;遍历集合&#xff1a;遍历字符串&#xff1a;限制 list接口ListIteratorArrayList创建 ArrayList&#xff1a;添加元素&#xff1a;获取元素&#xff1a;修…

Java JVM类加载阶段 双亲委派模式

类加载阶段 加载 将类的字节码载入方法区中&#xff0c;内部采用 C 的 instanceKlass 描述 java 类&#xff0c;它的重要 field 有&#xff1a; _java_mirror 即 java 的类镜像&#xff0c;例如对 String 来说&#xff0c;就是 String.class&#xff0c;作用是把 klass 暴露…

WWDG喂狗

3F 是0111111 40 是1000000 0X7F 127 0X5F 95 127-9532 注意:中断是在0x40,在0x40喂狗则程序不会复位 在0x5F之前喂狗会复位,减小到63以下也会复位 在0x5F与0x3F之间喂狗会继续执行,不会复位 WWDG_HandleTypeDef WWDG_Handler; //窗口看门狗句柄//初始化窗口看门狗…

2024 高级前端面试题之 HTML 「精选篇」

该内容主要整理关于 HTML 的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 HTML模块精选篇 1. 如何理解HTML语义化2. H5的新特性有哪些3. 说一下 HTML5 Drag API4. iframe有那些缺点5. 如何实现浏览器内多个标签页之间的通信6. 简述一下s…

EF core连接数据库的前期完整配置流程-开发环境搭建

EF core连接数据库完整流程-开发环境搭建 前置&#xff1a;.net6 core webapi不勾选任何配置 声明&#xff1a;这里是以两个配置类来做的&#xff0c;一个T_Books表&#xff0c;一个T_Person表 Book&#xff1a;创建属性及类型 BookConfig&#xff1a;对创建的进行属性数据表…

坚持刷题 | 平衡二叉树

文章目录 题目考察点代码实现实现总结对实现进一步改进扩展提问 坚持刷题&#xff0c;老年痴呆追不上我&#xff0c;今天继续二叉树&#xff1a;平衡二叉树 题目 110.平衡二叉树 考察点 递归能力&#xff1a; 能否使用递归来解决问题。树的基本操作&#xff1a;能否正确地访…

【算法练习】leetcode算法题合集之动态规划篇

普通动规系列 LeetCode343. 整数拆分 LeetCode343. 整数拆分 将10的结果存在索引为10的位置上&#xff0c;需要保证数组长度是n1&#xff0c;索引的最大值是n&#xff0c;索引是从0开始的。 n的拆分&#xff0c;可以拆分为i和n-i&#xff0c;当然i可以继续拆分。而且拆分为n-…

Vue基础知识

Vue Vue基础知识 v-bind:动态绑定属性值 Vue 修改&#xff0c;标签内也修改 在methods 中可以定义很多函数 在 data 中可以定义很多变量 v-if / v-show&#xff1a;对符合条件的元素进行展示 v-for:把数据遍历出现在网页中 案例 <!DOCTYPE html><html lang"e…

【论文阅读笔记】Towards Universal Unsupervised Anomaly Detection in Medical Imaging

Towards Universal Unsupervised Anomaly Detection in Medical Imaging arxiv&#xff0c;19 Jan 2024 【开源】 【核心思想】 本文介绍了一种新的无监督异常检测方法—Reversed Auto-Encoders (RA)&#xff0c;旨在提高医学影像中病理检测的准确性和范围。RA通过生成类似健…