参赛队号#1147 B题.docx
《参赛队号#1147 B题.docx》由会员分享,可在线阅读,更多相关《参赛队号#1147 B题.docx(23页珍藏版)》请在冰豆网上搜索。
参赛队号#1147B题
第七届“认证杯”数学中国
数学建模网络挑战赛
承诺书
我们仔细阅读了第七届“认证杯”数学中国数学建模网络挑战赛的竞赛规则。
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们接受相应处理结果。
我们允许数学中国网站()公布论文,以供网友之间学习交流,数学中国网站以非商业目的的论文交流不需要提前取得我们的同意。
我们的参赛队号为:
#1147
参赛队员(签名):
队员1:
赵亚平
队员2:
胡倩倩
队员3:
刘翠萍
参赛队教练员(签名):
刘利斌
参赛队伍组别(中学|专科|本科|研究生):
本科
第七届“认证杯”数学中国
数学建模网络挑战赛
编号专用页
参赛队伍的参赛队号:
(请各个参赛队提前填写好):
#1147
竞赛统一编号(由竞赛组委会送至评委团前编号):
竞赛评阅编号(由竞赛评委团评阅前进行编号):
2014年第七届“认证杯”数学中国
数学建模网络挑战赛第二阶段论文
题目位图放大法的研究
关键词位图,双三次插值,矩阵,像素色彩值
摘要:
为了精致观测局部特征和粗略统观全貌的需要,常常需要对图片进行放大或缩小。
并且,在生活中,我们可以看到各种各样的图像,有时候我们看到某些图像时,有意或者无意的总是希望它可以放大一点让我们更加清晰明了的观察。
例如:
卫星从太空中给我们传送图片的时候,科学家们就是希望图片可以放得越大越好。
但是位图在放大时,图像质量就常会有所下降,容易产生较为明显的模糊或者马赛克等现象,从而破坏了图片的质量和清晰度。
本文就是针对位图的这一缺陷来寻找合适的数学模型,使位图在放大时能够保持较好的图片质量。
基于图像在MATLAB中的像素点的特点和其矩阵形式,我们采用了一种图像插值算法。
图像插值是利用图像像素点之间的相关性,由相邻的已知像素点的信息来估计未知像素的信息,它是一个图像数据的再生过程,由于选取的周围的点的个数决定了图片的清晰度和运算的复杂度,我们选取十六个点,即双三次插值,就是由原图像位置在它附近的十六个点个邻近象素的值通过加权平均计算得出的,这种平均算法具有放锯齿效果,一直以来被应用到矢量图的放大,而位图也可以用此方法。
图像在MATLAB中是以矩阵形式存在的,我们可以将图像像素看成矩形块而非像素点,利用插值图像的矩形像素块由尺寸放大的原始图像的像素所占的百分比,将原始图像做放大变换,从而在最大程度上保留了原始图像的数据。
经过合适的放大比例后,也不至使图像放大后特别模糊,从而变得清晰。
但是目前的双三次插值都只是适用于灰度图片,所以针对彩色图片还需要加以改变和完善。
因为图片变大后像素也会增加,增加的这些点的颜色我们认为也是可以通过周围的像素点的色彩值来取,将像素点的色彩值和双线性插值结合在一起,通过建立数学模型,利用原始的像素点的色彩值经过线性插值后形成新的矩阵,并将新矩阵一图像的方式导出,即为我们所求图片。
参赛队号:
#1147
所选题目:
B题
英文摘要
Fordelicateobservationoflocalcharacteristicsandneedsofroughlyacomprehensiveviewofthewholepicture,oftenneedtozoominoroutofthepicture.And,inlife,wecanseeavarietyofimages,sometimesweseesomeimages,intentionallyorunintentionallyalwayshopethatitcanzoominalittletomakeusmoreclarityofobservation.Forexample:
fromspacesatellitessendpicturestous,whenscientistshopethepicturecanbeenlarged,themorethebetter.Butwhenenlargedbitmapimagequalityisoftendecreased,andsopronetoblurormosaicobviousphenomenon,therebyunderminingthepicturequalityandclarity.Thisarticleisforthisdefectbitmaptofindasuitablemathematicalmodel,sowhenyouenlargeabitmapcanmaintainbetterpicturequality.
BasedonthecharacteristicsoftheimagepixelsinMATLABanditsmatrixform,weadoptedanimageinterpolationalgorithm.Imageinterpolationusingthecorrelationbetweenpixelsintheimage,theinformationoftheadjacentpixelsknowntoestimatetheunknownpixelinformation,whichisimagedataofaregenerationprocess,sincethenumberofpointsaroundtheselecteddecisionthecomplexityofthepictureclarityandoperations,weselectedsixteenpoints,orbi-cubicinterpolation,thatisthepositionoftheoriginalimagesixteenpointsinneighboringpixelvaluescomenearitbycalculatingaweightedaverage,whichkindofaveragealgorithmhasputsawtootheffect,hasbeenenlargedtobeappliedtothevector,andbitmapscanalsousethismethod.ImageinMATLABisamatrixform,wecanbearectangularblockofimagepixelsaspixelsratherthanusingthepercentageofrectangularblocksofpixelsinterpolatedimageismagnifiedbythesizeoftheoriginalimagepixelshare,doenlargetheoriginalimagetransformation,therebypreservingtheoriginalimagedatatothemaximumextent.Afteranappropriatemagnification,theimageisnottomakespecialfuzzyamplified,thusbecomesclear.
However,thecurrentbi-cubicinterpolationareonlysuitableforgrayscaleimages,soforcolorimagesalsoneedtobechangedandimproved.Becomeslargebecausetheimagepixelswillincrease,increasingthecolorofthesepointswecanalsoconsiderthecolorvaluesofthesurroundingpixelstogetthepixelcolorvaluesandbilinearinterpolationtogetherbyamathematicalmodelusingtheoriginalpixelcolorvaluesafterlinearinterpolationtoformanewmatrix,andthenewexportanimagematrixapproach,isthatweaskthepicture.
目录
第一部分:
问题重述………………………………………………………………
(2)
1.1、基本情况…………………………………………………………………………
(2)
1.2、问题提出…………………………………………………………………………
(2)
第二部分:
问题分析………………………………………………………………
(2)
2.1问题背景分析……………………………………………………………………
(2)
2.2问题要求分析……………………………………………………………………
(2)
第三部分:
基本假设……………………………………………………………(3)
第四部分:
名词解释与符号说明………………………………………………(3)
第五部分:
模型建立……………………………………………………………(3)
5.1方法的选取………………………………………………………………………(4)
5.2模型的建立………………………………………………………………………(5)
5.3模型的检验………………………………………………………………………(7)
5.4模型的改进………………………………………………………………………(8)
5.5新模型的建立……………………………………………………………………(8)
5.6新模型的结果……………………………………………………………………(11)
5.7新模型的结果分析………………………………………………………………(12)
第六部分:
模型的评价和推广……………………………………………………(12)
6.1模型的评价………………………………………………………………………(12)
6.2模型的推广………………………………………………………………………(13)
第七部分:
参考文献………………………………………………………………(14)
第八部分:
附录……………………………………………………………………(14)
1
一、问题重述
1.1基本情况
现实生活中看到的、触摸到的都是具体的事物。
我们为了记录和表达这些信息,常常会采用图像的形式去记录这些难忘的瞬间。
但是,有时候为了纪念生活中这些美好的瞬间,我们需要将拍摄的图片放大后装裱起来,为了观察细节需要将图像进行放大,为了做宣传我们需要将一张小小的胶片做成一张长达几十米的海报,生活中我们经常需要用到图片的放大,但是,这时我们就遇到一个新的问题了,位图在放大时,图像质量常会有所下降,如放大时图像出现马赛克现象,缩小时图像出现闪烁现象。
因此,若要获得高质量的缩放图形,我们就需要建立一个合理的数学模型,来设计一个放大位图的算法,使图像在被放大后尽量保持较好的图像质量。
1.2问题的提出
请根据根据我们所提供的位图图形,利用数学建模的方法,解决如下的问题:
(1)将位图导入到matlab的图形窗口里面,如何在图形窗口中把图形放大。
(2)做出了放大后的图形,如何设计算法程序,使得放大后尽量保持较好的图像质量。
(3)做出的改进后的程序仅仅只是局限在这个方面的应用吗?
二、问题分析
2.1问题背景分析
(1)随着新时代的发展,无论是青年人,老人还是小孩都喜欢自拍,当然不一样的手机像素拍出来的照片效果也不一样,想要把低像素的照片放大后也能清晰可见,已经成为很多人的渴望,对于改善图片质量也有很重要的意义。
(2)近年来将图片放大的方法也有很多,但更多的是针对于矢量图和灰度图,即使放大也不会失真。
但是由于位图是像素块构成的,放大后就会模糊,所以在目前也没有很好的解决模型。
2.2问题要求分析
根据题目要求,解决如下问题:
(1)建立数学模型;
(2)放大低分辨率的位图;
2
(3)改进的放大后的位图有较好的图片质量。
三、基本假设
1.图片放大的倍率不超过一定的范围。
2.图片放大后不改变其常和宽的比。
3.图片放大后不改变其色彩的分布。
四、名词解释与符号说明
1.双三次线性插值——一双三次线性插值,又叫做立方插值和立方卷积插值。
立方插值利用待采样点周围16个点的灰度值做三次差值,不仅考虑到4个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响。
它能创造出比双线性插值更平滑的图像边缘
2.像素色彩值——RGB:
色彩三基色,R:
red,G:
green,B:
blue。
对于彩色图像,像素值由红,绿,蓝三个颜色的幅度值表示,即为某一点像素的色彩值。
3.RGB——一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
5、模型建立
针对于问题的整体分析,主要使用软件是MATLAB,首先需要原始图的导入,准备模型之后运用双三次插值和像素色彩值结合建立完整的数学模型将原始图放大且不改变其颜色和色彩分布,形成新的像素矩阵,并导出新的图像。
问题解决的整体流程如图附录5.1所示。
3
附录5.1
5.1模型方法的选取
如果已知如下图5.2所示的16个点的f(Ai),i=1,2,…,16,则可寻找一个双三次多项式P(x,y)满足16个插值条件。
设对应的四个一元插值基为mi(x),i=1,2,3,4,则16个二元差值基可由张量形式生成,具体如下:
n1=(x,y)=m1(x)m1(y)
n2=(x,y)=m2(x)m1(y)
n3=(x,y)=m2(x)m2(y)
n4=(x,y)=m1(x)m1(y)
n5=(x,y)=m2(x)m1(y)
n6=(x,y)=m4(x)m1(y)
n7=(x,y)=m2(x)m3(y)
n8=(x,y)=m2(x)m4(y)
4
n9=(x,y)=m4(x)m2(y)
n10=(x,y)=m3(x)m2(y)
n11=(x,y)=m1(x)m4(y)
n12=(x,y)=m1(x)m3(y)
n13=(x,y)=m3(x)m3(y)
n14=(x,y)=m4(x)m3(y)
n15=(x,y)=m4(x)m4(y)
n16=(x,y)=m3(x)m4(y)
故:
P(x,y)=∑ni(x,y)f(Ai)[i=1,2,3,…,16]
在相邻块上的双三次多项式,由于在四个点上有共同值,故是连续的。
A11
A16
A15A8
A12
A13
A14A7
A(-1,1)A10A9A3(1,1)
A2(-1,-1)
A1(-1,-1)A5(-1/3,1)A6(1/3,-1)
附录图5.2
5.2模型的建立
接下来本论文就是根据上面的双三次线性插值的算法,对下图附录5.3进行处理
5
matlab软件运行处理。
附录5.3
对此,本轮文将此算法转换成MATLAB程序如下:
ff=imread(‘存取路径\文件格式’); %读取图像到ff
k=3; %设置放大倍数
[m,n,color]=size(ff);
f=zeros(m,n); %将彩色图像ff转换为黑白图像f
for i=1:
m
for j=1:
n
f(i,j)=ff(i,j);
end
end
a=f(1,:
);c=f(m,:
); %将待插值图像矩阵前后各扩展两行两列,共扩展四行四列
b=[f(1,1),f(1,1),f(:
1)',f(m,1),f(m,1)];
d=[f(1,n),f(1,n),f(:
n)',f(m,n),f(m,n)];
a1=[a;a;f;c;c];
a1';
b1=[b;b;a1';d;d];
f=b1';
f1=double(f);
for i=1:
k*m %利用双三次插值公式对新图象所有像素赋值
u=rem(i,k)/k;
i1=floor(i/k)+2;
A=[sw(1+u), sw(u), sw(1-u), sw(2-u)];
for j=1:
k*n
v=rem(j,k)/k;j1=floor(j/k)+2;
6
C=[sw(1+v);sw(v);sw(1-v);sw(2-v)];
B=[f1(i1-1,j1-1) f1(i1-1,j1) f1(i1-1,j1+1) f1(i1-1,j1+2)
f1(i1,j1-1) f1(i1,j1) f1(i1,j1+1) f1(i1,j1+2)
f1(i1,j1-1) f1(i1+1,j1) f1(i1+1,j1+1) f1(i1+1,j1+2)
f1(i1+2,j1-1) f1(i1+2,j1) f1(i1+2,j1+1) f1(i1+2,j1+2)];
g1(i,j)=(A*B*C);
end
end
g=uint8(g1); %将矩阵转换成8位无符号整数
imshow(g);
以上程序取自于(取自于
5.3模型的检验——色彩分析
由上述的模型运行的结果(如图附录5.4)中可得到,它把彩色的原始图变成了灰度图,而且也没有达到放大的这一效果,显然,这样的结果并未达到本论文此次写作的目标状态,
虽然使用双三次插值方法所得到的图像保持了较好的质量,它通过把位图的像素点进行插值,进而达到放大图片的效果。
但是,由所得到的图像可以看出,放大的图像失去了原图的色彩,由我们所掌握的知识中,我们了解到传统的彩色图像的双三次线性插值没有考虑清楚到彩色图像的几个分量之间的内在有机联系,容易造成不协调的色彩。
即,程序中没有对位图的色彩像素点加进行插值。
因此,我们需要对模型进行改进,将图像的色彩像素点融入利用双三次插值方法的程序中,从而得到一个放大的具有与原图像相同色彩的图像
图5.4灰度图
7
经运行结果和对程序分析,我们发现双线性插值一般针对的是灰度图,传统的双线性插值算法会对彩色图像的每个分量当作灰度分量进行双线性插值,然后合成插值后的各个分量形成新的的图像,这种处理方法没有考虑到彩色图像各颜色分量之间的内在有机联系,才会出现灰度图的情况。
显然,这样的结果并未达到我们所想要的目标状态,所以我们还需要对这个算法进行进一步的完善,使得我们经过MATLAB进行运算过后得出来的结果是一个彩色的图像,而不是一个灰度图。
5.4模型的改进:
由初始模型显示的结果来看,我们在进行图像的插值运算进行改进时,需要考虑图像的色彩问题。
在图片放大的时候,需要考虑将增加的点也要附上图像本身区域的颜色,所以要对增加的这些点的颜色进行合理的预测。
通过像素点插值的原理,我们认为经放大增加的这些像素点的颜色也是可以通过周围的像素点的色彩值进行相应的插值来取到,利用像素点的色彩值和双三次插值结合在一起的方法。
因为所有的图片的颜色都是由红绿蓝这三种颜色经过不同的比例的混合从而生成其它更多的颜色,通过采用这种编码方法,每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。
记录及显示彩色图像时,RGB是最常见的一种方案。
在上述的模型中,我们利用RGB,将其三个通道分离,分别进行三次插值,最后形成一个新的矩阵,并将新矩阵以图像的方式导出,即为我们所需图像。
5.5新模型的建立
改进后的程序如下:
(源程序在附录一中)
Clc
clear;
RGB=imread(‘存取路径\文件格式’);%读取图像到RGB
R=RGB(:
:
1);%提取彩色图像的红色分量
G=RGB(:
:
2);%提取彩色图像的绿色分量
B=RGB(:
:
3);%提取彩色图像的蓝色分量
[m,n,color]=size(RGB);
k=3;设置放大倍数
fori=1:
m
forj=1:
n
f(i,j)=RGB(i,j);
end
end
r1=R(1,:
);%将待插值图像矩阵的R通道前后各扩展两行两列,共扩展四行四列
r2=R(m,:
);
r3=[R(1,1),R(1,1),R(:
1)',R(m,1),R(m,1)];
r4=[R(1,n),R(1,n),R(:
n)',R(m,n),R(m,n)];
8
r5=[r1;r1;R;r2;r2];
r5';
r6=[r3;r3;r5';r4;r4];
R=r6';
R1=double(R);
g1=G(1,:
);%将待插值图像矩阵的G通道前后各扩展两行两列,共扩展四行四列
g2=G(m,:
);
g3=[G(1,1),G(1,1),G(:
1)',G(m,1),G(m,1)];
g4=[G(1,n),G(1,n),G(:
n)',G(m,n),G(m,n)];
g5=[g1;g1;G;g2;g2];
g5';
g6=[g3;g3;g5';g4;g4];
G=g6';
G1=double(G);
b1=B(1,:
);%将待插值图像矩阵的B通道前后各扩展两行两列,共扩展四行四列
b2=B(m,:
);
b3=[B(1,1),B(1,1),B(:
1)',B(m,1),B(m,1)];
b4=[B(1,n),B(1,n),B(:
n)',B(m,n),B(m,n)];
b5=[b1;b1;B;b2;b2];
b5';
b6=[b3;b3;b5';b4;b4];
B=b6';
B1=double(B);
a=f(1,:
);%将待插值图像矩阵前后各扩展两行两列,共扩展四