登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 理工学类 > 自动化 > 正文

基于Androidopencv的圆检测毕业论文

 2020-02-13 22:27:05  

摘 要

图形检测在计算机视觉领域是一个很常见也很基础的问题。图形检测常用的算法便是霍夫变换,从直线到圆,再到椭圆,广义霍夫变换[1]可以推广到任意图形。在图形几何复杂度提升的时,算法所耗费时间和空间也都有很大的增加。OpenCV中集成了霍夫变换算法,同时OpenCV被广泛应用于图像分析,计算机视觉,数字图像处理等等。同时OpenCV在手机端的推广也给使用者带来了新的交互方式和体验。

本文首先学习霍夫变换,包括霍夫变换的原理和性质,然后在安卓平台上面利用OpenCV中的霍夫变换算法实现圆检测,并对椭圆检测进行了探索学习。对OpenCV计算机视觉库和安卓平台系统架构进行了深入了解。在Android Studio平台上利用OpenCV4Android进行app开发,调用OpenCV4Android视觉库的Java API接口,在手机的摄像头画面中进行实时圆检测。最后将应用打包成APK安装包安装到手机上面运行测试,测试结果表明,该手机APP的功能达到预期,且运行良好。

关键词:Android APP;OpenCV; 霍夫变换;圆检测;椭圆检测

Abstract

Graph detection is a very common and basic problem in computer vision field.The commonly used algorithm for graph detection is hough transform. From straight line to circle to ellipse, generalized hough transform can be extended to any graph.When the geometric complexity of graphics increases, the time and space consumed by the algorithm also increase greatly.OpenCV integrates hough transform algorithm, and OpenCV is widely used in image analysis, computer vision, digital image processing and so on.At the same time, the promotion of OpenCV on the mobile phone also brings users a new interactive way and experience.

This paper first studies hough transform, including the principle and properties of hough transform, and then realizes circle detection by using the hough transform algorithm in OpenCV on android platform, and explores and learns ellipse detection.To the OpenCV computer vision library and android platform system architecture for in-depth understanding.In Android Studio platform, OpenCV4Android is used for app development, and the Java API interface of OpenCV4Android visual library is invoked to conduct real-time circle detection in the camera picture of the phone.Finally, the APP is packaged into APK installation package and installed on the phone to run the test. The test results show that the function of the phone APP reaches the expectation and runs well.

Key words: Android APP; OpenCV; Hough transform; Circle detection; Ellipse detection

目录

第1章 绪论 1

第2章 关于OpenCV 2

第3章 关于Android 3

3.1 Android平台的系统架构 4

3.1.1 Linux内核 4

3.1.2 硬件抽象层(HAL) 4

3.1.3 Android Runtime 4

3.1.4 原生C/C 库 4

3.1.5 Java API框架 4

3.1.6 系统应用 5

3.2 OpenCV4Android 5

第4章 霍夫变换 6

4.1 原理 6

4.2 参数空间的选择 10

4.3 霍夫变换检测直线 10

4.4 优缺点 11

第5章 霍夫变换圆检测 12

5.1 标准霍夫变换 13

5.2 Gerig霍夫法 13

5.3 二阶霍夫变换 13

5.4 快速霍夫变换 14

5.5 上述方法性能对比 15

第6章 OpenCV圆检测 17

6.1 使用到的关键函数和接口 17

6.1.1 JavaCameraView 17

6.1.2 BaseLoaderCallBack 18

6.1.3 Imgproc.blur滤波函数 18

6.1.4 Imgproc.HoughCircles 圆检测函数 18

6.1.5 Imgproc.cicle. 19

6.2 APP流程 19

6.3 APP运行情况 20

6.3.1 正常情况 20

6.3.2 异常情况 20

第7章 拓展,椭圆检测 21

第8章 总结与展望 22

第9章 参考文献 23

第10章 附录:核心代码 24

绪论

近年来,计算机视觉得到了广泛的应用和发展,极大的改变了手机终端的交互方式,提高了工业领域的生产效率。

在手机终端中,计算机视觉配合手机终端的摄像头和触控屏实现了一种全新的交互方式,增强现实技术AR便是一个很好的例子,摄像头采集到现实世界的影像,然后经过计算机视觉技术的加工,把虚拟信息与现实世界结合起来进行交互操作。生活中最常见的有地图实景导航,通过在实际场景的分析,在场景上面添加路线指示,实现了更加直观的导航操作。日本AR手机游戏Pokemon Go也是同样的原理,把现实世界和虚拟世界结合起来的一种新型游戏交互方式。

在工业领域,计算机视觉通常用来成品完整性检测,通过工业摄像头采集信息,电脑服务器端通过对图像特征分析,对成品的完整度做出一个基本的判断,然后将判断结果发送到PLC等控制端,从而实现对良品与劣质品的区分和分离开。这极大的节省了人工成本,提高了成品检测效率。

在安防领域,计算机视觉配合大数据等新型信息技术,可是实现对大型公共场合的人流密度分析,犯罪在逃人员的追踪,交通事故的自动上报。这些都是计算机视觉的落地应用。

