搜档网
当前位置:搜档网 › 第2章 理解面向对象概念

第2章 理解面向对象概念

第2章   理解面向对象概念
第2章   理解面向对象概念

影像信息提取之——面向对象特征提取

同物异谱,同谱异物”会对影像分类产生的影响,加上高分辨率影像的光谱信息不是很丰富,还有经常伴有光谱相互影响的现象,这对基于像素的分类方法提出了一种挑战,面向对象的影像分类技术可以一定程度减少上述影响。 本专题以ENVI中的面向对象的特征提取FX工具为例,对这种技术和处理流程做一个简单的介绍。 本专题包括以下内容: ●面向对象分类技术概述 ● ENVI FX简介 ● ENVI FX操作说明 1、面向对象分类技术概述 面向对象分类技术集合临近像元为对象用来识别感兴趣的光谱要素,充分利用高分辨率的全色和多光谱数据的空间,纹理,和光谱信息来分割和分类的特点,以高精度的分类结果或者矢量输出。它主要分成两部分过程:对象构建和对象的分类。 影像对象构建主要用了影像分割技术,常用分割方法包括基于多尺度的、基于灰度的、纹理的、基于知识的及基于分水岭的等分割算法。比较常用的就是多尺度分割算法,这种方法综合遥感图像的光谱特征和形状特征,计算图像中每个波段的光谱异质性与形状异质性的综合特征值,然后根据各个波段所占的权重,计算图像所有波段的加权值,当分割出对象或基元的光谱和形状综合加权值小于某个指定的阈值时,进行重复迭代运算,直到所有分割对象的综合加权值大于指定阈值即完成图像的多尺度分割操作。 影像对象的分类,目前常用的方法是“监督分类”和“基于规则(知识)分类”。这里的监督分类和我们常说的监督分类是有区别的,它分类时和样本的对比参数更多,不仅仅是光谱信息,还包括空间、纹理等对象属性信息。基于规则(知识)分类也是根据影像对象的属性和阈值来设定规则进行分类。 表1为三大类分类方法的一个大概的对比。

面向对象的概念

1.面向对象的概念 面向对象(Object-Oriented)=对象(Object)+类(Class)+ 继承(Inheritance)+通信(Communication) 如果一个软件系统是使用这样4个概念设计和实现的,则将该软件系统称为面向对象的。下面给出每个概念的具体定义。 1.1 对象 从一般意义上讲,对象是现实世界中一个实际存在事物,它可以是有形的(比如一辆汽车),也可以是无形(比如一项计划)。对象构成世界的一个独立单位,它具有自己的静态特征和动态特征。静态特征即可用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。 现实世界中的任何事物都可以称作对象,它是大量的、无处不在的。不过,人们在开发一个系统时,通常只是在一定的范围(问题域)内考虑和认识与系统目标有关的事物,并用系统中的对象抽象地表示它们。所以面向对象方法在提到“对象”这个术语时,既可能泛指现实世界中的某些事物,也可能专指它们在系统中的抽象表示,即系统中的对象。我们主要对后一种情况讨论对象的概念,其定义是:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务构成。 属性和服务,是构成对象的两个主要因素,其定义是:属性是用来描述对象静态特征的一个数据项。服务是用来描述对象动态特征(行为)的一个操作序列。 一个对象可以有多项属性和多项服务。一个对象的属性和服务被结合成一个整体,对象的属性值只能由这个对象的服务存取。 在有些文献中把对象标识(OID)列为对象的另一要素。对象标识也就是对象的名字,有“外部标识”和“内部标识”之分。前者供对象的定义者或使用者用,后者为系统内部惟一的识别对象。(怎么感觉这点跟android开发里面的id是一样的,在某个文件下有编程人员定义的所有属性的id,并且是唯一的,一般不允许更改,属于系统内部分配。) 另外需要说明以下两点:第一点是,对象只描述客观事物本质的与系统目标有关的特征,而不考虑那些非本质的与系统目标无关的特征。这就是说,对象是对事物的抽象描述。第二点是,对象是属性和服务的结合体。二者是不可分的。而且对象的属性值只能由这个对象的服务来读取和修改,这就是后文将讲述的封装概念。 根据以上两点,也可以给出如下对象定义:对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用,它是一组属性和有权对这些属性进行操作的一组服务的封装体。 系统中的一个对象,在软件生命周期的各个阶段可能有不同的表示形式。例如,在分析与设计阶段是用某种OOD/OOA方法所提供的表示法给出比较粗略的定义,而在编程阶段则要用一种OOPL写出详细而确切的源程序代码。这就是说,系统中的对象要经历若干演化阶段,其表现形式各异,但在概念上是一致的,即都是问题域中某一事物的抽象表示。 1.2 类 把众多的事物归纳划分成一些类是人类在认识客观世界时经常采用的思维方法。分类所依据的原则是抽象,即:忽略事物的非本质特征,只注意那些与当前目标有关的本质特征,从而找出事物的共性,把具有共同性质的事物划分为一类,得出一个抽象的概念。例如:马、

