2017年国赛高教杯数学建模C题颜色与物质浓度辨识解题全过程文档及程序

news2024/9/20 6:43:42

2017年国赛高教杯数学建模

C题 颜色与物质浓度辨识

  比色法是目前常用的一种检测物质浓度的方法,即把待测物质制备成溶液后滴在特定的白色试纸表面,等其充分反应以后获得一张有颜色的试纸,再把该颜色试纸与一个标准比色卡进行对比,就可以确定待测物质的浓度档位了。由于每个人对颜色的敏感差异和观测误差,使得这一方法在精度上受到很大影响。随着照相技术和颜色分辨率的提高,希望建立颜色读数和物质浓度的数量关系,即只要输入照片中的颜色读数就能够获得待测物质的浓度。试根据附件所提供的有关颜色读数和物质浓度数据完成下列问题:
  1. 附件Data1.xls中分别给出了5种物质在不同浓度下的颜色读数,讨论从这5组数据中能否确定颜色读数和物质浓度之间的关系,并给出一些准则来评价这5组数据的优劣。
  2. 对附件Data2.xls中的数据,建立颜色读数和物质浓度的数学模型,并给出模型的误差分析。
  3. 探讨数据量和颜色维度对模型的影响。

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

  数码照片比色法一种检测物质浓度的方法,其原理是根据照片中的颜色读数来判断待测物质的浓度。本文根据所给数据的特征,采用合理的颜色读数值建立统计回归模型,对颜色读数与物质浓度之间的关系进行了细致的分析与研究。
  针对问题一,首先分别做出各组数据中的RGB值与浓度的散点图,大体判断出是否采用RGB颜色模型或灰度颜色模型进行回归分析建模。如不可行,再结合数据特征,用HSV颜色模型(H值或S值)与浓度建立回归分析模型。具体回归函数可以根据各组数据变化特征进行选择。 如组胺、溴酸钾、工业碱三组数据,可以采用灰度颜色模型建立一元回归分析模型,进而确定出颜色读数与物质浓度之间的关系。对于硫酸铝钾,采用 S 值与浓度建立Michaelis-Menten 回归分析模型,也可以确定出两者之间的关系。对于奶中尿素,经过对比,最后采用RGB中的B值与浓度建立回归模型,但该组数据拟合效果相对较差。 对于数据优劣的评价,主要从数据的准确度和精密度进行分析。两者可以分别用实验测量次数和数据的标准偏差大小进行量化。通过两者的比值构造数据优劣度模型,对各组数据进行排序。最终优劣顺序为:溴酸钾、组胺、硫酸铝钾、工业碱与奶中尿素。
  针对问题二,结合二氧化硫H值和浓度的变化规律,选用Michaelis-Menten模型构建回归分析方程,并对计算结果进行误差分析,删去数据异常点,进行模型改进,并做出模型预测值与原始数据的残差图。模型的预测值误差基本可以控制在10%以内。
  针对问题三,首先考虑数据量对模型的影响,一般,数据量越大越好。通过删除问题一中的部分溴酸钾溶液数据,重新建立模型与问题一中结果对比,可以看出模型的拟合效果明显变差。所以数据量应结合实际情况,至少达到一定量,并尽量做到数据分布均匀,当数据间隔较大时,应对同组数据进行多次测量。 其次考虑颜色维度对模型的影响,对问题一中工业碱溶液的模型进行改进,建立灰度值,H值、S值与浓度的多元线性回归模型,可以发现拟合的效果反而变差。再建立RGB三个值、H值、S值与浓度的多元线性回归模型,则模型的效果可以得到提高。由此可以判断颜色维度对模型的影响好坏不能一概而论,要结合具体的实验数据进行讨论。

模型假设:

  1、假设各组照片的拍摄环境是一致的。
  2、忽略拍摄环境(距离、角度、温度)对读数的影响。
  3、假设各组颜色数据的读取设备是同一台设备的。
  4、假设试纸没有过期、无破损。
  5、假设溶液与试纸已充分反应。

