ImageVerifierCode 换一换
格式:DOCX , 页数:44 ,大小:4.39MB ,
资源ID:20106376      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20106376.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于位图的数字图像处理系统软件学院本科学位论文.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于位图的数字图像处理系统软件学院本科学位论文.docx

1、基于位图的数字图像处理系统软件学院本科学位论文 论文编号:安阳师范学院本科学生毕业论文基于位图的数字图像处理系统作者 王* 系(院) *学院 专业 信息管理与信息系统年级 2006级2班 学号 * 论文成绩 指导教师 吴亮 日期 2010年5月 学生诚信承诺书本人郑重承诺:所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得安阳师范学院或其他教育机构的学位或证书所使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。签名:日期:论文使用授权

2、说明本人完全了解安阳师范学院有关保留、使用学位论文的规定,即:学校有权保留送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。签名:导师签名:日期:目 录(自动生成)前 言 11 概述 21.1课题设计的背景和意义 21.2 数字图像处理的方法概要与应用领域 21.2.1 数字图像处理的方法概要 21.2.2数字图像处理的应用领域 31.3数字图像系统简介 32 数字图像处理系统开发技术基础 42.1 C+语言优点 42.2 VC+平台简介 52.3 MFC技术简介 52.3.1 封装 52.3.2继承 62.3.3虚拟函数和动态

3、约束 62.4 MDI应用程序的构成 73 需求分析 73.1 系统功能需求分析 73.2 系统处理流程分析 84 系统总体设计 94.1系统功能模块划分 94.2类的设计 94.2.1对话框类 94.2.2 CMyDIB、CBmpShow、CRectTrackerEx类 44.2.3系统框架类 45 系统的详细设计 45.1文件模块的设计 45.2 图像编辑模块 45.3图像处理模块 45.3.1图像的点运算 145.3.2图像的几何运算 175.3.3图像的正交变换 195.3.4图像的增强和复原 195.3.5图像边缘检测与分割 45.3.6图像编码 235.4系统调试 24结束语 25

4、参考文献 25 基于位图的数字图像处理系统王伟(安阳师范学院 人文管理学院, 河南 安阳 455002)摘 要:随着信息技术的蓬勃发展,尤其是计算机技术的日新月异,为数字图像处理的发展提供了广阔的空间。该数字图像处理系统是基于Windows平台的图像处理系统,实现了对灰度级图像的编辑,可以进行图像导入和导出,视图设置,可以调整图片尺寸,旋转和翻转图片,图片增强优化,图像边缘检测与分割,图像编码以及打印输出图片。本文主要介绍了数字图像处理系统的设计和实现过程,系统设计运用MFC的设计思想,通过VC+实现系统框架,简化了软件的开发,提高了软件系统的灵活性、可扩展性和重用性。同时系统所有的操作设计得

5、十分简单方便,无需具备有专业的知识,也能对图片完成编辑操作。(摘要写作注意:摘要主要说明自己做了什么工作,用到那些技术,主要功能简单介绍,有什么意义。避免冗长琐碎的介绍、口语化介绍。)关键词:VC+;MFC;灰度级图像;图像编辑 (三到五个) 前 言数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像

6、的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的

7、诞生。在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Topography)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类做出了划时代的贡献。 与此同时,图像处理技术在许多应用领域

8、受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景远大的新型学科。 随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。概述1.1课题设计的背景和意义所谓图像处理,就是对图像信息进行加工以满足人的视觉心理或应用需求的行为9。视觉是人类从大自然中获取信息的最主要的手段。据统计,在人类获取的信息中,视觉信息约占60,听觉信息约占20,其他的如味觉信息、触觉信息等加起来约占20。由此可见视觉信息对人类的重要性

9、,而图像正是人类获取视觉信息的主要造径。所谓“图”,就是物体透射或者反射光的分布;“像”是人的视觉系统接收图的信息而在大脑中形成的印象或认识。前者是客观存在的,而后者是人的感觉,图像就是两者的结合。随着科学技术的发展和人民生活水平的提高,数字摄像机的出现和数字图像处理技术的发展,在日新月异的数字化时代中,越来越引起人们的广泛关注,数字图像处理已经成为必备的基础知识。近几十年来由于计算机技术的蓬勃发展,图像处理技术也得到了空前的发展和应用。目前,图像处理技术已经广泛应用于工业、军事、医学、交通、农业、天气预报、银行、超市、重要部门的监控报警系统、可视电话、网络传输等等领域,成为各个学科学习和研究