1.2 面向对象的基本概念

1.2 面向对象的基本概念 本节着重介绍面向对象的基本概念,也对相应的面向对象的技术方法做些说明和解释。 面向对象方法学的基本原则 面向对象方法学认为:客观世界是由各种“对象”所组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,每一个对象都属于某个对象“类”,都是该对象类的一个元素。复杂的对象可以是由相对比较简单的各种对象以某种方式组成的。不同对象的相互作用就构成了我们要研究分析和构造的客观系统。 面向对象方法学认为:通过类比,发现对象间的相似性,即对象间的共同属性,这就是构成对象类的根据。 面向对象方法学认为:对于已分成类的各个对象,可以通过定义一组“方法”来说明该对象的功能,也即是:允许作用于该对象上的各种操作。对象间的相互联系是通过传递“消息”来完成的。 面向对象方法学比较自然地模拟了人类认识客观世界的方法。即应使描述问题的问题空间和解决问题的方法空间在结构上尽可能地一致。我们分析设计和实现一个系统的方法尽可能接近我们认识一个系统的方法。 1.2.1 对象、类、消息 面向对象技术是基于对象(object )概念的。下面介绍对象概念。 在现代汉语词典中,对象是行动或思考时作为目标的人或事物。 在思维科学中,对象是客观世界中具有可区分性的、能够唯一标识的逻辑单元。对象所代表的本体可能是一个物理存在,也可能是一个概念存在。 “面向对象”是计算机科学中的一个技术名词,具有其特定的技术含义。从面向对象的观点来看,现实世界是由各式各样独立的、异步的、并发的实体对象组成,每个对象都有各自的内部状态和运动规律,不同对象之间或某类对象之间的相互联系和作用,就构成了各式不同的系统。 面向对象方法是基于客观世界的对象模型化的软件开发方法。在面向对象程序设计中,所谓对象,就是一个属性(数据)集及其操作(行为)的封装体。作为计算机模拟真实世界的抽象,一个对象就是一个实际问题论域,一个物理的实体或逻辑的实体。在计算机程序中,可视为一个“基本程序模块”,因为它包含了数据结构和所提供的相关操作功能。 我们把客观世界的实体称之为问题空间的对象,任何事物都是对象。 我们用计算机解题是借助某种语言规定对计算机实体施加某种动作,以此动作的结果去映射解,我们把计算机实体称之解空间的对象。 在面向对象的程序设计中,“对象”是系统中的基本运行实体。即对象是具有特殊属性(数据)和行为方式(方法)的实体。 从动态的观点看,对象的操作就是对象的行为。问题空间对象的行为是极其丰富的,而解空间对象的行为是极其死板的。因此,只有借助于极其复杂的算法才能操纵解空间对象而得到解。面向对象语言提供了“对象”概念,这样,程序员就可以定义解空间对象。 从存储的角度来看,“对象”是一片私有存储,其中有数据也有方法。其它对象的方法

面向对象分类之图像分割

