,这样就降低了程序的复杂性。选择应用于每一种情形的特定的动作(specificaction)(即方法)是编译器的任务,程序员无需手工进行选择。你只需记住并且使用通用接口即可。
如果用得当,在由多态性、封装性和继承性共同组成的编程环境中可以写出比面向过程模型环境更健壮、扩展性更好的程序。精心设计的类层级结构是重用你花时间和努力改进并测试过的程序的基础,封装可以使你在不破坏依赖于类公共接口的代码基础上对程序进行升级迁移,多态性则有助于你编写清楚、易懂、易读、易修改的程序。
除了面向对象特性外,Java还具有其它的特点。
3.2Java的特性
作为一种程序语言,Java拥有许多重要的特性:简单的、面向对象的、网络的、解释的、健壮的、安全的、可移植的、高性能的、多线程以及动态性。
前面已对面向对象特性做了具体的说明,下面针对其它的特性加以说明。
1.简单性:Java语言通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有40KB左右,加上标准类库和线程的支持也只有215KB左右。库和线程的支持也只有215KB左右。
2.网络性:Java本身等于就是通过学习网络而产生的,它的许多功能与应用都是与网络相关,从最初的确良Applet、简化的Socket、交互式的JSP/Servlet网络程序到今日热门的WebSerivice等,都注定了Java在网络相关的领域占有一席之地。事实上,Java应用最多的领域也正是网络服务这一块。
3.解释执行:Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。
4.健壮性:Java将C/C++中一些功能强大但不容易掌握的功能去除了。以指针功能为例,即使是有经验的开发人员在使用指针功能时也得小心翼翼,避免编写出使程序崩溃的错误,诸如此类的功能在Java中被去除,为的是让Java在使用时更为简单,编写出来的程序更为健壮。
5.安全性:用于网络、分布环境下的Java必须要防止病毒的入侵。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用"特洛伊"木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
6.可移植性:又可称为独立于平台性。是指无需修改程序便能够运行在不同的计算机环境中。Java程序被编译成一种名为字节码的文件,字节码可被任何带有Java解释器的操作系统、软件或设备运行。
7.高性能:一般情况下,可移植性,稳定性和安全性几乎总是以牺牲性能为代价的,解释型语言的执行效率一般也要低于直接执行源码的速度。但Java所采用的措施却很好的弥补了这些性能差距。Java字节码格式的设计充分考虑了性能的因素,其字节码的格式非常简单,这使得经由Java解释器解释执行后可产生高效的机器码。Java编译器生成的字节码和机器码的执行效率相差无几。据统计,Java字节码的执行效率非常的接近于由C和C++生成的机器码的执行效率。
8.多线程:多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
9.动态性:Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。
3.3Java语言的前景
Java语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用:
1.所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等;
2.计算过程的可视化、可操作化的软件的开发;
3.动态画面的设计,包括图形图像的调用;
4.交互操作的设计(选择交互、定向交互、控制流程等);
5.Internet的系统管理功能模块的设计,包括Web页面的动态设计、管理和交互操作设计等;
6.Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件);
7.与各类数据库连接查询的SQL语句实现;
8.进行手机通讯和其他的一些嵌入式的开发(比如手机和网络游戏);
9.其它应用类型的程序。
4Java语言实现图像处理
4.1图像增强技术
数字图像的增强是图像处理中的一个重要研究内容之一,是图像处理的一项基本技术。图像增强是指按特定的需要突出一幅图像的某些信息,同时,削弱或除去某些不需要的信息的处理方法。
图像增强在人眼对图像的识别中很重要。人眼有这样一视觉特性:由人眼的视觉和人的心理特性可知,变化幅度较大,细节丰富的区域容易引起人眼的注意,而变化平坦的区域则不容易注意。在人们对视觉的研究中,进行过如下实验,将两幅图同时放在测试者的视野中,其中一幅有黑色线条,另一幅全部都为白色,用仪器分别记录下眼睛注视两幅图的时间,结果表明了人眼有70%的时间在注视带线条的那一幅,这说明变化剧烈的图像更吸引人的注意力,对灰度图像而言,人眼会将注意力集中在灰度值变化大的区域。根据人眼的这一视觉特性,图像处理中对灰度图像的增强就是为了解决这一视觉上的障碍。
图像增强的方法分为两大类:空间域方法和频率域方法。
空间域增强是指增强构成图像的像素。空间域方法是直接对这些像素操作的过程。空间域处理可由下式定义:
(4.1)
其中是增强处理前的图像函数,是增强处理后的图像函数,是对的一种操作,其定义在的邻域。式(4.1)可用图4.1表示。
图4.1空间域方法示意图
频率域方法是在图像的某种变换域内对图像的变换值进行运算,如表示增强处理前的图像函数,表示空间运算函数,增强处理后的图像函数是由和的卷积的,即
(4.2)
根据卷积理论,在频域中有下面的变换关系
(4.3)
这里、和分别表示、和的傅立叶变换,称为传递函数。
在实际应用中,可根据需要先对图像函数进行傅立叶变换,并选定传递函数,然后由式(4.3)计算出,最后通过傅立叶反变换得出增强处理后的图像函数,即
(4.4)
4.1.1灰度变换
如果一幅图像灰度的对比度差,图像的质量就不好。为了改善图像灰度的对比度,可以对图像中样点的灰度进行刻度尺方面的改变。假设和分别表示原始图像及增强处理后图像像素的灰度。这样使原始图像的像素灰度转换成增强后图像对应像素的灰度转换关系的一般表达式为
(4.5)
线性灰度变换的一般表达式
(4.6)
其中:a为图像的对比度,如果a>1,对比度增强,如果a<1,对比度减弱。
b为图像的亮度,如果b>0,亮度增强,如果b<0,亮度降低。
下面来看一下线性灰度变换的Java代码实现,如下只列出如何实现算法的代码。
red=(int)(a*red+b);
green=(int)(a*green+b);
blue=(int)(a*blue+b);
if(red>=255)
{
red=255;
}
if(green>=255)
{
green=255;
}
if(blue>=255)
{
blue=255;
}
a是调整图像对比度的变量,b是调整图像亮度的变量。由于R、G、B分量空间范围是0~255,所以需设置一个限定条件,防止越界。
从图4.2中可以清晰的对比出经线性变换后的图像更容易观察出病灶,进而减少误诊率。
图4.2左图为原始图像,右图为经线性灰度变换后图像
上述所讨论的线性变换为正比变换,下面简要说明一下反比变换,在某些情况下,反比变换得到的图像更容易观察出病变。
灰度级范围为[0,L-1]的图像反转变换的表达式为:
(4.7)
其中:和分别表示处理前后的像
上一篇:
java图书管理系统毕业设计+源码(论文和程序)
下一篇:
试题库管理系统毕业论文