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

news2024/12/22 20:13:41

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名片即可

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

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

相关文章

一文读懂mysql的锁

提起mysql的锁&#xff0c;你是否会似懂非懂&#xff0c;最常听人提起的就是乐观锁&#xff0c;悲观锁、排他锁、共享锁 悲观锁是用 select c form T for update然后等待提交实现的&#xff0c;但是你知道吗&#xff0c;其实排他锁和悲观锁其实是一回事&#xff01;&#xff0…

vue常用指令(v-if)

一、v-if 指令 作用: 根据表达值的真假,切换元素的显示和隐藏( 操纵dom 元素 ) 二、代码演示 1、v-if 设置条件&#xff0c;添加按键修改状态 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta na…

12. banner 定制

1. 简介 Spring Boot 启动时默认会显示以下 LOGO&#xff1a; . ____ _ __ _ _ /\ / ’ __ _ () __ __ _ \ \ \ ( ( )__ | _ | | | ’ / | \ \ \ \/ )| |)| | | | | || (| | ) ) ) ) ’ || .__|| ||| |_, | / / / / |||///// :: Spring Boot :: (v2.1.1.RELEASE) 实际上&am…

沃通服务器密码机(WTHSM)

概述 沃通服务器密码机&#xff08;WTHSM&#xff09;由沃通CA自主设计开发&#xff0c;严格遵照国密局颁布技术规范&#xff0c;获得国密局颁发《商用密码产品认证证书》&#xff0c;是一款多安全功能、高稳定性、可扩展和快速部署的软硬件集成化安全设备&#xff0c;为应用提…

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