传统的基于像素的遥感影像处理方法都是基于遥感影像光谱信息极其丰富,地物间光谱差异较为明显的基础上进行的。对于只含有较少波段的高分辨率遥感影像,传统的分类方法,就会造成分类精度降低,空间数据的大量冗余,并且其分类结果常常是椒盐图像,不利于进行空间分析。为解决这一传统难题,模糊分类技术应运而生。模糊分类是一种图像分类技术,它是把任意范围的特征值转换为0 到1 之间的模糊值,这个模糊值表明了隶属于一个指定类的程度。通过把特征值翻译为模糊值,即使对于不同的范围和维数的特征值组合,模糊分类能够标准化特征值。模糊分类也提供了一个清晰的和可调整的特征描述。 对于影像分类来说,基于像元的信息提取是根据地表一个像元范围内辐射平均值对每一个像元进行分类,这种分类原理使得高分辨率数据或具有明显纹理特征的数据中的单一像元没有很大的价值。影像中地物类别特征不仅由光谱信息来刻画的,很多情况下(高分辨率或纹理影像数据)通过纹理特征来表示。此外背景信息在影像分析中很重要,举例来说,城市绿地与某些湿地在光谱信息上十分相似,在面向对象的影像分析中只要 明确城市绿地的背景为城市地区,就可以轻松地区分绿地与湿地,而在基于像元的分类中这种背景信息几乎不可利用。面向对象的影像分析技术是在空间信息技术长期发展的过程中产生的,在遥感影像分析中具有巨大的潜力,要建立与现实世界真正相匹配的地表模型,面向对象的方法是目前为止较为理想的方法。 面向对象的处理方法中最重要的一部分是图像分割。 图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。例如,可以对图像的灰度级设置门限的方法分割。值得提出的是,没有唯一的标准的分割方法。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。图像分割是从图像处理到图像分析的关键步骤,可以说,图像分割结果的好坏直接影响对图像的理解。 为后续工作有效进行而将图像划分为若干个有意义的区域的技术称为图像分割(Image Segmentation),早期的图像分割方法可以分为两大类。一类是边界方法,这种方法假设图像分割结果的某个子区域在原来图像中一定会有边缘存在;一类是区域方法,这种方法假设图像分割结果的某个子区域一定会有相同的性质,而不同区域的像素则没有共同的性质。这两种方法都有优点和缺点,有的学者考虑把两者结合起来进行研究。现在,随着计算机处理能力的提高,很多方法不断涌现,如基于彩色分量分割、纹理图像分割。所使用的数学工具和分析手段也是不断的扩展,从时域信号到频域信号处理,小波变换等等。 目前,有许多的图像分割方法,从分割操作策略上讲,可以分为基于区域生成的分割方法,基于边界检测的分割方法和区域生成与边界检测的混合方法.图像分割主要包括4种技术:并行边界分割技术、串行边界分割技术、并行区域分割技术和串行区域分割技术。

面向对象的三个基本特征讲解

