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

程序代码:

bash 复制代码
图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名片即可
相关推荐
数模竞赛Paid answer14 小时前
2026年五一杯数学建模A题煤矿巷道支护问题求解全过程文档及程序
数学建模·数据分析·五一杯
数模竞赛Paid answer17 小时前
2026年五一杯数学建模C题边坡预警问题求解全过程文档及程序
算法·数学建模·五一杯
数模竞赛Paid answer19 小时前
2021年深圳杯数学建模A题火星探测器着陆控制方案解题全过程论文及程序
算法·数学建模·深圳杯
smppbzyc1 天前
2026华数杯数学建模A题原创论文分享
数学建模·数学建模竞赛·华数杯·全国大学生数学建模竞赛·华数杯数学建模·2026华数杯
数模竞赛Paid answer1 天前
2024年五一杯数学建模A题钢板最优切割路径问题求解全过程论文及程序
数学建模·数据分析·五一杯
茜茜数模1 天前
2026华数杯A题完整思路+论文+代码:微构体中填充导电介质的仿真优化
数学建模·华数杯
数模竞赛Paid answer2 天前
2019年深圳杯数学建模D题电视广告分户推送与营运规划解题全过程文档及程序
算法·数学建模·数据分析·深圳杯
热心网友俣先生3 天前
2026年华数杯赛题浅析-助攻快速选题
数学建模
数模竞赛Paid answer3 天前
2019年深圳杯数学建模A题深圳居民健康水平评估与测控模型研究解题全过程文档及程序
数学建模·数据分析·深圳杯数学建模挑战赛
一只小小的土拨鼠3 天前
2026 华数杯备考与决胜攻略:基于“数据清洗-特征归因-混合算法-多目标优化”的电动汽车营销精准决策全流程方案
数学建模