10、对象。随着图像处理技术的广泛应用,学习和掌握这门科学显得格外重要,图像处理已经成为信息技术相关领域的核心课程。1.2 数字图像处理的方法概要与应用领域1.2.1 数字图像处理的方法概要图像处理的方法多种多样,般可分为图像变换、图像增强和复原、图像分割、图像压缩编码、图像描述和图像识别等几类11:1)图像变换由于图像阵列很大,直接在空间域中进行处理,涉及的计算量很大。利用正交变换(如傅里叶变换、余弦变换等)的性质和特点,将图像变换到频率域中进行处理,不仅可减少计算量,而且可获得更有效的处理,如博里叶变换可在领域中进行数字滤波处理。目前新兴研究的小波交换在时域和频域中都具有良好的局部化特性,它在图

11、像处理中也有着广泛而有效的应用。该部分主要研究各种变换模型和处理方法。2)图像增强和复原图像增强和复原的目的都是为了提高图像的质量。图像增强。利用各种数学方法和变换手段提高图像中目标与非目标(如背景)的对比度与清晰度,达到突出目标,有效地表示和提示图像,以利于人或机器进行分析处理的目的。该部分主要研究各种增强模型和处理方法。图像复原。在景物成像过程中,由于成像设备与物体的相对运动、介质散射、系统畸变(如成像系统的变焦、成像器材的固有缺陷)、噪声干扰等因素会造成图像质量降低,称之为“退化”,典型现象是图像模糊。使退化的图像恢复本来面目,真实反映原景物图像的处理,称为图像复原。该部分主要研究各种校

12、正模型和处理方法。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;强化低频分量,可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般而言,应根据降质过程建立“降质模型”再采用某种滤波方法,恢复或重建原来的图像。3)图像压缩编码把数字化的图像数据按一定规则进行排列或运算的过程称为图像编码。内于图像的数据量很大,存储要占很大的空间,传输也要花费不少时间,为此利用图像本身的内在特性(如像素灰度值之间的相关性),按某种特殊方式编码,以压缩总的信息量,称之为图像压缩编码。该部分主要研究各种高效压缩编码方法。压缩可以在不失真的前

13、提下获得,也可以在允许的失真条件进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。4)图像分割图像分割是数字图像处理中的关键技术之。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一。5)图像描述图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区

14、域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。1.2.2数字图像处理的应用领域图像信息是人类主要的信息来源之一,图像处理的应用领域也涉及到人们工作生活中的方方面面。主要应用可归纳为以下几个方面:(1)医用图像处理。医学上不论是基础研究还是临床应用,都是图像处理种类极多的领域。例如生物医学的显微图像的处理分析,如红白细胞和细菌,染色体分析;临床诊断中X光图像的鉴别、超声波图像(B超)的分析、眼底照片的分析等都是医疗辅助诊断的重要手段,尤其是计算机层析成像技术(CT),可以获得人

15、体剖面图,使肌体病变特别是肿瘤的诊断起到了革命性的变化,近年来出现的核磁共振CT,使人体免受各种硬射线的伤害,而且图像更为清晰。(2)遥感图像的处理。飞机或人造卫星传送来的遥感图像,由于各种原因图像质量不是很好,必须在成像、存储、传输、判读过程中进行各种数字处理与分析(如辐射校正、几何畸变校正、多光谱统计信息分类等),并将其变为可视的资源信息或气象信息,如大气预报中的卫星云图。目前遥感技术已在资源调查、灾害监测、农业规划、城市规划、环境保护等方面得到了广泛的应用。(3)文字的识别与图纸的判读。文字与图纸是科技信息的主要传输手段。文字与图纸在图像处理中都是以最简单的二值图像形式出现的。文字识别的

16、应用包括手写体文字的识别、图文混合中文字的识别等,如邮政编码的自动识别,计算机光笔输入,经扫描仪扫描的文字材料是以图像文件的形式保存,如何将其转变成文本文件等等。目前此类应用技术已比较成熟,如OCR软件等。图纸的判读则涉及到各种逻辑图和机械设计图的自动读取问题,其中也包括图纸上的文字识别问题(即图文混合下的文字识别)。(4)工业领域的应用。产品外观检测与筛选,表面缺陷的自动检测,组装与流水线上的自动化,工业材料的质量检验。(5)农业上的应用。包括农产品色度的检测(如鉴别水果成熟度),农牧产品,作物的表血形状和特征参数的测定。(6)其他。指纹识别、影视中的特效等。1.3数字图像系统简介数字图像处