面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程(OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类

都可以继承Person 类。但是Leg 类却不能继承Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface 而不是Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 概念讲解 泛化(Generalization)

面向对象程序设计基本概念

面向对象程序设计基本概念 面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。 对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。 类:类是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。 消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。 面向对象主要特征: 封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。 继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。 多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

python面向对象概念与练习试题

面向对象及练习题 1.面向对象 面向对象概念 面向对象是一种编程思想,是对现实世界中的事物进行抽象的方式。应用到代码编程设计中,是一种建立现实世界事物模型的方式。 面向对象和面向过程区别 面向过程关注的是完成工作的步骤,面向对象关注的是谁能完成工作。 面向对象是在完成工作的时候关注哪些个体能够完成对应的工作,找到对应的个体即可完成对应任务。 2.类 类的概念 类是一系列事物的统称,同类事物必定具有相同的特征。日常事物的特征根据特性分为状态和行为,对应到类中是变量和方法。 特征分类: 状态变量(成员变量) 行为方法(成员方法) 统称:类的成员 类定义语法格式 class类名: pass

说明:pass是空语句,不具有任何意义,仅为了保持程序结构完整性类名的命名规则 类名命名规范:满足大驼峰命名规则 3.对象 对象的概念 对象是类的具体表现形式,是实际存在的个体。(类是一系列事物的统称)创建对象语法格式 对象名= 类名() 注意事项 对象的创建不限制数量,一个类可以创建任意个数的对象 4.成员变量 成员变量的概念 成员变量用于描述对象的固有状态或属性。 定义成员变量语法格式(公有属性/公有变量) class 类名: def __init__(self): self.变量名1 = 值1 self.变量名2 = None

成员变量定义语法格式(独有属性/独有变量) 对象名.变量名= 值 公有变量与独有变量的区别 公有变量在__init__方法中声明,每个对象都具有该变量 独有变量在创建对象后声明,只有当前对象具有此变量 定义对象的独有变量时,如果独有变量名与公有变量名相同,视为 修改公有变量的值;如果独有变量名与公有变量名不相同,视为定 义新的独有属性 None含义是为空,表示没有具体的数据 变量的调用格式 取值:对象名.变量名 赋值:对象名.变量名= 值

遥感影像的分类处理

摘要 在面向对象的影像分类方法中,首先需要将遥感影像分割成有意义的影像对象集合,进而在影像对象的基础上进行特征提取和分类。本文针对面向对象影像分类思想的关键环节展开讨论和研究,(1) 采用基于改进分水岭变换的多尺度分割算法对高分辨率遥感影像进行分割。构建了基于高斯尺度金字塔的多尺度视觉单词,并且通过实验证明其表达能力优于经典的词包表示。最后,在词包表示的基础上,利用概率潜在语义分析方法对同义词和多义词较强的鉴别能力对影像对象进行分析,找出其最可能属于的主题或类别,进而完成影像的分类。 近些年来,随着航空航天平台与传感器技术的高速发展,获取的遥感影像的分辨率越来越高。高分辨率遥感影像在各行业部门的应用也越来越广泛,除了传统的国土资源、地质调查和测绘测量等部门,还涉及到城市规划、交通旅游和环境生态等领域,极大地拓展了遥感影像的应用范围。因此,对高分辨率遥感影像的处理分析成为备受关注的领域之一。高分辨率遥感影像包括以下三种形式:高空间分辨率(获取影像的空间分辨率从以前的几十米提高到1 至5 米,甚至更高);高光谱分辨率(电磁波谱被不断细分,获取遥感数据的波段数从几十个到数百个);高时间分辨率(遥感卫星的回访周期不断缩短,在部分区域甚至可以连续观测)。本文所要研究的高分辨率遥感影像均是指“高空间分辨率”影像。 相对于中低分辨率的遥感数据,高空间分辨率遥感影像具有更加丰富的空间结构、几何纹理及拓扑关系等信息,对认知地物目标的属性特征更加方便,如光谱、形状、纹理、结构和层次等。另外,高分辨率遥感影像有效减弱了混合像元的影响,并且能够在较小的空间尺度下反映地物特征的细节变化,为实现更高精度的地物识别和分类提供了可能。 然而,传统的遥感影像分析方法主要基于“像元”进行,它处于图像工程中的“图像处理”阶段(见图1-1),已然不能满足当今遥感数据发展的需求。基于“像元”的高分辨率遥感影像分类更多地依赖光谱特征,而忽视影像的纹理、形状、上下文和结构等重要的空间特征,因此,分类结果会产生很严重的“椒盐(salt and pepper)现象”,从而影响到分类的精度。虽然国内外的很多研究人员针对以上缺陷提出了很多新的方法,如支持向量机(Support Vector Machine,SVM) 、纹理聚类、分层聚类(Hierarchical Clustering) 、神经网络(Neural Network, NN)等,但仅依靠光谱特征的基于像元的方法很难取得更好的分类结果。基于“像元”的传统分类方法还有着另一个局限:无法很好的描述和应用地物目标的尺度特征,而多尺度特征正是遥感信息的基本属性之一。由于在不同的空间尺度上,同样的地表空间格局与过程会表现出明显的差异,因此,在单一尺度下对遥感影像进行分析和识别是不全面的。为了得到更好的分类结果,需要充分考虑多尺度特征。 针对以上问题,面向对象的处理方法应运而生,并且逐渐成为高空间分辨率遥感影像分析和识别的新途径。所谓“面向对象”,即影像分析的最小单元不再是传统的单个像元,而是由特定像元组成的有意义的同质区域,也即“对象”;因此,在对影像分析和识别的过程

面向对象图像分类

【ENVI入门系列】24. 面向对象图像分类 目录 1.概述 2.基于规则的面向对象信息提取 第一步:准备工作 第二步:发现对象 第三步:根据规则进行特征提取 3.基于样本的面向对象的分类 第一步:选择数据 第二步:分割对象 第三步:基于样本的图像分类 4.基于规则的单波段影像提取河流信息 1.概述 面向对象分类技术集合临近像元为对象用来识别感兴趣的光谱要素,充分利用高分辨率的全色和多光谱数据的空间,纹理,和光谱信息来分割和分类的特点,以高精度的分类结果或者矢量输出。它主要分成两部分过程:影像对象构建和对象的分类。ENVI FX的操作可分为两个部分:发现对象(Find Object)和特征提取(Extract features),如下图所示。

图1.1 FX操作流程示意图(*项为可选操作步骤) 这个工具分为三种独立的流程化工具:基于规则、基于样本、图像分割。 本课程分别学习基于规则的面向对象分类和基于样本的面向对象分类,以及基于规则的方法从单波段灰度影像中提取河流信息。 注:本课程需要面向对象空间特征提取模块(ENVI Feature Extraction-FX)使用许可。

2.基于规则的面向对象信息提取 该工具位置在:Toolbox /Feature Extraction/ Rule Based Feature Extraction Workflow。 数据位置:"24-面向对象图像分类\1-基于规则"。 第一步:准备工作 根据数据源和特征提取类型等情况,可以有选择地对数据做一些预处理工作。 ?空间分辨率的调整 如果您的数据空间分辨率非常高,覆盖范围非常大,而提取的特征地物面积较大(如云、大片林地等)。可以降低分辨率,提供精度和运算速度。可利用Toolbox/Raster Management/Resize Data工具实现。 ?光谱分辨率的调整 如果您处理的是高光谱数据,可以将不用的波段除去。可利用Toolbox/Raster Management/Layer Stacking工具实现。 ?多源数据组合 当您有其他辅助数据时候,可以将这些数据和待处理数据组合成新的多波段数据文件,这些辅助数据可以是DEM, lidar 影像, 和SAR 影像。当计算对象属性时候,会生成这些辅助数据的属性信息,可以提高信息提取精度。可利用Toolbox/Raster Management/Layer Stacking工具实现。

52 面向对象程序设计的基本概念

一、教学目标 1、知识与技能 (1)认识面向对象程序设计中对象、类的概念及其特征。 (2)认识面向对象程序设计中类、对象和实例的关系。 2、过程与方法 (1)能够举例说明现实世界与程序世界的对象及其特征。 (2)能够举例说明现实世界与程序世界的类及其特征。。 (3)能够画图表示类、对象和实例三者的关系。 3、情感态度和价值观 (1)能关注面向对象程序设计的基本概念。 (2)能产生对对象、类等的认识的愿望。 (3)能认识到掌握对象、类的概念是学习面向对象程序设计的前提。 二、重点难点 教学重点: (1)对象及其特征。 (2)类及其特征。。 教学难点: (1)类及其特征。 (2)类的继承。 (3)类、对象和实例的关系。 三、教学环境 1、教材处理 教材选自广东教育出版社的信息技术(选修一)《算法与程序设计》第五章第二节,本节以理论为主。面向对象程序设计涉及到一些基本的概念,认识和理解类、对象的基本概念,以及类、对象和实例之间的关系是掌握面向对象程序设计的基础,是进一步学习面向对象功能实现的的前提。内容编排尽量贯彻原教材的意图展开。 教学方法采用讲解、学生自主学习和合作学习相结合的学习方法。 2、预备知识 学生已认识面向对象程序设计的基本思想,初步了解了类、对象等概念,通过比较得知两种程序设计方法的优劣所在。有了这些基础,学习者明显产生了想进一步学习面向对象设计知识的欲望。 3、硬件要求 本节内容是纯理论,可在普通教室上,也可选在多媒体电脑教室中完成,以供学生实践。 4、所需课时:1课时 四、教学过程 导入:1、简要介绍本节课的教学目标:紧密联系现实生活中的实例理解面向对象程序设计中的主要概念如对象、类及其关系,知道这些概念在面向对象思想中的重要性。 2、联系实际生活提问导入:现实生活中我们经常说到“类”这个概念,如人类、花类、鸟类等等。“人类”又可分为黑人、黄种人、白人等小类,这些小类可以具体到某个人如张三、李四、王五等。前面我们提到计算机软件的开发过程就是人们使用计算机语言将现实世界映射到计算机世界的过程。那么这些概念在面向对象程序设计中是采用怎样的机制来实现映射的呢?这节课我们来作充分的探讨。 (一)对象

面向对象影像分类(样本模式)

面向对象影像分类(基于样本) 1、进行尺度为100的影像分割。 2、在Class Hierarchy中点右键,选择Insert class,依次建立四个类:房屋、道路、湖泊、草地。 3、编辑特征空间:选择菜单“Classification -> Nearest Neighbor -> Edit Standard NN Feature Space”,双击左边的特征列表中的特征,选择以下一些特征,如下图:

4、应用分类规则:选择菜单“Classification -> Nearest Neighbor -> Apply Standard NN to Classes”把它插入到类描述中,选择左边框中的类,单击,即可将该类加入到右边的框中,如下图: 点击OK后,在Class Hierarchy中双击一个类,如草地,可以看出分类特征已经添加到

该类中,如下图: 5、选择样本:选择菜单View -> toolbar -> sample,打开样本导航器,如下图: 选择按钮,打开样本编辑器,如下图:

6、选择类的样本:从样本编辑器中的Active Class中选择需要选择样本的类,如草地,在分割图上点击样例对象,当你单击一个类时,它的特征值在每个列出的特征被以高亮度的红色指示显示,这样可以使您对比不同对象它们的相关特征值,如下图:

该类的样本,选择后样本编辑器会成为如下的状态: 依次为所有的类选择足够的样本。 7、执行分类:在Process Tree中选择Append New,Algorithm中选择Basic Classification -> Classification,在Algorithm Parameters的Active Classes中选择“草地、道路、房屋、湖泊”, 设置如下图:

监督分类和面向对象分类流程

高分一号城市绿地现状调查与分析实现教程 本文将介绍基于高分一号影像数据的城市绿地信息提取的实现步骤,下图是主要的操作流程(图一) 图一 首先对高分影像进行预处理,其次使用监督分类法和面向对象分类法对城市绿地进行分类,然后对分类出来的影像进行矢量化处理,最后另其在arcGIS中进行统计分析,得出武汉市城市绿地的现状,下面是具体步骤。 第一章数据预处理 因为处理数据是高分一号影像,本文处理软件为ENVI5.1,因为ENVI5.2以下版本不能对高分一号直接进行处理,所以需要安装r6补丁,将下面两个文件直接粘贴到软件所在位置(图二),然后就可以打开高分影像了(图三)

图二 图三 为了加快数据处理的速度,本文是选择先进行辐射定标然后将图像裁剪在进行后续的操作,预处理流程如下图(图四): 图四 1.1 辐射校正 分为辐射定标和大气校正

(1)打开数据:ENVI-Open As-CRESDA-GF-1,选择处理的影像,打开XML后缀文件; (2)辐射定标:选择Toolbox->Radiometric Correction-> Radiometric Calibration,选择待处理的高分数据 弹出Radiometric Calibration对话框,进行如图设置。对于多光谱影像,点击Apply FLAASH Setting 设置成默认值;如果是对全色影像进行辐射定标,那么Calibration则是Reflectance,Out Put Type 为UInt,Scale Factor为1000,如下图:

高分一号多光谱影像参数设置 高分一号全色影像参数设置 (3)大气校正:选择Toolbox->Radiometric Correction->Atmospheric Correction Module->FLAASH Atmospheric Correction,弹出FLAASH Atmospheric Correction Model Input Parameters对话框。要注意,全色影像不做大气校正,多光谱影像则需要做大气校正处理。

比较四种典型面向对象方法的异同

普 通 本 科 毕 业 小 论 文 题目:比较四种典型面向对象方法的异同 学院软件与通信工程学院 学生姓名张伟聪学号 0123992 专业软件工程届别 125 指导教师廖汉成 二O一四年九月二十七日

一、引言 随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件提出了更高的要求。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期,发展软件可靠性、可扩充性和可重用性迫使软件界人士不断研究新方法、新技术,探索新途径。 面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。面向对象程序设计方法起源于六十年代末期的语言SIMULA’67,到了七十年代末期,软件行业正受到软件危机的困扰,结构化的开发方法不能够很好地解决软件危机。面向对象语言Smalltalk的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象也和开发方法开始结合,出现了面向对象的开发方法。 自80年代后期以来,相继出现了多种面向对象开发方法,现将其中四种典型的方法作一个简介和比较。面向对象方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。 一.Booch方法 Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域。Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。OOD[3](Object Oriented Design)方法是Grady Booch从1983年开始研究,1991年后走向成熟的一种方法。OOD主要包括下述概念:类(class)、对象(object)、使用(uses)、实例化(instantiates)、继承(inherits)、元类(meta class)、类范畴(class category)、消息(message)、域(field)、操作(operation)、机制(mechanism)、模块(module)、子系统(subsystem)、过程(process)等。其中,使用及实例化是类间的静态关系,而动态对象之间仅有消息传递的连接。元类是类的类。类范畴是一组类,它们在一定抽象意义上是类同的。物理的一组类用模块来表达。机制是完成一个需求任务的一组类构成的结构。 Booch方法的过程包括以下步骤: (1)在给定的抽象层次上识别类和对象; (2)识别这些对象和类的语义; (3)识别这些类和对象之间的关系; (4)实现类和对象;

遥感的面向对象分类法

遥感的面向对象分类法 传统的基于像素的遥感影像处理方法都是基于遥感影像光谱信息极其丰富,地物间光谱差异较为明显的基础上进行的。对于只含有较少波段的高分辨率遥感影像,传统的分类方法,就会造成分类精度降低,空间数据的大量冗余,并且其分类结果常常是椒盐图像,不利于进行空间分析。为解决这一传统难题,模糊分类技术应运而生。模糊分类是一种图像分类技术,它是把任意范围的特征值转换为 0 到 1 之间的模糊值,这个模糊值表明了隶属于一个指定类的程度。通过把特征值翻译为模糊值,即使对于不同的范围和维数的特征值组合,模糊分类能够标准化特征值。模糊分类也提供了一个清晰的和可调整的特征描述。对于影像分类来说,基于像元的信息提取是根据地表一个像元范围内辐射平均值对每一个像元进行分类,这种分类原理使得高分辨率数据或具有明显纹理特征的数据中的单一像元没有很大的价值。影像中地物类别特征不仅由光谱信息来刻画的,很多情况下(高分辨率或纹理影像数据)通过纹理特征来表示。此外背景信息在影像分析中很重要,举例来说,城市绿地与某些湿地在光谱信息上十分相似,在面向对象的影像分析中只要明确城市绿地的背景为城市地区,就可以轻松地区分绿地与湿地,而在基于像元的分类中这种背景信息几乎不可利用。面向对象的影像分析技术是在空间信息技术长期发展的过程中产生的,在遥感影像分析中具有巨大的潜力,要建立与现实世界真正相匹配的地表模型,面向对象的方法是目前为止较为理想的方法。面向对象的处理方法中最重要的一部分是图像分割。 随着对地观测任务逐渐精细化,高分辨率遥感卫星影像的应用越来越广泛。这对遥感影像分类方法提出了挑战。已有的研究表明:基于像元的高分辨率遥感影像分类存在明显的限制。近年来,面向对象影像分析(Object-Based ImageAnalysis,OBIA)在高分辨率遥感影像处理中渐露头角,被认为是遥感与地理信息科学发展的重要趋势。本文针对面向对象影像分类(Object-Based Image Classification,OBIC)方法中的若干问题开展研究。主要研究内容与结论包括: 1)模糊遥感影像分割算法研究 针对当前影像分割算法应用于模糊影像时产生过渡区对象的问题,设计了过渡区对象识别方法。对简单地物模糊影像和复杂地物模糊影像进行实验发现:提出的算法能够有效识别过渡区对象。 2)代表地物最佳分割尺度研究 针对多参考对象情况下的地物最佳分割尺度选择问题,设计了基于对象内部同质性加权

