当前位置: 首页 > article >正文

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

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.kler.cn/a/315790.html

相关文章:

  • 论文解析:边缘计算网络中资源共享的分布式协议(2区)
  • golang如何实现sse
  • 除了 Mock.js,前端还有更方便的 Mock 数据工具吗?
  • 如何在算家云搭建Peach-9B-8k-Roleplay(文本生成)
  • Scala入门基础(17.1)Set集习题
  • 图像处理实验二(Image Understanding and Basic Processing)
  • Java内存泄漏排查
  • uniapp小程序持续获取用户位置信息,后台位置获取
  • 9.22学习记录
  • 如何在 UniApp 中实现地图的视野自适应?
  • STM32系统时钟
  • 如何创建标准操作规程(SOP)[+模板]
  • 移动技术开发:简单计算器界面
  • en造数据结构与算法C# 用Unity实现简单的群组行为算法 之 聚集
  • 数据库 | 索引
  • 记K8s组件harbor和kuboard故障恢复
  • 桶排序和计数排序(非比较排序算法)
  • QT实现升级进度条页面
  • 计算机毕业设计之:基于深度学习的路面检测系统(源码+部署文档+讲解)
  • frpc内网穿透
  • Card View 卡片视图
  • 软媒市场新探索:软文媒体自助发布,开启自助发稿新篇章
  • 算法练习题24——leetcode3296移山所需的最小秒数(二分模拟)
  • Mysql删库跑路,如何恢复数据?
  • HDFS性能优化高频面试题及答案
  • AWS 将 OpenSearch 纳入 Linux 基金会旗下