问题分析:

  预备知识
  数字照片比色法是一种对采集图片数字化处理的分析方法,该种方法操作简便,耗时少,成本低。其原理是根据显色溶液的特点来选择不同的颜色模型,并由分析软件得出最终结果。常用的颜色模型有RGB、灰度、HSV等[1] [2]。 RGB 颜色模型是由红、绿、蓝三基色通过颜色加权混合而成的一种模型,其每种颜色的取值范围为[0,255]。 灰度颜色模型是用0到255的不同灰度值来表示图像,0表示黑色,255表示白色,灰度模式可以由RGB模式直接转换得到。在比色法中,用灰度颜色模型对显色结果进行分析是比较简便的。 HSV颜色模型是由每一种颜色都是由色调,饱和度和明度三个变量所决定的颜色模型。其在计算机图像处理、车牌识别等领域用途较为广泛。

  问题的分析
  针对问题一,首先对5组数据画出RGB值与浓度的散点图,从而大体判断能否用RGB颜色模型或灰色颜色模型进行回归分析建模。如果RGB值与浓度关系不明显或拟合效果不佳,再用HSV颜色模型(H值或S值)与浓度建立回归分析模型。具体回归函数可以根据各组数据变化特征进行选择,从而建立各组颜色读数与浓度的数学模型。 对于评价数据的优劣,可以从数据的准确度和精密度进行分析。准确度主要从测量次数分析,精密度主要依靠数据的标准偏差大小进行量化。通过两者的比值构造数据优劣度模型,对各组数据进行排序。
  针对问题二,首先观察二氧化硫溶液的RGB值、H值与S值与浓度变化趋势,可以发现H值与浓度变化关系最为明显,结合H值数据的变化规律,选用Michaelis-Menten模型构建回归分析方程,并对计算结果进行误差分析,筛选掉数据异常点,建立更精确的回归模型。并给出预测值与原始数据的残差图,模型预测值的误差基本控制在10%以内。
  针对问题三,首先考虑数据量对模型的影响,单纯从建模需要来讲,样本容量肯定是越大越好。若删除问题一中的部分溴酸钾溶液数据,重新建立模型,可以得到模型的拟合效果明显变差。因此,根据实验要求不同,数据量至少达到一定量,并尽量做到数据分布均匀,当数据间隔较大时,可对同组数据进行多次测量。 其次考虑颜色维度对模型的影响,对问题一中工业碱溶液的模型进行改进,结合数据特征,将灰度颜色模型,与H值、S值一起建立多元线性回归模型,发现拟合的效果反而变差。再将RGB三个值、H值、S值一起建立多元线性回归模型,则模型的效果可以得到提高。由此可以判断颜色维度对模型的影响好坏不能一概而论,要结合具体的实验数据进行讨论。

模型的建立与求解整体论文缩略图

在这里插入图片描述

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

程序代码:

图5-1程序 
clc,clear; 
load za.txt; 
B=za(:,1);B=B'; 
G=za(:,2);G=G'; 
R=za(:,3);R=R'; 
H=za(:,4);H=H'; 
S=za(:,5);S=S'; 
y=za(:,6);y=y'; 
plot(y,R,'r+',y,G,'G*',y,B,'bo') 
表5-2程序 
clc,clear; 
L=[76;74;91;92;101;101;103;102;109;108]; 
y=[100;100;50;50;25;25;12.5;12.5;0;0]; 
x=[ones(10,1),L]; 
[b,bint,r,rint,stats]=regress(y,x) 
图5-2程序 
clc,clear; 
load xsj.txt; 
B=xsj(:,1);B=B'; 
G=xsj(:,2);G=G'; 
R=xsj(:,3);R=R'; 
H=xsj(:,4);H=H'; 
S=xsj(:,5);S=S'; 
y=xsj(:,6);y=y'; 
plot(y,R,'r+',y,G,'G*',y,B,'bo') 
表5-4程序 
L=[122;122;127;127;131;132;135;135;141;140]; 
y=[100;100;50;50;25;25;12.5;12.5;0;0]; 
x=[ones(10,1),L]; 
[b,bint,r,rint,stats]=regress(y,x) 
表5-5程序 
L=[122;122;127;127;131;132;135;135;141;140]; 
y=[100;100;50;50;25;25;12.5;12.5;0;0]; 
for(i=1:10) 
lt(i,1)=L(i,1)*L(i,1); 
end 
x=[ones(10,1),lt,L]; 
[b,bint,r,rint,stats]=regress(y,x) 
图5-3程序 
clc,clear; 
load gyj.txt; 
B=gyj(:,1);B=B'; 
G=gyj(:,2);G=G'; 
R=gyj(:,3);R=R'; 
H=gyj(:,4);H=H'; 
S=gyj(:,5);S=S'; 
y=gyj(:,6);y=y'; 
plot(y,R,'r+',y,G,'G*',y,B,'bo') 
表5-7程序 
clc,clear; 
L=[41 62 104 130 140 139  
140]; 
y=[11.8 10.18 9.19 8.74 8.14 7.34 0];  
x=[ones(7,1),L']; 
[b,bint,r,rint,stats]=regress(y',x) 
rcoplot(r,rint) 
表5-8程序 
clc,clear; 
L=[41 62 104 130 140 139 ]; 
y=[11.8 10.18 9.19 8.74 8.14 7.34 ];  
x=[ones(6,1),L']; 
[b,bint,r,rint,stats]=regress(y',x) 
图5-5程序 
clc,clear; 
load lslj.txt; 
B=lslj(:,1);B=B'; 
G=lslj(:,2);G=G'; 
R=lslj(:,3);R=R'; 
H=lslj(:,4);H=H'; 
S=lslj(:,5);S=S'; 
y=lslj(:,6);y=y'; 
plot(y,R,'r+',y,G,'G*',y,B,'bo') 
图5-6程序 
clc,clear; 
load llsj.txt; 
B=llsj(:,1);B=B'; 
G=llsj(:,2);G=G'; 
R=llsj(:,3);R=R'; 
H=llsj(:,4);H=H'; 
S=llsj(:,5);S=S'; 
L=llsj(:,6);L=L'; 
y=llsj(:,7);y=y'; 
plot(y,H,'*')
clc,clear; 
load llsj.txt; 
B=llsj(:,1);B=B'; 
G=llsj(:,2);G=G'; 
R=llsj(:,3);R=R'; 
H=llsj(:,4);H=H'; 
S=llsj(:,5);S=S'; 
L=llsj(:,6);L=L'; 
y=llsj(:,7);y=y'; 
plot(y,S,'o') 
图5-8程序 
clc,clear; 
load llsj.txt; 
B=llsj(:,1);B=B'; 
G=llsj(:,2);G=G'; 
R=llsj(:,3);R=R'; 
H=llsj(:,4);H=H'; 
S=llsj(:,5);S=S'; 
L=llsj(:,6);L=L'; 
y=llsj(:,7);y=y'; 
x=[ones(37,1),H']; 
[b,bint,r,rint,stats]=regress(y',x) 
%————————分析S———————————— 
[beta0]=[-6.5071 0.0847]; 
[beta,R,J]=nlinfit(y,S,'huaxue',beta0); 
betaci=nlparci(beta,R,J); 
beta,betaci 
ss=beta(1)*y./(beta(2)+y); 
yy=(ss*0.19)./(200.90-ss); 
y1=y-yy; 
plot(S,y1,'o'); 
nlintool(y,S,'huaxue',beta); 
%————————分析h———————————— 
[beta0]=[-6.5071 0.0847]; 
[beta,R,J]=nlinfit(y,H,'huaxue',beta0); 
betaci=nlparci(beta,R,J); 
beta,betaci 
hh=beta(1)*y./(beta(2)+y);yy=S./2; 
plot(y,H,'o',y,yy,'*'),pause 
nlintool(y,H,'huaxue',beta) 
图5-9程序 
clc,clear; 
load nzns.txt; 
B=nzns(:,1);B=B'; 
G=nzns(:,2);G=G'; 
R=nzns(:,3);R=R'; 
H=nzns(:,4);H=H'; 
S=nzns(:,5);S=S'; 
y=nzns(:,6);y=y'; 
plot(y,R,'r+',y,G,'g*',y,B,'bo') 
表5-10 程序 
B=[105 108 107 107 110 105 112 108 111 117 114 119 125 120 118]; 
G=[136 140 135 136 136 134 132 136 139 137 134 140 135 136 136]; 
R=[137 142 138 139 139 138 134 138 142 139 138 142 140 138 139]; 
H=[28 28 26 26 26 26 27 28 27 27 25 26 20 26 25]; 
S=[58 
60 57 58 52 60 42 54 55 41 44 40 27 33 37]; 
L=[133 137 133 134 134 132 130 133 137 135 133 138 135 135 135]; 
y=[2000 2000 
2000 
0]; 
x=[ones(15,1),L']; 
1500 
[b,bint,r,rint,stats]=regress(y',x) 
图5-10(a)程序 
clc,clear; 
load nzns.txt; 
B=nzns(:,1);B=B'; 
G=nzns(:,2);G=G'; 
R=nzns(:,3);R=R'; 
H=nzns(:,4);H=H'; 
S=nzns(:,5);S=S'; 
y=nzns(:,6);y=y'; 
plot(y,H,'r*') 
图5-10(b)程序 
clc,clear; 
load nzns.txt; 
B=nzns(:,1);B=B'; 
G=nzns(:,2);G=G'; 
R=nzns(:,3);R=R'; 
H=nzns(:,4);H=H'; 
S=nzns(:,5);S=S'; 
y=nzns(:,6);y=y'; 
plot(y,S,'bo') 
表5-11 程序 
clc,clear; 
1500 
1500 
1000 
1000 
500 500 500 5 0 0
 B=[105 108 107 107 110 105 112 108 111 117 114 119 125 120 118]; 
G=[136 140 135 136 136 134 132 136 139 137 134 140 135 136 136]; 
R=[137 142 138 139 139 138 134 138 142 139 138 142 140 138 139]; 
H=[28 28 26 26 26 26 27 28 27 27 25 26 20 26 25]; 
S=[58 60 57 58 52 60 42 54 55 41 44 40 27 33 37]; 
L=[133 137 133 134 134 132 130 133 137 135 133 138 135 135 135]; 
y=[2000 2000 2000 1500 1500 1500 1000 1000 500 500 500 5 0 0 0]; 
x=[ones(15,1),S']; 
[b,bint,r,rint,stats]=regress(y',x)
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

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

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

相关文章

如何查看电脑什么时候被人动过及看过的文件?

一、查看Windows事件查看器 Windows系统具有强大的日志记录功能,通过“事件查看器”可以查看电脑的使用记录。具体步骤如下: 按下Win R组合键打开运行窗口,输入eventvwr.msc命令并回车,打开事件查看器。 在事件查看器中&#x…

solidwork镜像实体

效果如下: 可以看到这两条线是对称的。 第一步,点击这条要镜像的边,接着点击镜像实体。 然后选择镜像轴,即可

OpenHarmony标准系统mipi摄像头适配

OpenHarmony标准系统mipi摄像头适配 本文档以rk3568为例,讲述如何在OpenHarmony 标准系统rk设备上适配mipi摄像头。 开发环境 OpenHarmony标准系统4.1rrk3568设备摄像头ov5648,ov8858 文档约定:4.1r_3568为OpenHarmony标准系统源码根目录 1.适配准备:得…

苹果CMS插件:优化蜘蛛访问内容,提升百度收录率

确保蜘蛛抓取原始内容 专为苹果CMS设计的广告管理插件,能够智能识别搜索引擎蜘蛛与普通访客,确保蜘蛛访问时展示原始内容,从而提升被百度等搜索引擎收录的几率。 广告显示提升收益 对于普通访客,该插件则优先显示广告内容&#…

UnLua扩展C++函数和蓝图自定义事件

一、通过BlueprintImplementableEvent标记扩展C函数 1、 这个标记表示C不需要实现,让蓝图/Lua重写。 2、首先在C中将LuaImp函数标记为BlueprintImplementableEvent,不需要实现,然后再GetIndex中调用该函数。 MyBaseActor.h UFUNCTION(Bluepr…

电力电塔电线缺陷检测数据集 voc yolo

电力 电塔电线缺陷检测数据集 10000张 带标注 voc yolo 电力电塔电线缺陷检测数据集 数据集描述 该数据集旨在用于电力电塔和电线的缺陷检测任务,涵盖多种常见的缺陷类型。数据集包含了大量的图像及其对应的标注信息,可用于训练计算机视觉模型&#x…

DEPLOT: One-shot visual language reasoning by plot-to-table translation论文阅读

文章链接:https://arxiv.org/abs/2308.01979http://arxiv.org/abs/2212.10505https://arxiv.org/abs/2308.01979 源码链接:https://github.com/cse-ai-lab/RealCQA Abstract 理解图表需要很强的推理能力,之前的最先进 (SOTA&…

圆周阵列元件的间距增加操作方法

在进行器件圆周阵列时,内圈的角度和外圈的旋转角度都相同,由于内圈的圆周长小于外圈的圆周长,有可能在内圈造成部分元件之间有两个焊盘会有覆盖的情况,此时需要对内圈的元件位置进行微调,需要增加在同一半径位置的元件…

数据结构 ——— 算法的时间复杂度

目录 时间复杂度的概念 时间复杂度函数式 大O的渐进表示法的概念 大O的渐进表示法 时间复杂度的概念 在计算机科学中,算法的时间复杂度是一个函数(数学上的函数式),它定量描述了该算法的运行时间,一个算法执行所耗…

Netty笔记10-Netty参数调优

文章目录 一、CONNECT_TIMEOUT_MILLISCONNECT_TIMEOUT_MILLIS设置为1秒超时CONNECT_TIMEOUT_MILLIS设置为5秒超时注意事项 二、SO_BACKLOG代码示例注意事项 三、ulimit -n(文件描述符)设置文件描述符限制在注意事项 四、TCP_NODELAY使用 TCP_NODELAY 的场景注意事项 五、SO_SND…

软件安全最佳实践:首先关注的地方

尽管组织拥有大量可用的工具,但应用程序安全性仍然不足。 最近的数据显示,在过去四到五年中,软件供应链攻击同比增长了 600-700%,超过一半的美国企业在过去 12 个月中遭受过某种形式的软件供应链攻击。 为何应用程序安全工作未…

签署《AI安全国际对话威尼斯共识》 智源持续推动人工智能安全发展

近日,由AI安全国际论坛(Safe AI Forum)和博古睿研究院(Berggruen Institute) 共同举办的第三届国际AI安全对话(International Dialogues on AI Safety)在威尼斯举办。图灵奖得主Yoshua Bengio、姚期智教授&…

电气设备施工现场风险状态判断ai模型训练数据集

电气设备施工现场风险状态判断ai模型训练数据集 id:18 电气设备施工现场工人人工智能学习数据和工作环境安全数据,建立系统化管理体系,改变全球EHS范式,预防工业事故。数据集记录了387709例子电力设施建设以及施工现场相关的灾害安全环境数据…

VM16安装macOS11

注意: 本文内容于 2024-09-17 12:08:24 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:VM16安装macOS11。感谢您的关注与支持! 使用 Vmware Workstation Pro 16 安装 macOS…

数字世界的新秩序:探索Web3的前景

在过去的几十年中,互联网已经彻底改变了我们的生活方式,推动了信息共享、全球互联以及数字经济的快速发展。然而,当前的互联网架构主要是中心化的,由少数大型科技公司控制数据、服务和基础设施。这种模式虽然高效,但也…

Golang | Leetcode Golang题解之第419题棋盘上的战舰

题目: 题解: func countBattleships(board [][]byte) (ans int) {for i, row : range board {for j, ch : range row {if ch X && !(i > 0 && board[i-1][j] X || j > 0 && board[i][j-1] X) {ans}}}return }

微服务注册中⼼2

5.Nacos配置管理 Nacos除了可以做注册中⼼,同样可以做配置管理来使⽤ 5.1 统⼀配置管理 当微服务部署的实例越来越多,达到数⼗、数百时,逐个修改微服务配置就会让⼈抓狂,⽽且很容易出错。我们需要⼀种统⼀配置管理⽅案&#xf…

idea生成类信息及快捷开发配置

目录 一、预言 二、在Java类的开头自动注释作者名字和日期等信息 2.1.各种预设变量 2.2.idea配置 2.3.成品展示 三、快捷开发 3.1.三种循环热键 3.2.if判断 3.3.instanceof运算 3.4.非空判断 3.5.测试打印 3.6. synchronized 3.7.异常抛出 一、预言 在…

Java运算符有哪些?深入解析Java运算符:从基础到进阶的全方位指南(超全表格)

💻1.前言 在编程中,运算符是处理数据和变量的基本工具。它们不仅使得代码更加简洁,还能极大地提高编程效率。本文还提供了详细的 Java运算符参考表格,涵盖了算术运算符、关系运算符、逻辑运算符、赋值运算符、位运算符、…

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 (SCA) 工具,可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 (CPE) 标识符来实现此目的。如果找到,它…