面向对象的三个基本特征和概念

面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承 Person 类。但是 Leg 类却不能继承 Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字 Interface 而不是 Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、 str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

监督分类和面向对象分类流程

监督分类和面向对象分类流程 高分一号城市绿地现状调查与分析实现教程将介绍基于高分一号影像数据的城市绿地信息提取的实现步骤,下图是主要的操作流程图一首先对高分影像进行预处理,其次使用监督分类法和面向对象分类法对城市绿地进行分类,然后对分类出来的影像进行矢量化处理,最后另其在arcGIS中进行统计分析,得出武汉市城市绿地的现状,下面是具体步骤。第一章数据预处理因为处理数据是高分一号影像,处理软件为,因为以下版本不能对高分一号直接进行处理,所以需要安装r6补丁,将下面两个文件直接粘贴到软件所在位置,然后就可以打开高分影像了图二图三为了加快数据处理的速度,是选择先进行辐射定标然后将图像裁剪在进行后续的操作,预处理流程如下图:

图四辐射校正分为辐射定标和大气校正打开数据:ENVI-Open As-CRESDA-GF-1,选择处理的影像,打开XML后缀文件;辐射定标:选择Toolbox->Radiometric Correction-> Radiometric Calibration,选择待处理的高分数据弹出Radiometric Calibration对话框,进行如图设置。对于多光谱影像,点击Apply FLAASH Setting 设置成默认值;如果是对全色影像进行辐射定标,那么Calibration则是Reflectance,Out Put Type 为UInt,Scale Factor为1000,如下图:高分一号多光谱影像参数设置高分一号全色影像参数设置大气校正:选择Toolbox->Radiometric Correction->Atmospheric Correction Module->FLAASH Atmospheric Correction,弹出FLAASH Atmospheric Correction Model Input Parameters对话框。要注意,全色影像不做大气校正,多光谱影像则需要做大气校正处理。

