




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-2"\h\u32060第一章研究背景及意义 34508第二章Android系统相关知识介绍 4169322.1Android系统的诞生与发展 45822.2Android系统框架 4155182.3Android优缺点 634682.4Android编译环境搭建 72644第三章算法解析 9140733.1算法理论介绍 9130563.2算法java实现 1014393第四章仿真实验及分析 12325324.1程序演示及分析 1280964.2重难点及解决方案 15134614.3关键代码 1720505第五章总结与收获 2029651参考文献 2221885附录 23基于安卓平台的图像引导滤波算法的实现研究背景及意义在计算机视觉和计算机图形学中大多数程序都牵涉到通过图像滤波来降低噪音或者提取有用的图像结构来对图片进行相应优化的思想。一些简单的线性平滑滤波算法如高斯滤波器,拉普拉斯算子过滤器,索贝尔过滤器广泛的应用于图像模糊,图像锐化,边缘检测和特征提取等方面。但是线性平滑滤波过滤器的滤波核是固定不变,独立于任何图像内容。但在许多情况下,我们可能希望在过滤过程中将给定的引导图像额外的信息体现出来。第一种解决方案就是通过考虑引导图像优化算法所执行的二次方程,这种解决方案是通过处理以引导图像信息编码的大型稀疏矩阵,这些非齐次的矩阵隐含了变动的滤波核。这种处理方法广泛的应用在许多应用比如;着色,抠图,多次度分解和图片消雾中。另外的一种方法通过引导图像生成滤波核。比如双边滤波器可以实现平滑滤波的同时还能具有良好的边缘保持性能,但是会产生一些额外的梯度逆转伪影。而由微软亚洲研究院何恺明博士提出的一种图像引导滤波算法[[]引自kaiminghe,JianSun,xiaoou,Tang《guideimagefilter》2]。这种算法本质上是引导图像的线性转换。该算法能够像双边滤波算法一样较好的实现平滑滤波还能具有良好的边缘保持性能,而且不产生梯度逆转伪影。而且他也和拉普拉斯矩阵相关,也是在平滑滤波方法中可被接受的一种理念,图像引导滤波算法计算与滤波核的大小无关。此外,引导滤波器对于灰阶图和彩色图都有精确地算法,在大量的应用中实验证明图像引导滤波算法在效果和效率上有很不错的表现。[]引自kaiminghe,JianSun,xiaoou,Tang《guideimagefilter》2随着android手机的普及,各式各样的应用层出不穷,但是在手机图像方面人们往往希望在手机屏幕中显示更为绚丽清晰的图像。但是目前很多高像素手机拍摄出来的照片因为相机硬件问题,光照,抖动等各种因素照成不如人意的图片。如果能够在手机上直接对刚生成的图片进行相应的处理和优化那无疑是对手机拍照功能的一大补充。针对这一情况,本次课题的目的是在Android手机平台上使用图像引导滤波算法实现对图像的优化及处理。Android系统相关知识介绍2.1Android系统的诞生与发展2003年10月,有“Android之父”之称的AndyRubin在美国加利福尼亚州帕洛阿尔托创建了Android科技公司.2005年8月17日,Google收购了Android科技公司,Android科技公司成为Google旗下的一部分。之后,鲁宾着手负责开发基于Linux内核的移动操作系统即后来的Android操作系统。2007年11月5日,在Google的领导下,手持设备联盟(OpenHandsetAlliance)成立,第一批成员包括Broadcom公司、HTC、Intel、LG、Marvell等公司。开放手持设备联盟的创建目的是为了创建一个更加开放自由的移动电话环境。也在同一日,手持设备联盟联盟对外展示了他们的第一个产品:一部搭载了以Linux2.6为内核基础的Android操作系统的智能手机。后来新一批成员陆续加入联盟,同时,一个负责持续发展Android操作系统的开源代码项目成立了AOSP(AndroidOpenSourceProject)。除了开放手持设备联盟之外,Android还拥有全球各地开发者组成的开源社区来专门负责开发Android应用程序和第三方Android操作系统来延长和扩展Android的功能和性能。[[],24.5.2013[],24.5.20132.2Android系统框架如图2-1所示Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。图2-1Android系统的应用层主要是开发人员使用JAVA语言进行开发的一些具有特定功能的应用,如照相机,浏览器,短信发送程序以及一些小游戏等应用。Android系统的应用框架层是开发人员从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用应用框架层所提供的组件来进行应用程序开发,也可以通过重写而实现个性化的拓展。Android系统的系统运行库层可以分成两部分,分别是系统库和Android运行时库。其中系统库中主要的库有[[]/,24.5.2013[]/,24.5.2013MediaFramework:多媒体库,基于PacketVideoOpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。SQLite:小型的关系型数据库引擎。OpenGL|ES:根据OpenGLES1.0API标准实现的3D绘图函数库。FreeType:提供点阵字与向量字的描绘与显示。WebKit:一套网页浏览器的软件引擎。SGL:底层的2D图形渲染引擎。Libc:从BSD继承来的标准C系统函数库,专门为基于embeddedlinux的设备定制。Android应用程序时库采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分:核心库:提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、、android.media等等。Dalvik虚拟机:Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化以及支持多个虚拟机的特点。Android系统的内核层是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。2.3Android优缺点优点一:开放性Google公司将Android系统的源代码对外开放意味着允许任何移动终端厂商加入到Android联盟中来。因为Android的开源,专业人士可以利用开放的源代码来进行二次开发,打造出个性化的Android。例如中国的MIUI就是基于Android2.3原生系统深度开发的Android系统,其与原生系统相比有了较大的改动。而且开放性可以缩短开发周期,降低开发成本。如此一来跟有利于Android的发展[[]李芙蓉.当前智能手机操作系统及其比较分析[J].信息技术,2008优点二:用户自由度更高Android操作系统给予了用户跟高的自由度,熟悉Android的都清楚:用户可以根据自己的喜好来设置手机界面,Android的应用市场甚至上还有各式各样的启动器来供用户自己选择,让自己的手机与众不同。例如,用户要是喜欢HTC的操作界面,便马上可以在应用市场上找到,甚至还能模仿IOS的界面。相比于IOS操作系统,Iphone手机只有一成不变的手机界面,不能对其进行更改。优点三:大量Android应用程序正是因为Android平台的开放性,吸引了大量的开发人员进行应用程序开发。从而使android应用程序数量快速上升。截止去年10月30日,Android应用首次超过ios应用达到71.3万.缺点一:安全问题由于Android系统的开源以及快速的发展以及审核机制的不完善导致Android市场上出现了一些恶意软件。2009年11月10日Android平台出现第一个恶意间谍软件:Mobile
Spy。2010年8月12日,出现了第一个木马病毒:Trojan-SMS.AndroidOS.FakePlayer.a[杨丰盛Android
应用开发揭秘[M].北京:机械工业出版社,2010杨丰盛Android
应用开发揭秘[M].北京:机械工业出版社,2010缺点二:用户体验不一因为Android系统的流畅运行需要硬件支持。而手机厂商对于Android的定制多种多样,导致了一些高配置手机上Android的运行流畅度良好,而低配置手机运行缓慢。缺点三:程序平均质量不高随着Android系统的开源,越来越多的手机厂商在智能手机上使用Android手机,Android手机应用开发者也越来越多,Android应用程序的数量也在快速上升。但是Android程序开发者的开发水平难免良莠不齐。在高端应用上,相较于苹果应用,Android应用程序因为其自身多为免费程序,许多应用功能强大Android应用程序的为了商业用途难免在应用程序中夹杂许多推送广告,引起人们的反感。2.4Android编译环境搭建2.4.1JDK安装与配置 在网页/down/html/43205.html中下载相应版本的JDK安装文件,解压之后按照提示进行安装。新版本的JDK在安装过程中将自置JDK环境变量,安装后打开cmd窗口,在命令行中输入java(此处有空格)-version查看JDK版本信息,若显示版本信息则说明安装成功,若显示错误,请先确认环境变量是否设置。以Windows7系统为例,假设JDK安装路径在C:\ProgramFiles\Java\jdk1.6.0_31,进入计算机—>高级系统设置—>环境变量—>系统变量中90点击新建,在变量名中输入classpath,变量值为C:\ProgramFiles\Java\jdk1.6.0_31\lib\dt.jar;C:\ProgramFiles\Java\jdk1.6.0_31\lib\tools.jar;2.点击新建,在变量名中输入JAVA_HOME,变量值为C:\ProgramFiles\Java\jdk1.6.0_313.找到path选项,在变量值后面添加C:\ProgramFiles\Java\jdk1.6.0_31\bin记得用“;”和前面隔开。配置完成后再输入java-version进行测试。2.4.2eclipse安装与配置进入/downloads/download.php?file=/technology/epp/downloads/release/juno/SR2/eclipse-java-juno-SR2-win32.zip网页中并下载eclipse进行解压,解压后可直接使用,进入eclipse主界面在主界面上方点击help->InstallNewSoftware,点击add在name中随意输入名字,location中输入/android/eclipse,确定返回后选中developtools下载并安装相应组件。2.4.3SDK在网上搜索并下载SDK,将其解压后的文件所在目录配置到菜单window->preferences->android->SDKlocation.,因为SDK可能存在过时,要进行文件更新才能正常使用。点击eclipse界面的androidSDKManager,为了方便选择,将显示的所有安装文件选中并开始下载安装。2.4.4创建AVD因为android系统是建立在Linux操作系统基础上。所以编写好的android程序不能直接在windows系统下运行。因此我们需要搭建一个模拟的平台来测试安卓程序的运行。在eclipse主界面选中androidvirtualdevicemanager,在显示的界面中点击new设置主要参数。主要包括AVD的name,device,target(虚拟机的版本)。其他参数当有需要时可以自行设定。至此关于android开发的平台搭建完毕。算法解析3.1算法理论介绍在图像引导滤波算法中,首先明确一个概念,输出图像Q是输入图像P和引导图像I进行线性变换的结果。输入图像P和引导图像I都是已知量,而且两者可以完全相同。输入图像P的像素点i的值在经过处理之后生成一个加权平均数并成为输出图像Q的像素点i;公式SEQ公式\*ARABIC1在本函数中,i和j都代表像素的索引,滤波核Wij是输入图像I的函数并且与P无关。但是滤波器是与P线性相关的。我们假设q是I在以像素K为中心的小窗口WK上进行线性变换的结果。则有以下函数公式SEQ公式\*ARABIC2其中(ak,bk)是在窗口Wk中恒定不变的线性参数。我们使用一个半径为R的正方形窗口。这个线性模型确保仅当引导图像I有边缘时q才有边缘。因为:∇q=a∇I。这个模型已经在多个应用中证明是可行的比如,抠图,图像超分辨率,和清除迷雾。为了确定这些线性参数,我们寻找一种解决方案来最小化输出图像q和输入图像p之间的差别。尤其的,我们列出下面的函数 公式SEQ公式\*ARABIC3在本函数中,ε是一个不变的参数用来防止ak的值过大,本函数通过计算得到答案 公式SEQ公式\*ARABIC4 公式SEQ公式\*ARABIC5在上述函数中,是引导图像I在窗口WK中的平均值,是引导图像I在窗口WK的方差,是在窗口WK里面的像素数目,是p在窗口WK的平均值。下面,我们将线性模型应用于整个图片中的局部窗口,然而像素I可能包含在许多WK中,所以在函数1中的值在不同窗口计算出来的值不相同。一个简单的方法就是计算出所有qi可能值的平均数。所以当计算出图片中每个模块的(ak.bk),我们计算输出滤波器 公式SEQ公式\*ARABIC6 公式7 公式8至此输出图像q的像素点i的值生成。循环重复计算每个像素点,从像素点扩散到全图,就生成了输出图像q[[]引自kaiminghe,JianSun,xiaoou,Tang《guideimagefilter》4][]引自kaiminghe,JianSun,xiaoou,Tang《guideimagefilter》43.2算法java实现众所周知图像格式多种多样,在本程序中,我们仅为了研究算法,不对图片格式进行细化分析。暂时对以bmp为代表的彩色24位图片进行处理。此类图片的存储方式可看为一个三维数组,其中变量i和j代表图片的像素的索引,当i,j确定时即可确定一个像素点k,k的值包括透明度alpha,红色值R,绿色值G蓝色值B,其中alpha,R,G,B都为0到255的整数,为了方便算法的实现,我们单独讲所有的R值,G值,B值取出来形成三个新的灰阶二维数组分别进行处理。[[]引自wilhelmBurgerMarkJ.Burge《数字图像处理java语言算法描述》清华大学出版社首先打开程序,点击按钮并浏览选择要优化的图片I。程序中为了方便,将输入图像I与引导图像P设为同一张图的,既将输入图像I的值赋给引导图像P。然后设定小窗口半径r为16(此处可发散开来让用户自己选择喜欢的半径,但不宜过大,)以及定义一个浮点型小数并赋值,该小数作用等同于上文公式中的ε。首先将图片I,P中的数据提取成4个二维数组分别表示alpha值的数组,R值的数组,G值的数组,B值的数组,注意因为alpha值不参与运算,因此提取后不作处理。下面以R值的二维数组运算过程来表现算法。首先定义方法boxfilter该方法输入参数为一个浮点型二维数组a和一个整型r,返回值是一个浮点型的二维数组。方法实现的功能是计算一个二维数组a在半径为r的小窗口的所有值之和sum,随着小窗口的移动,sum的值也不断发生变化,生成一个新的二维数组[[][]引自/,24.5.2013float[][]N=newBoxfilter().boxfilter(p,r);//此时,数组N即函数4中|W|表示该窗口所有像素个数之和float[][]mean_I=newOperation().Division(newBoxfilter().boxfilter(a,r),N);//获得二维数组I在以r为半径大小的小窗口中的像素值平均数float[][]mean_p=newOperation().Division(newBoxfilter().boxfilter(b,r),N);//获得二维数组I在以r为半径大小的小窗口中的像素值平均数float[][]mean_Ip=newOperation().Division(newBoxfilter().boxfilter(newOperation().multiplication(a,b),r),N);float[][]cov_Ip=newOperation().subtraction(mean_Ip,newOperation().multiplication(mean_I,mean_p));//获得二维数组I与P的协方差float[][]mean_II=newOperation().Division(newBoxfilter().boxfilter(newOperation().multiplication(a,a),r),N);float[][]var_I=newOperation().subtraction(mean_II,newOperation().multiplication(mean_I,mean_I));//获得二维数组I在以r为半径大小的小窗口中的像素值方差float[][]A=newOperation().Division(cov_Ip,newOperation().add(var_I,eps));float[][]B=newOperation().subtraction(mean_p,newOperation().multiplication(A,mean_I));//获取所有小窗口的值(a,b)所构成的二维数组A,Bfloat[][]mean_b=newOperation().Division(newBoxfilter().boxfilter(B,r),N);float[][]q=newOperation().add_a(newOperation().multiplication(mean_a,a),mean_b);//生成输出图像q其中Boxfilter(double[][]I,r)方法实现效果是计算输入的参数二维矩阵I在以输入参数r为半径的小窗口中的所有值之和。Operation()是定义的操作类,Division是定义的操作方法,表示行列相等的两个数组之间相应位置的值相除,a和b在这里分别表示传入方法的输入图像的R值二维数组与引导图像R值二维数组。实际上,在此处存在一下关系:float[][]mean_p=mean_I;将以上代码分别与论文中参数对应起来就有:mean_I对应,表示图像I在窗口Wk里的平均值。mean_p对应表示图像p在窗口Wk里的平均值。Cov_IP对应,表示图像I与图像P的协方差。var_I对应,表示I在窗口Wk里的方差。A对应ak,B对应bk,q对应函数中的qi;至此,图像引导滤波算法基本完成。仿真实验及分析4.1程序演示及分析在手机上启动照相机现场拍摄一张图片。启动编写好的Myguidefilter应用。选择刚才拍摄的图片并显示在手机屏幕上拖动滑动条,根据滑动条的移动手机屏幕将显示不同效果的照片。算法结构图如下:赋值赋值转换转换P_R,P_G,P_B三个二维数组输入图像I引导图像P三维矩阵三维矩阵I_R,I_G,I_B三个二维数组分别使用图像引导滤波算法运算输出生成图像q转换转换图3-1下面四幅图是滑动条在滑动过程中生成的结果展示图。图像增强核心计算公式是: I_enhanced=(I-q)*progress+q;公式9其中I_hancement是结果图片,I是输入图片,q是通过图像引导滤波算法生成图片,progress是滑动条滑动中产生的值。很明显有以下结论:当progress=1时,I_enhanced=I,输出图像为原图。如图3-2;当progress=0时,I_enhanced=q;输出图像为图像引导滤波输出图像。如图3-3;经多次测试,当progress=5,输出图像为增强图像。如图3-4,此时给人的视觉效果最好。若progress取值过大progress=10,输出图像为增强图像如图3-5,图像视觉效果反而降低。图3-2 图3-3图3-4 图3-54.2重难点及解决方案在安卓上实现图像引导滤波算法中遇到了各种各样的问题,通过网上搜索解决方案和咨询同学解决了大部分,现在我将我在实现过程中所遇到的比较突出的重点难点展示出来:重难点一:如何将图像信息转换为数组并进行处理。解决方案:android开发环境中删除了java开发包中关于AWT的组件的许多功能。因此不能使用原有java开发包中提供的getred()等方法,但是android同时提供了更符合android环境的开发工具包。可调用android.graphics.Color包中Getpixel(j,i)[[][]引自android图片处理总结24.5.2013重难点二:boxfilter()的功能实现解决方案:boxfilter()实现的功能是输入参数二维像素矩阵a[][],以及小窗口半径r,计算出二维矩阵在以像素点k为中心以r为半径的小窗口中的所有值之和。在实现该功能的时候首先要确定一点,随着小窗口的k的变动,小窗口所包括的像素点值之和是在不断变化的,而且当像素点k接近二维像素矩阵所构成的边缘时,小窗口的半径也会发生变化,保持小窗口不会超出像素矩阵所构成的窗口中。所以常规的做法是在四重嵌套for循环中分条件计算出最后值,也在网络上查询了相关信息,尝试过使用积分图[[][]Franklin,Crow.Summed-AreaTablesforTextureMapping.ComputerSciencesLaboratory:XeroxPaloAltoResearch重难点三:用算法处理之后的矩阵转换为图片。解决方案:和重难点一类似,android中都提供了类似的方法可供开发人员调用,查询相应的API可以获得方法细节。但是实际处理是存在一个问题,经过算法计算出来的像素值存在为负或大于1的情况。而android开放的API中只有使用范围是0-255的整形值才能反向生成某一具体像素点的color值,通过每个像素乘以255然后强制转换成整形,并将大于255的值全部设为255,小于0的像素值全部设为0,这样在存在误差的情况下总体上保证了程序功能的实现。重难点四:内存不足,数组计算耗时较久解决方案:当程序大致完成主要功能之后运行时发现因为图片过大,同时一些必要的数组计算产生的中间变量及结果变量浪费大量内存,而java自身的内存回收机制详细介绍Java的内存管理与内存泄露详细介绍Java的内存管理与内存泄露4.3关键代码4.3.1读取图像及压缩显示buttonLoadImage.setOnClickListener(newView.OnClickListener(){ publicvoidonClick(Viewarg0){ Intenti=newIntent(Intent.ACTION_PICK,vider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(i,RESULT_LOAD_IMAGE); }}); //添加监听器,当点击按钮时触发protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){//相应事件 super.onActivityResult(requestCode,resultCode,data); if(requestCode==RESULT_LOAD_IMAGE&&resultCode==RESULT_OK&&null!=data){ UriselectedImage=data.getData(); String[]filePathColumn={MediaStore.Images.Media.DATA};Cursorcursor=getContentResolver().query(selectedImage,filePathColumn,null,null,null);//获取图像文件目录 cursor.moveToFirst(); intcolumnIndex=cursor.getColumnIndex(filePathColumn[0]); Stringimgpath=cursor.getString(columnIndex); cursor.close();} //获取图片在SD卡中路径imgpath Intentintent=newIntent(Loadimg.this,MainActivity.class); intent.putExtra("path",imgpath); startActivity(intent);//将图像路径值从Loadimg这个Activity传到MainActivity。 Bundleextras=getIntent().getExtras(); Stringpath=extras.getString("path");//接受图像路径path值BitmapFactory.Optionsoptions=newBitmapFactory.Options(); options.inJustDecodeBounds=false; options.inSampleSize=8;//width,hight设为原来的四分之一 bm=BitmapFactory.decodeFile(path,options);//显示压缩图片4.3.2读取bitmap图片的值并分别赋值给三个二维数组 for(inti=0;i<height;i++){ for(intj=0;j<width;j++){ intcolor=bm.getPixel(j,i); a[i*width+j]=Color.red(color)/255.0; b[i*width+j]=Color.green(color)/255.0; c[i*width+j]=Color.blue(color)/255.0; }} 4.3.3算法的实现代码float[][]N=newBoxfilter().boxfilter(p,r);此时,数组N即函数4中|W|表示该窗口所有像素个数之和float[][]mean_I=newOperation().Division(newBoxfilter().boxfilter(a,r),N);//获得二维数组I在以r为半径大小的小窗口中的像素值平均数float[][]mean_p=newOperation().Division(newBoxfilter().boxfilter(b,r),N);//获得二维数组I在以r为半径大小的小窗口中的像素值平均数float[][]mean_Ip=newOperation().Division(newBoxfilter().boxfilter(newOperation().multiplication(a,b),r),N);float[][]cov_Ip=newOperation().subtraction(mean_Ip,newOperation().multiplication(mean_I,mean_p));//获得二维数组I与P的协方差float[][]mean_II=newOperation().Division(newBoxfilter().boxfilter(newOperation().multiplication(a,a),r),N);float[][]var_I=newOperation().subtraction(mean_II,newOperation().multiplication(mean_I,mean_I));//获得二维数组I在以r为半径大小的小窗口中的像素值方差float[][]A=newOperation().Division(cov_Ip,newOperation().add(var_I,eps));float[][]B=newOperation().subtraction(mean_p,newOperation().multiplication(A,mean_I));//获取所有小窗口的值(a,b)所构成的二维数组A,Bfloat[][]mean_b=newOperation().Division(newBoxfilter().boxfilter(B,r),N);float[][]q=newOperation().add_a(newOperation().multiplication(mean_a,a),mean_b);//生成输出图像q将输出三维矩阵转换为图像for(i=0;i<height;i++){ for(j=0;j<width;j++){ newR=(int)(a[i][j][0]*255); newG=(int)(a[i][j][1]*255); newB=(int)(a[i][j][2]*255); newR=Math.min(255,Math.max(0,newR)); newG=Math.min(255,Math.max(0,newG)); newB=Math.min(255,Math.max(0,newB)); intcolor=newColor().rgb(newR,newG,newB); pixels[i*width+j]=color; newR=0; newG=0; newB=0; } }Bitmapbitmap=Bitmap.createBitmap(pixels,width,height,Bitmap.Config.RGB_565);总结与收获本论文对图像引导滤波算法的实现完成了开始定下的目标,能够实时读取手机上的图片文件并通过对滑动条的操作实现图片的优化,在优化过程中采用了图像引导滤波算法实现了对图片的优化。但是在程序中也存在了一些问题还没解决或者还可以进行深度研究。尤其是关于数组运算与android程序内存节约问题任然可以进行相应改良优化。在本对图像引导滤波算法的学习与android程序的编写过程中,通过自己网上搜寻所遇到问题的解决方案,我获益匪浅。首先,在对图像引导滤波算法的学习过程中,我了解到关于滤波器的定义以及相关的种类,算法。也参考过其他的关于图像锐化,模糊,浮雕效果,怀旧,底片效果的资料并了解大致算法。其次在学习算法的过程中,为了了解算法中每个参数,每个公式的含义,通过在网上收索得到公式的数学变换方式发现所有理论知识的堆积只是为了计算出一个看似简单的数学协方差公式。第一次领悟到数学微积分在计算机领域的作用。其次,为了编写这个android程序,我第一次以开发者身份初步的接触android系统而非使用者,在开发不断地遇到问题与解决问题的过程中学到了android开发的一些基础性知识,为将来android的深一步学习打下了基础。致谢在论文即将交付之际,我要感谢所有曾经在学习上和生活中给予过我帮助的老师和同学们。尤其要感谢我的指导老师吕凤齐吕老师,吕老师不仅给予我项目的题目,更是为我明确了项目研究的大方向。吕凤齐老师不仅从单纯的技术方法上对我进行指导,同时也鼓励我通过自己的方式在网上和书籍中获得相应的答案。在获取问题答案的过程中我学到的远比在论文中体现的还要多得多。吕凤齐老师那严谨的治学态度及一丝不荀的工作精神时刻鞭策和激励着我勤奋踏实地学习和研究。我为能成为吕凤齐老师的弟子而感到荣幸。同时也要学校及学员领导表示谢意,学校及学员领导对我们毕业设计比较重视,给我们安排好了毕业论文的时间规划,让我们不至于面对毕业设计手足无措。同时每个项目都安排了项目指导老师为我们解决项目中遇到的问题,给与我们很大帮助。衷心感谢各位专家百忙之中对本文的审阅和赐教!参考文献[1]kaiminghe,JianSun,xiaoou,Tang《guideimagefilter》[E]/en-us/um/people/kahe/publications/eccv10guidedfilter.pdfIEEETransactionsonPatternAnalysisandMachineIntelligence(TPAMI),2012[2]李芙蓉.当前智能手机操作系统及其比较分析[J].信息技术,2008[3]杨丰盛.Android
应用开发揭秘[M].北京:机械工业出版社,2010[4]极限优化:Haar特征的另一种的快速计算方法—boxfilter,/easymind223/archive/2012/11/13/2768680.html,2013.4.22[5]WilhelmBurgerMarkJ.Burge著,黄华等译,《数字图像处理java语言算法描述》[M],清华大学出版社2010年2月[6]耿祥义,张跃平编著,《JAVA2实用教程》[M],清华大学出版社,2006年8月[7]Franklin,Crow.Summed-AreaTablesforTextureMapping.ComputerSciencesLaboratory:XeroxPaloAlto[8]方帅,杨静荣,曹洋,武鹏飞,饶瑞中。图像引导滤波的局部多尺度Retinex算法[J]。中国图象图形学报。2012,17(7)748-755.附录在计算机视觉和计算机图形学中大多数程序都牵涉到通过图像滤波来降低噪音或者提取有用的图像结构来对图片进行相应优化的思想。一些简单的线性平滑滤波算法如高斯滤波器,拉普拉斯算子过滤器,索贝尔过滤器广泛的应用于图像模糊,图像锐化,边缘检测和特征提取等方面。线性平滑滤波算法还包括解决泊松方程的过程,比如在高动态光照渲染,图片拼接,抠图这些过滤内核是隐式地定义为一个同质的逆拉普拉斯算子的矩阵的操作上。线性平滑滤波过滤器的滤波核是固定不变,独立于任何图像内容。但在许多情况下,我们可能希望在过滤过程中将给定的引导图像额外的信息体现出来。第一种解决方案就是通过考虑引导图像优化算法所执行的二次方程,这种解决方案是通过处理以引导图像信息编码的大型稀疏矩阵。这些非齐次的矩阵隐含了变动的滤波核。这种处理方法广泛的应用在许多应用比如;着色,抠图,多次度分解和图片消雾中。另外的一种方法通过引导图像生成滤波核。比如双边滤波器,他在某个像素点的输出值是周围同等权重的其他像素点的值的平均值。应到图像可以是图像本身或者是其他图像。双边滤波器可以实现平滑滤波的同时还能具有良好的边缘保持性能。但是会产生一些额外的图像阴影。在本设计中,我将介绍一种由微软亚洲研究院何恺明博士提出的一种图像引导滤波算法。这种算法本质上是引导图像的线性转换。该算法能够像双边滤波算法一样较好的实现平滑波动还能具有良好的边缘保持性能。而且不产生图像阴影。而且他也和拉普拉斯矩阵相关,也是在平滑滤波方法中可用的一种理念,此外,引导滤波器对于灰阶图和彩色图都有精确地算法,在大量的应用中实验证明图像引导滤波算法在效果和效率上有很不错的表现。在图像引导滤波算法中,首先明确一个概念,输出图像Q是输入图像P和引导图像I进行线性变换的结果。输入图像P和引导图像I都是已知量,而且两者可以完全相同。输入图像P的像素点i的值在经过处理之后生成一个加权平均数并成为输出图像Q的像素点i;在本函数中,i和j都代表像素的索引,滤波核Wij是输入图像I的函数并且与P无关。但是滤波器是与P线性相关的。我们假设q是I在以像素K为中心的小窗口WK上进行线性变换的结果。则有以下函数其中(ak,bk)是在窗口Wk中恒定不变的线性参数。我们使用一个半径为R的正方形窗口。这个线性模型确保仅当引导图像I有边缘时q才有边缘。因为:∇q=a∇I。这个模型已经在多个应用中证明是可行的比如,抠图,图像超分辨率,和清除迷雾。为了确定这些线性参数,我们寻找一种解决方案来最小化输出图像q和输入图像p之间的差别。尤其的,我们列出下面的函数在本函数中,ε是一个不变的参数用来防止ak的值过大,本函数通过计算得到答案在上述函数中,是引导图像I在窗口WK中的平均值,是引导图像I在窗口WK的方差,是在窗口WK里面的像素数目,是p在窗口WK的平均值。下面,我们将线性模型应用于整个图片中的局部窗口,然而像素I可能包含在许多WK中,所以在函数1中的值在不同窗口计算出来的值不相同。一个简单的方法就是计算出所有qi可能值的平均数。所以当计算出图片中每个模块的(ak.bk),我们计算输出滤波器其中,.目录TOC\o"1-2"\h\z\u第一章总论 51.1项目概要 51.2可行性研究报告编制依据 81.3综合评价 8第二章项目背景及必要性 112.1项目建设背景 112.2项目建设的必要性 13第三章建设条件 163.1项目区概况 163.2项目建设条件优劣势分析 21第四章市场分析与销售方案 264.1市场分析 264.2销售策略、营销方案和模式 294.3风险分析 30第五章项目建设方案 325.1建设任务和规模 325.2建设规划和布局 325.3工艺(技术)方案 325.4建设内容 355.5实施进度安排
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CBMMAS 024-2023顶墙集成
- T/CRIA 26005-2024胎圈钢丝单位产品能源消耗限额
- 英俄合同模板7篇
- 谁说经过公证的赠与合同就不能撤销7篇
- 户外广告租赁协议6篇
- 合伙开店合同范本(完整版)2篇
- 房管局合同买卖合同范本4篇
- 工业园区厂房租赁协议与工业土地租赁合同3篇
- 水杯购买合同4篇
- 产品加工承揽合同(一)与产品加工承揽合同5篇
- 垃圾分类测试题(含答案)
- 大兴医院PACS系统常见问题处理办法
- 上海中学2025届高考英语二模试卷含解析
- 抽错血标本护理不良事件
- 公务出国在职证明-英文版(因公签证)
- 故都的秋课文原文
- 【上市公司应收账款审计失败原因及应对措施探究:以立信所审计风华高科公司为例(论文)10000字】
- 2024年中考英语作文热点话题预测《AI人工智能》
- 2024年四川省德阳市中考化学试卷(含答案解析)
- 《长征胜利万岁》教学设计 2024-2025学年统编版高中语文选择性必修上册
- 2024年上海高考数学真题试题(原卷版+含解析)
评论
0/150
提交评论