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

ops/2024/9/24 21:57:16/

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 0B=[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.ppmy.cn/ops/115484.html

相关文章

牛客小白月赛101(A~E)

文章目录 写在前面A tb的区间问题思路code B tb的字符串问题思路code C tb的路径问题思路code D tb的平方问题思路code E tb的数数问题思路code 牛客小白月赛101 写在前面 最近几天没怎么刷题,昨天晚上打的这场牛客月赛打的很烂,隔几天不刷题感觉自己的…

把设计模式用起来!(4) 用不好模式?之原理不明

(清华大学出版社 《把设计模式用起来》书稿试读) 上一篇:把设计模式用起来!(3)用不好模式?之时机不对 为什么用不好设计模式?——原理不明 难搞的顾客:“抹这种霜&#…

Elasticsearch:检索增强生成背后的重要思想

作者:来自 Elastic Jessica L. Moszkowicz 星期天晚上 10 点,我九年级的女儿哭着冲进我的房间。她说她对代数一无所知,注定要失败。我进入超级妈妈模式,却发现我一点高中数学知识都不记得了。于是,我做了任何一位超级妈…

第十四届蓝桥杯嵌入式国赛

一. 前言 本篇博客主要讲述十四届蓝桥杯嵌入式的国赛题目,包括STM32CubeMx的相关配置以及相关功能实现代码以及我在做题过程中所遇到的一些问题和总结收获。如果有兴趣的伙伴还可以去做做其它届的真题,可去 蓝桥云课 上搜索历届真题即可。 二. 题目概述 …

Nordic软件二[蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题][BSP代码模块修改管脚和相关机制]

蓝牙协议栈初始化卡死(时钟源默认外部晶振但是板子是内部RC)问题 本文摘录于:https://blog.csdn.net/chengbaojin/article/details/103778150只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 先参考上面的文章做如下修改: …

网络:TCP协议-报头字段

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 文章目录 前言一、TCP协议格式16位源端口号 和 16位目的端口号4位首部长度16位窗口大小32位序号 和 32位确认序号6种标记位 和 16位紧急指针 总结 前言 本文是我对于TCP协…

集群聊天服务器项目【C++】(六)MySql数据库

前面已经介绍了网络模块和业务模块,本章介绍数据模块,同样保持模块解耦的特性,即业务模块不能出现数据模块内容,如出现SQL语句,接下来看看怎么实现的。 1.环境安装 第一章已经介绍了MySql安装,但注意需要…

ES 索引或索引模板

文章目录 1.索引模板是什么2.索引模板查询3.索引模板中条目数4.索引模板删数据5.尝试刷新索引6.索引模板删数据7.查询索引字段类型8.创建索引模板 提示:以下是本篇文章正文内容,下面案例可供参考 1.索引模板是什么 当需要为同一类索引应用相同的配置、…