面向对象技术(答案)

●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。 (2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息 B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息 D.发送与接收消息的通信机制与传统的子程序调用机制不同 正确答案:B 【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。 ●面向对象技术中,对象是类的实例。对象有三种成份:____(3)____、属性和方法(或操作)。 (3) A. 标识B. 规则C. 封装D. 消息 正确答案:A 解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。 ●在面向对象技术中,类属是一种__(1)__机制。一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。 (1)A.包含多态B.参数多态C.过载多态D.强制多态 (2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关 (3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关 解析:在面向对象技术中,对象在收到信息后要予以响应。不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。参数多态应用比较广泛,被称为最纯的多态。这是因为同一对象、函数或过程能以一致的形式用于不同的类型。包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。类型的变换可在编译时完成,通常是隐式地进行,当然也可以在动态运行时来做。类属类(generic class)仅描述了适用于一组类型的通用样板,由于其中所处理对象的数据类型尚未确定,因而程序员不可用类属类直接创建对象实例,即一个类属类并不是一种真正的类类型。类属类必须经过实例化后才能成为可创建对象实例的类类型。类属类的实例化是指用某一数据类型替代类属类的类型参数。类属类定义中给出的类型参数称为形式类属参数,类属类实例化时给出的类型参数称为实际类属参数。如果类属类实例化的实际类属参数可以是任何类型,那么这种类属类称为无约束类属类。然而在某些情况下,类属类可能要求实际类属参数必须具有某些特殊的性质,以使得在类属类中可应用某些特殊操作,这种类属类称为受约束类属类。

相关主题