17、理系统是一款简单而又实用的灰度级图像处理软件,是基于Windows平台的应用程序,利用Visual C+6.0的编译环境提高了系统的开发速度,实现数字图像的查看与编辑操作。主要内容有:图像文件的打开和保存,实现了对灰度级图像的操作。图像的几何变换,实现对图像文件的旋转、缩放、以及镜像处理。图像增强和复原,实现对降质的图像进行改善处理和提高图像质量的逼真度。图像的边缘检测和分割,产生更适合人观察和识别的图像。图像编码,对图像采用不同的表达方法以减小表示图像所需的数据量。2 数字图像处理系统开发技术基础2.1 C+语言优点C语言是一个面向对象的语言,使用C编写的代码更加简捷、高效,更具可维护性和可

18、重用性。C+语言的优点主要有以下几点: 1、使用new和delete进行动态内存分配和释放 运算符new和delete是C新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new比使用malloc()有以下的几个优点: (1)、new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。 (2)、它自动地返回正确的指针类型,不用进行强制指针类型转换。 (3)、可以用new对分配的对象进行初始化。 2、使用inline内连函数替代宏调用 对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码

19、执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏: define abs(a) (a)0?(a):(a), 当使用abs(I)时,这个宏就会出错。 所以在C中应该使用inline内连函数替代宏调用,这样即可达到宏调用的功能,又避免了宏调用的弊端。使用内连函数只需把inline关键字放在函数返回类型的前面。例如: inline int Add(int a,int b);声明Add()为内连函数 这样编译器在遇到Add()函数时,不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。 3、使用函数重载 在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C中,函

20、数名相同而参数不同的两个函数被解释为重载。例如: void PutHz(char *str); /在当前位置输出汉字 void PutHz(int x,int y,char *str); 在x,y处输出汉字 使用函数重载可以帮助程序员应付更多的复杂;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。 4、使用引用(reference)代替指针进行参数传递 在C语言中,如果一个函数需要修改用作参数的变量值的时候 ,参数应该声明为指针类型。例如: void Add(int *a) (*a)+; 但是对于复杂的程序,使用指针容易出错,程序也难以读懂。在C中,对于上述情况 可以使

21、用引用来代替指针,使程序更加清晰易懂。引用就是对变量取的一个别名,对引用进行操作,就相当于对原有变量进行操作。例如使用引用的函数定义为:void Add(int &a) (a+;); /a为一个整数的引用 5、使用“类”对数据进行封装 C语言是模块化的程序语言,通过函数的使用和文件的单独编译实现了一定的数据封装功能。但C通过使用“类”的强大功能,在数据封装、继承等很多的方面比C做得更好。通过使用“类”把数据和对数据的所有操作集合封装在一起,建立了一个定义良好的接口,使程序员在使用一个类的时候可以只关心它的使用,而不必关心它的实现。 6、类模版 类模版使得程序员在设计一个类时,可以将数据类型作为

22、类的参数,从而定义一个类属类。作为参数的类型既可以是c+语言提供的基本类型与复合数据类型,也可以是程序员自定义的类类型。类属类的主要用途是定义包容数据结构。利用类模版,以此就可以定义出具有共性(除类型参数除外、其余全相同)的一组类。即通过使用类模版,可使得所定义类中的某些数据成员、某些成员函数的参数、某些成员参数的返回值都可以使任意类型的(包括系统预定义类型以及用户自定义类型),从而使得一段程序可用于处理多种不同类型的对象14。2.2 VC+平台简介VC+是在Windows平台下构建32位应用程序的强大而又复杂的开发工具,是目前世界上使用非常广泛的工具之一。VC+的应用非常广泛,从桌面应用程序

23、到服务器端软件,从系统软件到应用软件,从单机程序到分布式应用程序,从图形图像处理到游戏开发,VC+无所不在 6。VC+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。VC+ Developer Studio 包含有编写程序源代码的编辑器,设计用户界面(菜单、对话框、图标等)的资源编辑器,建立项目配置的项目管理器,检查程序错误的集成调式等工具,同时,它还提供了功能强大的应用程序向导AppWizard和类向导ClassWizard工具。AppWizard用于生成各种不同类型的具有Windows界面风格的应用程序