手上 ROC-RK3399-PC Pro 使用蓝牙 WIFI 模组是 AP6256。 一、AP6256 模组介绍 AP6256是正基科技(AMPAK)推出的一款低成本、低功耗的双模模块,它集成了Wi-Fi和蓝牙功能。这款模块支持SDIO接口,具有以下特点: 1、型号:AP6256 2、接口:SDIO(Secure Digital Input/Outp…

MySQL--数据类型(4)

MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型&#xff0c;大致可以分为三类&#xff1a;数值、日期/时间和字符串(字符)类型。 数值类型 MySQL 支持所有标准 SQL 数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL …

SUBMIT指定用户名错误

1、SUBMIT说明 在ABAP中&#xff0c;SUBMIT关键字用于运行另一个ABAP程序。通过SUBMIT关键字&#xff0c;可以在当前程序内部调用其他程序&#xff0c;而无需关闭当前程序。 SUBMIT语句的一般语法如下&#xff1a; "--------------------斌将军-------------------- SUB…

有关软件测试的,任何时间都可以,软件测试主要服务项目:测试用例 报告 计划

有关软件测试的&#xff0c;任何时间都可以&#xff0c;软件测试主要服务项目&#xff1a; 1. 测试用例 2. 测试报告 3. 测试计划 4. 白盒测试 5. 黑盒测试 6. 接口测试 7.自动…

护眼大路灯什么牌子好?公认好用大路灯推荐

一段时间孩子经常搓眼睛&#xff0c;还说眼睛痛&#xff0c;带她去看了眼科医生&#xff0c;医生说应该是用眼习惯不好导致&#xff0c;测了远视储备&#xff0c;虽然正常&#xff0c;但是也是正常范围的临界点了&#xff0c;医生建议多注意孩子的用眼健康&#xff0c;可以减慢…

大文件分块上传进度控制处理

说这个之前&#xff0c;需要对上一篇文章进行一个回顾文件上传之大文件分块上传-CSDN博客 如果我们要对文件进行一个进度的控制&#xff0c;我们可以在upload接口上进行一些操作。 服务器端&#xff1a; 在上一篇&#xff0c;我们已经获取到totalChunks&#xff1a;也就是分…

wayland(xdg_wm_base) + egl + opengles 最简实例

文章目录 前言一、ubuntu 下相关环境准备1. 获取 xdg_wm_base 依赖的相关文件2. 查看 ubuntu 上安装的opengles 版本3. 查看 weston 所支持的 窗口shell 接口种类二、xdg_wm_base 介绍三、egl_wayland_demo1.egl_wayland_demo2_0.c2.egl_wayland_demo3_0.c3. xdg-shell-protoco…

springboot项目快速引入knife4j

引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version> </dependency>knife4j配置文件 basePackage改为自己存放接口的包名 /*** Kn…

Zookeeper3.5.7源码分析

文章目录 一、Zookeeper算法一致性1、Paxos 算法1.1 概述1.2 算法流程1.3 算法缺陷 2、ZAB 协议2.1 概述2.2 Zab 协议内容 3、CAP理论 二、源码详解1、辅助源码1.1 持久化源码(了解)1.2 序列化源码 2、ZK 服务端初始化源码解析2.1 启用脚本分析2.2 ZK 服务端启动入口2.3 解析参…

LLM Agent-指令微调方案

上一章我们介绍了基于Prompt范式的工具调用方案&#xff0c;这一章介绍基于模型微调&#xff0c;支持任意多工具组合调用&#xff0c;复杂调用的方案。多工具调用核心需要解决3个问题&#xff0c;在哪个位置进行工具调用(where), 从众多工具中选择哪一个(Which), 工具的输入是什…

Java-NIO篇章(5)——Reactor反应器模式

前面已经讲过了Java-NIO中的三大核心组件Selector、Channel、Buffer&#xff0c;现在组件我们回了&#xff0c;但是如何实现一个超级高并发的socket网络通信程序呢&#xff1f;假设&#xff0c;我们只有一台内存为32G的Intel-i710八核的机器&#xff0c;如何实现同时2万个客户端…

音频特效SDK,满足内容生产的音频处理需求

美摄科技&#xff0c;作为音频处理技术的佼佼者&#xff0c;推出的音频特效SDK&#xff0c;旨在满足企业内容生产中的音频处理需求。这款SDK内置多种常见音频处理功能&#xff0c;如音频变声、均衡器、淡入淡出、音频变调等&#xff0c;帮助企业轻松应对各种音频处理挑战。 一…

Vue3笔记(2024)

1. Vue3简介 2020年9月18日&#xff0c;Vue.js发布版3.0版本&#xff0c;代号&#xff1a;One Piece&#xff08;n 经历了&#xff1a;4800次提交、40个RFC、600次PR、300贡献者 官方发版地址&#xff1a;Release v3.0.0 One Piece vuejs/core 截止2023年10月&#xff0c;最…

CSS 实现 flex布局最后一行左对齐的方案「多场景、多方案」

目录 前言解决方案场景一、子项宽度固定&#xff0c;每一行列数固定方法一&#xff1a;模拟两端对齐方法二&#xff1a;根据元素个数最后一个元素动态margin 场景二、子项的宽度不确定方法一&#xff1a;直接设置最后一项 margin-right:auto方法二&#xff1a;使用:after(伪元素…

IDEA插件(MyBatis Log Free)

引言 在Java开发中&#xff0c;MyBatis 是一款广泛使用的持久层框架&#xff0c;它简化了SQL映射并提供了强大的数据访问能力。为了更好地调试和优化MyBatis应用中的SQL语句执行&#xff0c;一款名为 MyBatis Log Free 的 IntelliJ IDEA 插件应运而生。这款插件旨在帮助开发者…

P4769 [NOI2018] 冒泡排序 洛谷黑题题解附源码

[NOI2018] 冒泡排序 题目背景 请注意&#xff0c;题目中存在 n 0 n0 n0 的数据。 题目描述 最近&#xff0c;小 S 对冒泡排序产生了浓厚的兴趣。为了问题简单&#xff0c;小 S 只研究对 1 1 1 到 n n n 的排列的冒泡排序。 下面是对冒泡排序的算法描述。 输入&#x…