综上所诉,图形检测已经成为人类生活中不可或缺的一种技术,它在各个领域的广泛应用,丰富了交互形式,带了极大 经济效益。

关于OpenCV

OpenCV(Open Source Computer Vision Library)是一款计算机视觉库,它的源代码的编程语言主要是C/C ,并且他是完全开放源代码的,是一款基于BSD开放许可的计算机视觉开发框架,其源代码可以不受任何限制的用到学术活动和商业研究中。同时支持Windows,Linux,MacOS,IOS和Android平台开发,做到了对主流平台的开发支持。

OpenCV在1999年启动,主要致力于处理CPU密集型任务,是一个包括光线追踪和3D显示的计划中的一部分,最初发展的OpenCV的主要目标有四点,第一,为了避免重复工作,为推进机器视觉研究提供一套开源且优化的基础库。第二,建立一个公开的基础库,通过开发人员的学习和使用,开发人员对基础代码的认识和熟悉程度提高,代码会容易阅读,移植,转让和复用。第三,使得商业软件的开发可以不用顾虑代码授权的困扰,因为授权商业软件的二次开发可以不用开源。第四,使得OpenCV对CUDA提供支持。

在OpenCV的不断发展和迭代中,Intel主导了很多工作,OpenCV最初作为Intel公司的内部项目,随着时间一点点的发展,OpenCV的各项功能得到了不断的增强,算法的也通过许多人的优化得到了完善,OpenCV的发展时间不过仅仅十余年,就席卷了整个工业界,各大IT公司也参与了OpenCV的发展,比如机器人业界有名的Willow Garage和搜索引擎公司Google。

1999年,OpenCV项目正式立项,在随后一年,即2000年在计算机视觉与模式识别大会上公布了测试(Alpha)版本,并在随后提供了五个测试版本,OpenCV1.0版本与2006年发布。在随后的发展过程中,提供并更新了C 接口,更加容易且安全的模式,新的函数,和多种方法实现方式的优化,与此同时,OpenCV虽然以C/C 为主要编程语言,,但也提供了多种语言编程语言接口,例如python,ruby,matlab,java等。OpenCV的核心模块功能包括:二维与三维特征工具箱,运动估算,人脸识别,姿势识别,人机交互,运动理解,对象检测,移动机器人,分割与识别,视频分析,运动跟踪,图像处理,机器学习,深度神经网络。同时,OpenCV4Android也加速了OpenCV在移动领域的推行。

关于Android

Android,,中文非官方的名称为安卓,是一个基于Linux内核的开放源代码的移动操作系统,最初开发安卓的目的主要是想创建一个数码相机的先进操作系统,后来发现市场不大,再加上智能手机市场的快速成长和不断扩大,在2007年,谷歌联合84家软件硬件厂商和电信运营商成了开放手持设备联盟(OHA),随后,安卓由OHA主导开发工作。Google以Apache免费开放源代码的授权方式,发布并开放安卓的源代码,加快了安卓的普及速度。

https://developer.android.com/guide/platform/images/android-stack_2x.png安卓主要应用于触摸屏移动设备,例如智能手机,平板电脑和其他的便携式设备。根据统计数据,在2010年末,安卓在推出的第二年就称为全球第一大智能机操作系统。

图 3.1 安卓系统架构

Android平台的系统架构

Android系统[2]实际上在标准Linux内核上面增加了Java虚拟机Dalvik,但在安卓5.0版本以后使用ART取代Dalvik虚拟机,然后在上层搭建了一个Application Framework,所有的应用程序都是运行在这个Application Framework上面。

Linux内核

Android的内核是Linux内核,Linux内核提供核心服务,例如安全管理、内存管理、进程管理、网络堆栈、驱动模型,同时,Linux内核也作为连接硬件层和软件之间的抽象层,它隐藏了硬件的具体细节从而为上一层级提供统一性的服务

硬件抽象层(HAL)

安卓硬件抽象层能以闭源的形式提供硬件驱动,硬件抽象层有两个作用,第一,把Android Framework和Linux Kernel隔开,使得内核独立,让安卓不太过于依赖Linux Kernel,第二,也让Android Farmework可以不考虑驱动程序的前提下进行开发,缩短了开发周期,降低了开发适配难度。

Android Runtime

Android Runtime简称ART,是安卓操作系统上的运行环境,在安卓版本4.4作为一项测试功能对外发布,在安卓版本5.0以及以后的版本取代了传统的Dalvik虚拟机。ART本质是一种新型虚拟机,把程序的字节码转换为机器码,ART与Dalvik的不同点在于,Dalvik仅仅采用的是即时编译(JIT)技术,ART采用的是预先编译(AOT)技术和即时编译(JIT),并同时改善了性能和垃圾回收,更好的支持调试。

与此同时,ART还提供了一套核心库,核心库提供了Java API框架可支持Java编程语言的大部分功能,这也正体现了安卓应用开发多以Java语言为主。

原生C/C 库

许多的安卓系统组件和服务需要构建自己的原生代码,需要用到C/C 类的原生库,这些功能通过上一层Java API Framework提供给开发者。通常的核心库为系统C库,媒体库,界面管理,webkit渲染库等。

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图