为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于Android平台的图像搜索研究与实现

2018-04-27 41页 doc 360KB 19阅读

用户头像

is_079973

暂无简介

举报
基于Android平台的图像搜索研究与实现基于Android平台的图像搜索研究与实现 毕业设计论文 设计题目: 基于Android平台的图像搜索研究与实现 系 别: 专 业: 班 级: 学 号: 学生姓名: 指导老师: 日 期: 摘要 随着移动设备的兴起,移动互联网技术的不断完善,人们通过计算机、电视机等获取信息的途径,开始更多地转向我们手中的手机。本系统主要是为了实现基于Android手机平台的图像搜索功能,手机客户端用户将图片上传到服务端,并搜索服务器端的图片管理系统的相似图片,图像的匹配则完全在服务器端完成。核心功能为图像识别,系统采用均值哈希算法通过计...
基于Android平台的图像搜索研究与实现
基于Android平台的图像搜索研究与实现 毕业设计论文 设计题目: 基于Android平台的图像搜索研究与实现 系 别: 专 业: 班 级: 学 号: 学生姓名: 指导老师: 日 期: 摘要 随着移动设备的兴起,移动互联网技术的不断完善,人们通过计算机、电视机等获取信息的途径,开始更多地转向我们手中的手机。本系统主要是为了实现基于Android手机平台的图像搜索功能,手机客户端用户将图片上传到服务端,并搜索服务器端的图片管理系统的相似图片,图像的匹配则完全在服务器端完成。核心功能为图像识别,系统采用均值哈希算法通过计算灰度图像每个像素灰度与平均值的差异将图片转换为一个唯一标识的指纹字符串,通过比较两张图片指纹的相似度来完成图像识别。 文章中首先对系统概况、研究现状进行分析,然后设计的过程和实现的功能进行详细的讲解。 关键字 移动设备;均值哈希算法;图像搜索;图片管理系统 ABSTRACT With the rise of mobile devices, mobile Internet technology continues to improve, people's access to information through computers, televisions, etc., began more towards our hands phone. The system is mainly based on the Android mobile platform in order to achieve an image search function, the mobile client users to upload pictures to the server, and search for similar images on the server side of the picture management system, image matching is done entirely on the server side. Core functionality for image recognition, the system uses a hashing algorithm by calculating the difference between the mean gray level of each pixel grayscale image with the average picture is converted to a string that uniquely identifies the fingerprint by comparing the similarity of the two fingerprint images to complete image recognition. In this paper, the status of system survey, research and analysis, and then on the technology used in the system, and realize the function in detail. KEY WORDS Mobile devices; Mean hash algorithm; Image search; Image management system 1、 绪论 .................................................................................................................... 1 1.1 项目背景............................................................................................................ 2 1.2国内外研究现状 ................................................................................................. 2 1.3研究目标 ............................................................................................................ 3 1.4 技术支持............................................................................................................ 3 1.4.1 图像识别技术 ......................................................................................... 3 1.4.2 JSP技术 ................................................................................................... 3 1.4.3 J2EE的WEB开发 .................................................................................. 4 2、系统分析 .................................................................................................................... 5 2.1系统需求分析 ..................................................................................................... 5 2.1.1产品功能概述 .......................................................................................... 5 2.1.2用户类型和特征 ...................................................................................... 6 2.1.3 功能需求分析 ......................................................................................... 6 2.1.4非功能需求分析 ...................................................................................... 6 2.1.5系统运行结构要求................................................................................... 7 2.1.6系统运行环境需求................................................................................... 7 2.2系统可行性分析 ................................................................................................. 8 2.2.1技术可行性分析 ...................................................................................... 8 2.2.2经济可行性分析 ...................................................................................... 8 2.2.3操作可行性分析 ...................................................................................... 8 2.2.4社会环境可行性分析 ............................................................................... 8 3、系统总体架构设计 ..................................................................................................... 9 3.1开发环境 ............................................................................................................ 9 3.1.1 开发环境的搭建 ..................................................................................... 9 3.2 本系统的框架结构 ............................................................................................ 9 3.2.1 服务端程序设计 ..................................................................................... 9 3.2.2 服务端接口实现 ................................................................................... 10 3.2.3 客户端程序设计 ................................................................................... 11 3.2.4 客户端端接口实现................................................................................ 11 3.2.5 数据传输过程 ....................................................................................... 11 3.3 用例分析.......................................................................................................... 12 3.3.1 用例图 ................................................................................................... 12 3.3.2 用例规约 ............................................................................................... 13 3.4 UML建模 ......................................................................................................... 15 3.4.1 类图 ....................................................................................................... 15 3.4.2 活动图 ................................................................................................... 15 3.4.3 时序图 ................................................................................................. 16 3.4.4 状态图 ................................................................................................... 19 4、数据库设计 .............................................................................................................. 20 4.1数据库设计原则 ............................................................................................... 20 4.2 数据库设计 ...................................................................................................... 20 4.3 数据库需求分析 .............................................................................................. 20 4.4 数据库概念结构设计 ...................................................................................... 20 4.5 数据库与数据库的设计 ............................................................................... 21 4.6 数据库操作 ...................................................................................................... 21 5、系统详细设计与实现 ............................................................................................... 23 5.1 图片处理与算法识别模块 ............................................................................... 23 5.1.1均值哈希算法 ........................................................................................ 23 5.1.2图片压缩处理 ........................................................................................ 23 5.1.3计算灰度值 ............................................................................................ 24 5.1.4图片模糊识别 ........................................................................................ 25 5.2 服务器端登录模块 .......................................................................................... 25 5.3 服务器端修改密码模块 .................................................................................. 26 5.4 服务器端图片添加模块 .................................................................................. 26 5.4 服务器端图片管理模块 .................................................................................. 27 5.5 客户端图片列表模块 ...................................................................................... 27 5.6 搜索结果展示模块 ........................................................................................ 27 6、总结与展望 .............................................................................................................. 29 参考文献 ........................................................................................................................ 30 致谢 ................................................................................................................................ 31 1、 绪论 图像识别技术一直以来都是人们研究的热点,从工商业的印刷、数码,到互联网的以图搜图,再到移动应用的验证识别,图片识别技术的应用在我们日常生活中随处可见。本系统使用主要使用的是模糊识别的图像识别技术设计的一款能实现客户端与服务端交互的图像搜索软件。在本文中,我将对系统中应用的主要技术和实现的功能进行讲解。 论文总体结构如下: 第一章 讲述了系统的概况,以及目前国内外研究的情况,以及相关技术支持。 第二章 系统分析,确立目标与用户,并讲述系统的需求分析与系统的可行性分析。 第三章 介绍了系统总体架构设计,开发工具的选择、环境的配置,J2EE三层结构MVC模式开发,UML建模。 第四章 数据库结构的设计。 第五章 详细讲解系统各功能模块的实现与测试截图。 第六章 总结与展望。 附上相关参考文献。 第1页 1.1 项目背景 近年来中国移动互联网产业不断发展,移动终端从通信到现在的手机上网看视频、浏览网页,甚至到使用手机购物,逐步地改变着我们的生活习惯,其影响力也在各行各业逐渐扩大。在中国,2012年移动终端首次超过台式电脑网民,2013年移动终端使用者首度超过美国。中国的手机用户不同于外国,相对于美国手机用户对手机使用更多的是通讯,中国的手机用户更加喜欢的是配置好,功能又强大的手机,他们更喜欢使用手机上网,体验更加特别又新潮的事物。因此,为了满足中国这个庞大的消费市场的需求,手机开发商和互联网巨头们不得不为手机平台研发更多的功能以满足人们的需求。 现在的中国手机用户,大多是手机的重度使用者,他们往往喜欢通过手机来展现他们的个性,甚至一张手机壁纸就能体现一个人的喜好。我们常常在手机浏览网页,下载各种个性化图片,如果能够通过手机上传搜索相似的图片,这将为我们提供了很多方便。因此,中国手机市场消费者对于基于手机平台的图像搜索应用的需求是非常大的。而现在关于移动设备上的图像搜索软件还是比较少的,基于移动设备的图像搜索成为了移动开发中的一个重要课题。 1.2国内外研究现状 识别,一直是计算机视觉的核心问题,图像识别功能实现首先要对计算机视觉要有所了解。计算机视觉就是以计算机代替人的视觉把人看到的东西通过计算机进行识别和处理。而如何实现该功能,这就需要图像处理技术和模式识别技术的支持了。 本系统采用的是图片灰度化的处理结合模糊识别的技术实现的一款图片搜索软件。 图像识别技术从出现到现在,已经广泛应用于各个领域。其发展从文字识别到图像识别到物体识别,技术要求在不断地提高,理论体系也在逐步地完善。文字识别研究最早开始于20世纪50年代,其应用已经非常广泛,其中最被我们熟知的就是印刷机。现在的印刷技术已经接近完美,平时我们很难看到有出现打印文字错误,这正说明文字识别技术已经相当完善。而文字识别可以说是图像识别的一个特例。 图像识别最近备受青睐,自谷歌推出以图搜图功能后,国内各网络巨头也不甘落后纷纷推出相应产品,如百度搜图、淘宝搜图等。同时电商也来分一杯羹,最近美菱推出的云图像识别冰箱领跑着白电智能化的新时代。这同时表明我国的图像识别技术已经走在世界前沿。 第2页 1.3研究目标 本系统设计的目标是为了为手机用户提供一个图片搜索的手机应用,满足其搜索相似图片的需求。并通过该项目的研发完成以下预期目标: 1. 开发出来的应用能在手机上运行良好,并有一定的实用性。 2. 系统有可拓展性,可移植性,而且便于维护管理。 3. 加深图像识别技术的了解,同时致力于找出一种更加高效且安全的识别算法。 4. 深入了解当下移动互联网手机应用的开发过程并对移动互联网的发展趋势有所 了解。 5. 加深对代码编写的规范化,深入了解更多的移动应用技术。 6. 最终,顺利通过毕业设计的考核。 1.4 技术支持 1.4.1 图像识别技术 就像人能够识别看过的事物一样,图像识别就是认出它是使用过的图形的过程,也叫图像再认。在图像识别中,既要有当时进入感官的信息相当于客户端上传的图片信息,也要有记忆中存储的信息,相当于服务器端储存的图片信息。只有通过存储的信息与当前的信息进行比较的加工过程,才能实现对图像的再认。 图像识别技术是人工智能的一个重要领域。为了编制模拟人类图像识别活动的计算机程序,人们提出了不同的图像识别模型。例如匹配模型。这种模型认为,识别某个图像,必须对图片经过处理,处理后的信息就是一个模版。当上传的图片经处理后,就能跟数据库上处理过的模版进行匹配。描述图片的算法有很多SIFT描述子,感知哈希算法PHASH,差异哈希算法DHASH等。 1.4.2 JSP技术 JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP是为服务器端开发提供的一种脚本,它接受来自于客户端的请求并根据请求响应生成一种html文档。JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。在Web应用开发中,可供选择的动态页面语言技术有很多,例如 第3页 PHP,ASP,JSP等,在这些动态页面语言中,JSP凭借其自身的优点成为开发人员最喜欢的语言之一。JSP相对于ASP、PHP开放性更高,支持的平台更多,而且可以建立大型的web应用程序,执行程序的速度却毫不逊色。 1.4.3 J2EE的WEB开发 本系统服务器端使用的是J2EE平台,J2EE是使用Java技术开发企业级应用的一种事实上的工业标准,它是Java技术不断适应和促进企业级应用过程中的产物。Sun推出J2EE的目的是为了克服传统Client/Server模式的弊病,迎合Browser/Server架构的潮流,为应用Java技术开发服务器端应用提供一个平台独立的、可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和部署。J2EE平台支持的JDBC技术也为数据库连接提供极大方便。JSP+Servlet+JavaBeans的开发方式使得网页的逻辑关系能与网页设计分开。高效、便捷的操作环境和友好的可视化操作界面使其成为web程序开发者们最喜欢的编程平台之一。 第4页 2、系统分析 2.1系统需求分析 2.1.1产品功能概述 管理员将图片存放在后台数据库中,管理员通过web页面查看和管理,Android手机用户通过上传手机图片搜索数据库中的相似图片。主要功能如下: 1. 系统设置:数据库设置,图片管理设置,管理员设置。 2. 图片上传功能:实现管理员上传本地图片到数据库、实现手机用户上传移动设备 上的图片到服务端缓存文件夹。 3. 图片管理功能:系统将数据库图片显示在查询页面,管理员可以在此执行删除操 作。 4. 帐号管理功能:更改相应的管理员信息,提高安全系数。 5. 客户端图片管理功能:用户可以在软件中对手机图片进行管理,如重命名、删除、 上传搜索等功能。 产品分为为管理员设计的图片管理系统和为Android客户端用户设计的Android应用软件两部分。客户端使用http访问技术与图片管理系统进行数据交互。 图2-1 图片管理系统设计分析 图2-2 客户端软件设计分析 第5页 2.1.2用户类型和特征 通过在之前需求调研过程中的数据分析,本系统的预期用户为Android手机用户。主要的服务人群有一下两类类是需要大量图片素材的社会工作者。比如一些UI设计者或网页设计师,他们需要大量的相似的图片素材来丰富他们的设计内容。第二类为潮流时尚的年轻人。现在的青少年一般都比较的潮,经常在网上进行购物之类的,当他们看到一个图片,可以在网上搜索出类似的。 2.1.3 功能需求分析 功能模块:实现管理员信息管理。 操作功能:管理员登录需要做相应验证,若登录信息与数据库内的管理员信息不匹配则无法登录。登录后管理员对密码进行修改 ,修改过程中也要做相应验证,保证密码安全可靠。 功能模块:实现图片上传功能。 操作功能:管理员登录后,可以在系统子页面中为系统图库添加图片。可对图片添加描述同时应该包含上传时间方便管理员查看管理。 功能模块:实现图片信息库管理。 操作功能:管理员登录并上传图片后,可以在系统中查找、删除图片。图片除了图片显示还应该包括该图片的描述、上传时间显示以方便管理员对相应的图片进行管理。 功能模块:实现客户端本地图片的管理。 操作功能:手机用户可对本地图片进行管理,可以删除拍照不理想的图片,又或者把图片按自己喜好命名。用户可以点击相应图片选择上传搜索,返回的图片信息显示在图片查看页面。 功能模块:实现搜索结果显示。 操作功能:搜索结果显示要求,显示结果全面、清晰,使用gallery控件,能通过拖拉实现大量图片的显示。点击相应图片能在gallery控件下方显示该图片的大图,方便用户查看和比较。 2.1.4非功能需求分析 第6页 安全性需求:对于服务器端上传的图片应该严格要求,不能上传一些有危害到个人或国家利益的图片。上传的图片应该经过处理并指明出处。 易用性需求:要求系统具备良好的操作性,界面要求简洁、美观、大方,软件功能完善,可靠、健壮、高效、易于维护可拓展性好。 性能需求:空间上对存储器和磁盘空间的需求;对存储在数据库中表的最大行数有一定的需要。时间上对所有页面操作、帐号信息显示、数据库的操作都能合理地响应。 2.1.5系统运行结构要求 服务端的实现技术有多种,主要有客户机/服务器(C/S)型架构和采用Web 技术的浏览器/服务器(B/S)型架构两种。 模式。它是 B/S 是英文Browser/Server的缩写,即我们经常所说的浏览器-服务器C/S结构衍生的一种为了适应现在高速发展的Internet技术的结构。我们利用浏览器作为客户端,用户只需要在浏览器里面输入自己需要访问的地址,就可以访问存在与服务器端的应用。这种模式使用于小型的局域网和大型的网络系统。在这种模式下,客户端无需安装任何的东西,只需要安装一个浏览器,就可以访问自己想要的系统,这样大大减轻客户端的占用,减轻了系统维护与升级的成本和工作量,降低了用户的成本。 B/S结构是跟随者 Internet技术一起发展起来的,与C/S模式类似,浏览器作为客户端。考虑到我们开发的系统客户端是手机终端,C/S架构对于开发应用于多个操作系统的东西很难,对于系统升级维护也有限制。基于上述考虑,同时也考虑到B/S模式的优点,我们选择了浏览器/服务器(B/S)型架构 2.1.6系统运行环境需求 选择Windows 7操作系统。 运行时的基本配置如下: 服务器端:硬件环境:CPU Pentium以上,内存 512mb以上; 软件环境:操作平台 Windows NT4.0 Server 及后续版本,数据库 系统SQL Server2005; 客户端: android2.3以上的系统; 第7页 2.2系统可行性分析 2.2.1技术可行性分析 技术上的可行性分析需要考虑采用的硬件和软件技术能否满足用户提出的要求。由于本系统设计难度不大,sun公司有一套非常完善的java web开发技术用于这种中小型的项目开发。 2.2.2经济可行性分析 由于是中小型的开发项目,资金投入主要是配置电脑、服务器、及相关的网络设备、申请域名等。相对于企业级的投入要小很多。 2.2.3操作可行性分析 现在手机用户对于年龄的限制逐渐减少,为了争取获得更多的高、低龄用户,我们产品设计以人性化为生产理念。客户端操作与界面设计简单易懂,使高、低龄用户上手更加容易。服务端的操作与界面设计方便快捷,能极大提高管理员的工作效率。 2.2.4社会环境可行性分析 由于手机用户的逐年增加,中国更是拥有全球最多的手机用户。而图片搜索的手机应用现在还是比较少的,在中国拥有很大的市场。而且现在的年轻人更加喜好show自己手机拍摄的图片,网络的图片信息越来越多,对图片搜索的需求也越来越大。 第8页 3、系统总体架构设计 3.1开发环境 本系统采用服务端+客户端的模式,服务端主要采用B/S的架构模式,采用jsp作为系统界面,tomcat作为服务器,SQL serve作为数据库。客户端采用android平台作为操作系统。 3.1.1 开发环境的搭建 搭建开发环境需要的软件: 1) 操作系统:window 7或linux 2) IDE环境:Eclipse IDE+ADT Eclipse3.3以上 3) apache-tomcat-6.0.35 3.2 本系统的框架结构 图片管理系统框架分为三层分别是:Browser层、WEB层、Database层。Browser层为页面表示层,Database层为数据库访问层,WEB层为功能逻辑实现层。 3.2.1 服务端程序设计 图3-1 程序结构图 第9页 服务端主要的功能为管理员信息管理、图片上传、图片管理。 界面使用jsp技术开发的网页,主要有登录页面,主页面,图片上传页面,图片管理页面。 服务器端开发使用的是MVC开发模式即模型-视图-控制器模型。 模型就是应用业务逻辑部分,主要角色是JavaBeans。本系统中用于与数据库交互的模版类pic类就是一个JavaBeans。 视图就是界面部分,在web应用程序中就是HTML、XML、JSP页面的设计。 控制器负责网站的整体逻辑,用于管理用户与视图发生的交互即java项目中的servlet。它处在视图与数据之间,对视图与模型的交互进行管理。 系统运作过程如图3-2所示: 图3-2 系统运作过程图 3.2.2 服务端接口实现 数据库接口:为了实现与数据库的交互,我们需要使用java提供的API-JDBC通过调用加载驱动类DriverManager实现数据库连接。使用方法DriverManager.getconnection(url,username,password)获取指定地址、帐号和密码参数的帐号连接。 文件上传接口:服务端的图片添加实现使用了应用于jsp的jspSmartUpload文件上传下载组件,以下为使用的主要方法。 Initialize(getserveltconfig(),request,response):初始化,getserveltconfig()获取配置信息 SetMaxFileSize(long size):设定文件允许上传的最大长度 Upload():上传文件数据 setAllowedFilesList(string filelist):设定带有指定拓展名的文件 第10页 saveAs(string othername,int optionsaveas):将文件换名另存optionsaveas为根目录 为了servlet能读取jsp页面的文件信息还需要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。设置form的enctype属性为multipart/form-date,这样浏览器上传文件时将会把文件数据附加到http请求信息体中。 3.2.3 客户端程序设计 客户端程序是在android平台下开发完成,内容有: 1. 图片上传界面和图片查看页面实现 2. 重命名、删除、搜索等activity点击事件实现 3. 上传和下载图片的处理 4. 使用HttpUrlConnection访问网络 3.2.4 客户端端接口实现 客户端接口实现使用的是HTTP协议访问技术为手机用户搭建的一个实现图片上传搜索的接口。通过HttpURLconnection模拟post表单的提交。首先构造post正文,其中content-type属性必须为multipart/form-date,然后打开Dataoutputstream将文件信息写入,并将图片包装成能被服务端识别的类型。使用FileInputStream类的read(byte b)方法依次写入图片信息到Dataoutputstream包装类里。使用Dataoutputstream类的write方法上传数据。 服务端使用DiskFileUpload类的parseRequest(request)方法读取上传信息,parseRequest方法是对http请求信息进行解析的入口方法,它能解析出form表单中每个字段的数据,并将他们分别包装成独立的Fileitem对象。 使用ByteArrayOutputStream获取返回的IO流信息。使用intent实现页面间数据传递,将获取到的图片显示在图片查看页面。 3.2.5 数据传输过程 1.使用HashMap的get方法获取选中图片的图片信息• 2.初始化HttpURLConnection类与服务端相应地址建立连接 3.使用Dataoutputstream类将图片包装成包含post请求正文和图片名的数据类型 4.使用hashmap的get(”title”)方法获取鼠标上的文件名提示即图片名 第11页 5.使用File类获取相应手机路径相应图片名的图片 6.使用FileInputStream类的read(byte b)方法依次写入图片信息到Dataoutputstream 包装类里。使用Dataoutputstream类的write方法上传数据。 7.服务端使用DiskFileUpload类的parseRequest(request)方法读取上传信息,parseRequest方法是对http请求信息进行解析的入口方法,它能解析出form表单中每个字段的数据,并将他们分别包装成独立的Fileitem对象。 8..使用FileItem类的write方法将FileItem对象中的内容保存到某个指定的文件中。 14.使用File类获取图片 9.使用图片识别算法筛选图片 10.使用PrintWriter类向前台的JSP页面输出结果 PrintWriter out = response.getWriter();out.print(result); 11.使用 HttpURLConnection 的 getInputStream 或 getOutputStream 方法可以释放与此实例关联的网络资源获取输入输出流数据。 12.使用Bitmap类还原图片 13.结果显示 3.3 用例分析 系统的使用者有管理员和手机用户,所以参与者有图库管理员和手机客户端用户,主要功能模块可划分为管理员登录、图片添加、数据库图片管理、管理员信息管理、手机用户图片管理五个功能模块。 3.3.1 用例图 系统管理员,负责图片管理系统的管理,主要工作是向数据库中添加或删除图片。 管理员用例图如图3-3 第12页 图3-3 系统管理员用例图 客户端用户,通过web服务接口上传图片与服务器端的图片进行比较,最后通过接口获取返回的图片信息。由于客户端用户上传信息是在后台运行,所以并没有与管理员发生交互。 图3-4 客户端用户用例图 3.3.2 用例规约 表3-1 登录用例规约 用例名称: 登录 角色: 管理员 用例说明: 该用例主要功能是实现管理员登录 前置条件: 启动程序,进入登录页面 基本事件流: 参与者动作 系统响应 1.管理员输入帐号和密码,点击确1.系统查询数据库,匹配该帐号和 定按钮登录 密码是否存在于数据库中;若存 在,且密码正确则进入系统管理 页面 其它事件流: 无 异常事件流: 参与者动作 系统响应 1. 输入错误的登录名或密码 1. 重新返回登录界面 后置条件 登录成功,进入系统管理页面 第13页 表3-2 修改密码用例规约 用例名称: 修改密码 角色: 管理员 用例说明: 该用例主要功能是实现管理员信息管理 前置条件: 登录成功,进入修改密码页面 基本事件流: 参与者动作 系统响应 1.管理员输入用户名、旧密码和新1.跳转到另一个页面,页面提示 密码,点击确定按钮修改 “更改成功” 其它事件流: 无 异常事件流: 参与者动作 系统响应 1. 用户名为空 1. 弹出“请输入用户名”提示框 2. 旧密码为空 2. 弹出“请输入密码”提示框 3. 新密码为空 3. 弹出“请输入新密码”提示框 后置条件 修改成功 表3-3 添加图片用例规约 用例名称: 添加图片 角色: 管理员 用例说明: 该用例主要功能是添加图片到该系统,用例起始于管理员点击“添加” 按钮 前置条件: 登录成功,进入系统图片添加页面 基本事件流: 参与者动作 系统响应 1.管理员点击“浏览”按钮选择上1.跳转到图片查询页面中 传的图片,填写图片的描述后,点 击“确定”按钮上传 其它事件流: 无 异常事件流: 无 后置条件 查询页面可以查看到添加的图片,证明添加成功 表3-4 图片管理用例规约 用例名称: 图片管理 角色: 管理员 用例说明: 该用例主要功能是对已添加的图片进行查看或删除 前置条件: 登录成功,进入图片查询页面 基本事件流: 参与者动作 系统响应 1. 点击“删除”按钮 1. 跳转回查询页面并刷新 其它事件流: 无 第14页 续表3-4 异常事件流: 无 后置条件 查找不到相应图片,删除成功 3.4 UML建模 3.4.1 类图 类图是管理员类和图片类的静态结构与其之间的关系图。 图3-5 管理员类操作图片类类图 3.4.2 活动图 管理员活动图(图3-6),阐明了管理员用例图(图3-3)使用该系统的工作流程: 图3-6 管理员活动图 客户端用户活动图(图3-7),阐明了客户端用例图(图3-4)使用该系统的工作 第15页 流程: 图3-7 客户端用户活动图 3.4.3 时序图 图片搜索模块时序图3-8,描述客户端向服务端发送请求,以获取搜索的相似图 片的过程。 图3-8 图片搜索模块时序图 说明: 第16页 Tomcat:服务器端浏览器 Httpserveltrequest:获取请求信息 Httpserveltresponse:获取响应信息 UpPhotoServelt:处理图片上传的控制器,返回图片信息 Dopost():接收post请求并作相应处理 管理员登录模块时序图,描述管理员登录过程系统做出的动作。项目中,使用JSP脚本语言设计网页布局,通过
标签的action属性将用户输入的信息提交到Servlet中进行登录验证。 图3-9 登录模块时序图 说明: Login.jsp:登录页面 Loginservelt:登录页面的控制器,实现登录页面的页面逻辑,如登录验证 Index.jsp:图片管理系统主页面,其下有图片添加、查询等子页面。 修改密码时序图,该图描述了系统管理员管理帐号信息的过程。 第17页 图3-10 修改密码时序图 说明: adminupdatepwd.jsp:index主页面下的修改密码子页面 pwdservelt:修改密码页面的控制器,实现修改当前帐号的密码操作 update():Sqlserver的修改语句 ok.jsp:修改成功后跳转的页面,页面显示“更改成功” 图片添加时序图,该图描述管理员在图片添加页面向数据库插入图片,增加图片 资源。 图3-11 图片添加时序图 说明: 第18页 Picadd.jsp:index主页面下的图片添加子页面 AddPicServelt:图片添加页面的控制器,完成图片数据库的插入操作 Piclist.jsp:index主页面下的图片查询子页面,用于显示数据库中存在的图片 Insert():Sqlserver的插入语句 管理员管理图片时序图,该图描述管理员管理图片时对系统的操作和系统对其操作的响应。 图3-12 管理员管理图片时序图 3.4.4 状态图 管理员管理图片状态图,显示了管理员如何根据当前所处的状态对不同的事件做出反应的。 图3-13 管理员管理图片状态图 第19页 4、数据库设计 4.1数据库设计原则 本系统的数据库设计使用的是SQL Servr2005。数据库设计的过程可以分为需求分析,概念设计,逻辑设计和物理设计四步。首先应该从需求出发,明确定义出系统的功能点;然后根据其功能的数据库要求进行E-R图概念设计;根据上一步确立数据库的逻辑关系;最后设计数据库表,设置物理存储与索引,建立完整的数据库连接。 4.2 数据库设计 数据库技术是现代数据存储的必要手段,在信息系统中占有非常重要的地位。数据库的设计好坏将对系统的实现产生很大的影响。系统的数据库设计是指对于一个给定的需求,建造出最理想的数据存储模式,使之能够为系统提供最优秀的数据存储,来满足系统的需求。 4.3 数据库需求分析 管理系统的需求具体体现在各种信息的操作方面,主要包括保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输出和输入。 本系统主要涉及到的就是插入、查询和修改操作。 4.4 数据库概念结构设计 在系统分析阶段得到的数据流图和数据词典的基础上,还有根据以上的数据库需求分析可以初步设计数据库的概念模型,概念数据模型是用户角度看到的数据库,设计时要应用数据规范化的理论。E-R图如4.4图所示: 图4-1 E-R概念图 第20页 4.5 数据库与数据库表的设计 通过上面的需求分析和概念结构设计,就可以分析出本系统的表: 本系统主要由两张表,一个是管理员表,一个是图片表。 管理员表的结构如表4-1所示: 表4-1 管理员表(admin) 字段名称 数据类是否主键 数据长度 默认值 功能描述 型 id decimal 是 9 递增1 主键标示 username nvarchar 否 50 null 登录名 password nvarchar 否 50 null 密码 图片表的结构如表4-2所示: 表4-2 图片表(pic) 字段名称 数据类是否主键 数据长度 默认值 功能描述 型 id decimal 是 9 递增1 主键标示 url nvarchar 否 50 null 地址 descs nvarchar 否 50 null 描述 times datetime 否 50 null 添加时间 4.6 数据库操作 要进行数据库操作首先要新建一个DBUtil对象然后建立连接代码如下: DBUtil util=new DBUtil(); Connection conn=util.openConnection(); 建立连接后就能使用Sqlserver语句对数据库执行增、删、查、改操作了。 说明: admins:管理员表 pic:图片表 第21页 username:登录帐号 password:登录密码 url:图片地址 times:上传图片即时时间 descs:图片描述 查询帐号操作: sql = "select * from admins where username= '" + username+ "' and password='" + password + "'"; 插入图片操作: sql = "insert into pic(url,times,descs) values('" +gurl+"',"+"getdate(),'"+descs+"')"; 修改密码操作: sql = "update admins set password = '"+ newpwd + "'"; 分页操作(设置每页只显示n张图片): sql = " SELECT TOP " + n + "* FROM (" + " SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM pic where 1=1 "; 删除操作: Sql=" delete from pic where id= "+id; 当然做完数据库修改后最后还要使用util.closeConn(conn)关闭数据库了。 第22页 5、系统详细设计与实现 5.1 图片处理与算法识别模块 要进行图像识别首先知道图像是由许多色彩相近的方块组成,这些方块就是构成图像的最小单位“像素”。像素是指基本原色素RGB(红、绿、蓝)及其灰度的基本编码。图像的识别就是各像素比较。 本系统先将图片进行压缩、降彩处理,使用均值哈希算法生成一个指纹字符串,通过这个字符串的比较就能得到相似的两张图片。 5.1.1均值哈希算法 本系统中使用的图像识别算法为均值哈希算法(AHASH)。均值哈希算法即将一张图片经过压缩和灰度化处理后计算灰度其每个像素灰度与均值的差异,最后将这些差异转换为一个唯一标识的指纹字符串。具体流程如下图5-1所示: 图5-1 均值哈希算法实现过程图 5.1.2图片压缩处理 由于一张图片有大有小,像素高的图片如果不经过处理,其数据量非常大,在匹配过程会非常占用内存,而且存储起来也不方便。 在本系统中我采用的是等比缩放的方式对图片进行处理。首先,缩小尺寸,将图片缩小到8x8即64像素的尺寸,就是去除不同尺寸、比例带来的图片差异,只比较图片结构、明暗等信息,得到其缩略图。这样一个图像处理的过程就是一个压缩过程。 效果图如图5-2所示: 第23页 图5-2 缩小到8*8像素后的图片 5.1.3计算灰度值 压缩图片后就要做进一步简化色彩便于比较。 灰度化就是将读取到的位图数据点的R、G、B转为相同的灰度值,灰度转化之后再以变换后的像素输出到原坐标点。现在像素主流的模式为24bit模式(真彩色),该模式的3个二进制分量各占8位即一个字节,范围为(0-255)。 (255,0,0)为红色 (0,255,0)为绿色 (0,0,255)为蓝色 计算机中的像素如下图所示: 图5-3 像素 只要分别将红的数据位向右移16位,绿的数据位向右移8位,分别取最后8位,这样就能够得到RGB的值了,如:R=(pixel>>16)&0xff得到R的值。获得RGB的值之后,通过加权平均法获取该像素的灰度值Gray: Gray =0.3*red+0.59*green+0.11*blue 令3个分量的值是相等的即red=greed=blue=Gray。此时的像素(R,G,B)即(Gray, Gray, Gray)就是人眼能识别的亮度不一的灰度。 最后将每个像素的灰度与64个像素的灰度平均值比较,大于或等于平均值记为1,小于平均值则记为0,得到一个长度为64的一串数字即图片的指纹。 第24页 5.1.4图片模糊识别 在本系统识别模式采用的是模糊模型识别方法。上面讲到的图像处理就是将图片模糊,使用哈希算法得到的指纹就是一个模型,计算两张图片指纹的汉明距离就是识别。 图片通过哈希算法得到哈希值,转化后得到的字符串就是这张图片的特征,也是标识特定图片的特定指纹。我们只要使用计算汉明距离的方法比较两个字符串指纹就能简单的识别到相似的图片了。汉明距离即比较两个等长字符串不同字符的个数,例如001,010的汉明距离就是1。比较方法是通过比较二者的汉明距离,距离越小说明其相似度越高。 5.2 服务器端登录模块 服务端登录页面,主要为管理员对系统的图片管理进行设计的,显示效果如图5-4所示: 图5-4 登录模块效果图 服务器端的UI界面设计采用的是JSP技术,在登录界面我们需要对输入的帐号和密码进行验证。我们都知道以前的服务端开发是使用java servlet输出HTML语句来实现动态网页的,其最大弊端就是没把网站逻辑与网页分开,于是有了JSP技术。 项目中,使用JSP脚本语言设计网页布局,通过标签的action属性将用户输入的信息提交到Servlet中进行登录验证,代码如下: /Loginservlet”> 这样就能把网页与逻辑的设计分开了。 在Loginservlet中,我们建立数据库连接后,使用sql查询语句,来获取数据库管理员表中的帐号密码信息并匹配验证,验证成功则跳转到管理界面。 第25页 同时我们还在Loginservlet中添加了一个session对象,session对象就是保存我们的登录状态和信息,我们就能够在其它页面调用session对象来实现显示帐号登录或者修改密码等操作了。 5.3 服务器端修改密码模块 管理员可以在修改密码页面填入正确的帐号、密码和想要修改的密码,点击确定按钮,将想要修改的密码通过update进行修改。显示效果如图5-5所示: 图5-5 修改密码模块效果图 5.4 服务器端图片添加模块 服务端可以对系统的图片进行添加,通过点击添加按钮,添加本地片。显示效果如图5-6所示: 图5-6 图片添加模块效果图 图片的添加就是将要添加的图片保存到数据库中,首先通过点击浏览按钮选 第26页 择要添加的图片,在这里我们还可以为图片添加描述,方便管理员查找管理。 5.4 服务器端图片管理模块 服务端可以对图片进行管理,对图片进行删除操作。我们先通过创建一个数据库对象,建立连接显示效果如图5-7所示: 图5-7 图片管理模块效果图 5.5 客户端图片列表模块 用户可以浏览手机SD卡上的图片,使用Listview方式显示图片,通过长按相应的图片产生点击事件,点击搜索即可上传图片。显示效果如图5-8所示: 图5-8 客户端图片列表模块 5.6 搜索结果展示模块 第27页 当进行完搜索后,客户端会展示搜索结果,显示效果如图5-9所示: 图5-9 搜索结果展示模块 在展示页面新建了一个Gallery类,实现拖动效果的关键,Gallery是一个能够水平卷动对象显示的视图。 对于设计要求的功能,系统均已完成,在机器上运行流畅,测试中也没有发现BUG。图片搜索效果也比较理想,测试效果图如下(左为原图,右为相似图显示): 图5-10 运行效果图 第28页 6、总结与展望 经过四个多月的努力,在导师指导下,终于完成了毕业设计。在此过程中,我学到了很多,不仅有知识的提升,还有做人的道理。在设计过程中,我一度遇到挫折,最后幸得朋友帮助才解决。遇到困难,我们不应该独自承担,适当地请求别人的帮助,不但能加深友谊,还能使工作更加有效率。 系统分析阶段,查阅了大量基于不同技术的开发的文章,具有了一定的理论基础后,比较分析后采用了JSP编程技术和SQL Server数据库,在Windows 7操作系统 基于服务端+客户端的图像搜索系统。本环境下,运用eclipse开发工具,开发了这个 系统不但有良好的系统运行稳定性、可靠性和实用性,而且操作简单,维护方便,具有一定的实用价值。 在需求分析结束后,系统进入编程阶段后,因为编程技术的缺失,我遇到了很多的困难。首先由于缺乏JSP的WEB开发经验在页面设计和页面逻辑处理的不熟悉,导致开发缓慢,数据库的建立需要有很强的逻辑性,我在反复画图研究后仍然设计不出很理想的数据库模型,对jsp的一些语法不是很了解,导致在开发调试过程中经常出现一些错误等。但经过自己的努力及。老师的细心指导,最终解决了这些问题,开发出一个实现基本功能的系统,并达到了预期的设想。 但是,本系统还有很多不足之处需要改进,比如:算法的鲁棒性有待提高、对程序中页面输入验证不够全面,可能由于输入不合法而程序出错等。但是在整个的系统开发开发过程中我学到了很多以前不知道的知识,很好的增强了自己的动手能力,积累了许多解决技术问题的经验。同时也让我发现了自己的很多不足之处,有待在将来的工作学习中进一步的完善和改进。 第29页 参考文献 [1]李刚,疯狂Android讲义[M]. 北京:电子工业出版社,2011 [2]微软公司.SQL Server2005数据库开发与实现[M].北京:高等教育出版社,2007. [3]钱乐秋,赵文耘,牛军钰.软件[M].北京:清华大学出版社,2007. [4]杨晓光.数据结构实例[M].北京:清华大学出版社;北京交通大学出版社,2008. [5]孙卫琴.Java面向对象编程[M].北京:电子工业出版社,2006. [6]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004. [7]常建功.Java Web典型模块与项目实战大全[M].北京:清华大学出版社,2011. [8]佟伟光.软件测试[M].北京:人民邮政出版社,2010. [9]蔡敏,徐慧慧,黄炳强.UML基础与Rose建模教程[M].北京:人民邮政出版社,2011. [10] (美)冈萨雷斯,译:阮宇智、阮秋琦,数字图像处理[M],电子工业出版社,2007. 第30页 致谢 在这次的毕业设计中,我学到了很多,认识到储备知识的重要性,同时也让我学到了许多做人的道理。 毕业设计也使我对如何开发一个好的信息管理系统需要有哪些的开发阶段,以及各个开发阶段需要做哪些工作,对我来说收获很大。 在本次毕业设计中,我从指导老师。老师身上学到了很多东西。他无论在理论知识的讲解上还是在动手编程的实践中,都给予了我很大的帮助,使我得到很大的提高,这对我以后的工作和学习都将有着巨大的帮助,感谢他耐心的辅导。同时也感谢在大学生活中教育、帮助过我的所有老师,感谢在毕业设计中帮助过我的同学和前辈,感谢广州大学华软学院几年来对我的培养。 最后,要特别感谢赖昆盛前辈的帮助,他在系统的细节和设计思路上给了我许多建议,谢谢您。 第31页
/
本文档为【基于Android平台的图像搜索研究与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索