24、的基本框架,在生成应用程序框架后,使用ClassWizard便可轻松完成创建新类,映射消息、定义消息处理函数、重载虚函数等操作1。2.3 MFC技术简介MFC (Microsoft Foundation Class Library,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C+类的集合,是一套面向对象的函数库,以类的方式提供给客户使用。利用这些类可以有效的帮助程序员完成Windows应用程序的开发。MFC中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程

25、序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Microsoft Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑7。2.3.1 封装构成MFC框架的是MFC类库。MFC类库是C+类库。这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等,分述如下

26、。(1)对Win32应用程序编程接口的封装用一个C+ Object来包装一个Windows Object。例如:class CWnd是一个C+ window object,它把Windows window(HWND)和Windows window有关的API函数封装在C+ window object的成员函数内,后者的成员变量m_hWnd就是前者的窗口句柄。(2)对应用程序概念的封装使用SDK编写Windows应用程序时,总要定义窗口过程,登记Windows Class,创建窗口等等。MFC把许多类似的处理封装起来,替程序员完成这些工作。另外,MFC提出了以文档-视图为中心的编程模式,MFC类

27、库封装了对它的支持。文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。(3)对COM/OLE特性的封装OLE建立在COM模型之上,由于支持OLE的应用程序必须实现一系列的接口(Interface),因而相当繁琐。MFC的OLE类封装了OLE API大量的复杂工作,这些类提供了实现OLE的更高级接口。(4)对ODBC功能的封装以少量的能提供与ODBC之间更高级接口的C+类,封装了ODBC API的大量的复杂的工作,提供了一种数据库编程模式。2.3.2继承 首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。这些类中,最重要的类是CObject和CCmd

28、Target。CObject是MFC的根类,绝大多数MFC类是其派生的,包括CCmdTarget。CObject 实现了一些重要的特性,包括动态类信息、动态创建、对象序列化、对程序调试的支持等等。所有从CObject派生的类都将具备或者可以具备CObject所拥有的特性。CCmdTarget通过封装一些属性和方法,提供了消息处理的架构。MFC中,任何可以处理消息的类都从CCmdTarget派生。针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。这些对象包括以下种类:窗口对象,基类是CWnd;应用程序对象,基类是CwinThread;文

29、档对象,基类是Cdocument,等等。程序员将结合自己的实际,从适当的MFC类中派生出自己的类,实现特定的功能,达到自己的编程目的。2.3.3虚拟函数和动态约束 MFC以“C+”为基础,自然支持虚拟函数和动态约束。但是作为一个编程框架,有一个问题必须解决:如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。例如,CWnd封装 Windows窗口对象时,每一条Windows消息对应一个成员函数,这些成员函数为派生类所继承。如果这些函数都设计成虚拟函数,由于数量太多,实现起来不现实。于是,MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动

30、态约束问题。这样,通过虚拟函数和消息映射,MFC类提供了丰富的编程接口。程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。MFC编程框架将在适当的时候、适当的地方来调用程序的代码。MFC实现了对应用程序概念的封装,类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对程序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SDI应用程序的模板,MDI应用程序的模板,规则DLL应用程序的模板,扩展DLL应用程序的模板,OLE/ACTIVEX应用程序的模板等等。总之,MFC封装了Win32 API,OLE API,ODBC

31、 API等底层函数的功能,并提供更高一层的接口,简化了Windows编程。同时,MFC支持对底层API的直接调用。MFC提供了一个Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。2.4 MDI应用程序的构成用AppWizard产生一个MDI工程Jia(无OLE等支持),AppWizard创建了一系列文件,构成了一个应用程序框架。这些文件分四类:头文件(.h),实现文件(.cpp),资源文件(.rc),模块定义文件(.def),等。从CWinApp、CDocument、CView、CMDIFrameWnd、CMDIChildWnd类对应地派生出CJiaApp、CJiaDoc、CJiaView、CMainFrame、CChildFrame五个类,这五个类的实例分别是应用程序对象、文档对象、视对象、主框架窗口对象和文档边框窗口对象。主框架窗口包含了视窗口、工具条和状态栏。对这些类或者对象解释如下。(1)应用程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1