基于JCreator的Java图形图象增强分割处理技术的实现与应用

基于JCreator的Java图形图象增强分割处理技术的实现与应用
基于JCreator的Java图形图象增强分割处理技术的实现与应用

摘要

随着计算机技术的迅速发展,数字图像处理技术在医学领域的研究和应用日益深入和广泛。现代医学已越来越离不开医学图像处理技术。医学图像处理技术在临床诊断、教学科研等方面发挥了重要的作用。计算机图像处理技术与影像技术的结合从根本上改变了医务人员进行诊断的传统方式。充分地利用这些技术可以提高诊断的正确性和准确性,提高诊断效率,降低医疗成本,可以更加充分地发挥各种医疗设备的功能。而且,随着数字化、智能化进程的深人,图像处理技术在医疗卫生领域将会有更加广阔的应用前景。

Java是Sun公司推出的一种面向对象编程语言。Java非常适合于企业网络和Internet环境,现已成为Internet中最受欢迎、最有影响的编程语言之一。目前国内使用Java语言开发的图像处理系统比较少,这也增加了这方面的研究价值。

本文首先对图像增强和图像分割中的几种算法进行了介绍,包括线性灰度变换,伪彩色处理,平滑处理,中值滤波,阈值分割,边缘检测等。然后用Java语言对上述各算法编程实现,并设计Java GUI(图形用户界面)用来显示图像处理的结果,以及创建一个数据库用于存储医学图像。

关键词:医学图像;图像增强;图像分割;面向对象

Abstract

As the puter technique’s quickly development, the image process technique having been more deeply and widely in the use and study of medical science. The modern medical science can not work well without the medical image processing technology; it has made an important use in clinical diagnosis and education study. The bination of the image processing technique and imaging technique has changed the way that traditional diagnosis. Make adequately use of this techniques will be increase accuracy,increase the efficiency of diagnosis,decrease the cost of medical treatment and make the most use of function with medical treatment equipments.Moreover, as the deeply with the arithmetic figure and the intelligence, the image processing technique will have a more wonderful future.

Java is a kind of object-oriented programming language from the pany of Sun. The Java is being a most wele and influence programming language which suits for the business network and the environment of internet. Currently, use Java language to developed image processing system is not very frequency in our country. So, this is a cause of increasing the value of study.

This project introduces some kinds of algorithms inimage enhancement and image segmentation. It includes linear grey level transformation, pseudo-color processing, smooth processing, median filter, threshold segmentation, edge detection and so on. Then, use Java to program and realize. And show the result of image processing using Java GUI (Graphical User Interface), as well as create a database to stock medical image.

Key Words: medical image; image enhancement; image segmentation;

object-oriented

目录

1引言1

2医学图像处理概述3

2.1什么是医学图像处理3

2.2医学图像处理及研究内容3

2.2.1超声图像3

2.2.2X射线图像4

2.2.3磁共振成像5

2.2.4核医学成像6

2.3医学图像处理技术新进展7

3 Java语言的特点11

3.1面向对象编程11

3.1.1抽象11

3.1.2面向对象编程的3个原则12

3.2 Java的特性13

3.3 Java语言的前景15

4Java语言实现图像处理16

4.1图像增强技术16

4.1.1灰度变换17

4.1.2伪彩色处理19

4.1.3平滑化处理22

4.1.4其他图像增强技术24

4.2图像分割技术25

4.2.1阈值分割法25

4.2.2边缘检测法28

4.3图像复原技术31

4.4本章小结33

5设计流程34

5.1主流程图34

5.2图像处理界面35

5.3图像的加载36

5.4图像的处理39

5.5数据库的建立43

6开发工具45

6.1 JCreator概述45

6.2 JCreator编辑界面的组成45 结论48

致谢错误!未定义书签。

参考文献错误!未定义书签。

附录A 英文原文错误!未定义书签。附录B 中文翻译错误!未定义书签。附录C 源程序错误!未定义书签。

1 引言

数字图像处理技术是20世纪60年代随着计算机技术和超大规模集成电路的发展而

产生、发展和不断成熟起来的一个新兴技术领域,它在理论上和实际应用中都取得了巨大的成就。

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

数字图像处理技术取得的另一个巨大成就是在医学上。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(puter Tomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术被授予诺贝尔奖,以表彰它对人类做出的划时代贡献。

从20世纪70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理技术向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。

20世纪80年代末期,人们开始将其应用于地理信息系统,研究海图的自动读入、自动生成方法。数字图像处理技术的应用领域不断拓展。

数字图像处理技术的大发展是从20世纪90年代初开始的。自1986年以来,小波理论与变换方法迅速发展,它克服了傅里叶分析不能用于局部分析等方面的不足之处,被认为是调和分析半个世纪以来工作之结晶。Mallat在1988年有效地将小波分析应用于图像分解和重构。小波分析被认为是信号与图像分析在数学方法上的重大突破。随后数字图像处理技术迅猛发展,到目前为止,图像处理在图像通讯、办公自动化系统、地理信息系统、医疗设备、卫星照片传输及分析和工业自动化领域的应用越来越多。

进入21世纪,随着计算机技术的迅猛发展和相关理论的不断完善,数字图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就。属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等。该技术成为一门引人注目、前景远大的新型学科。

2 医学图像处理概述

近年来,随着计算机及其相关技术的迅速发展,图像处理技术日益成熟,使得该技术深入到医学领域的方方面面,开创了数字医疗的新时代。

借助图像处理技术的有力手段,医学图像的质量和显示方法可以得到极大的改善,从而使得诊断水平可以借助于图像处理与分析手段来得到极大的改善,这不仅可以基于现有的医学图像设备来极大地提高医学临床诊断水平,而且能为医学培训、医学研究与教学、计算机辅助临床外科手术等提供电子实现手段,为医学的研究与发展提供坚实的基础,具有无可估量的价值。

2.1 什么是医学图像处理

医学图像处理就是利用计算机系统对生物医学图像进行的具有临床医学意义的处理和分析。

医学图像处理是一个很复杂的过程。医学图像作为一种信息源,也和其它有关病人的信息一样,是医生做出判断时的依据。医生在判读医学图像时,要把图像与他的解剖学、生理学和病理学等知识作对照,还要根据经验来捕捉图像中的有重要意义的细节和特征。所以要从一幅或几幅医学图像中判断出是否有异常,或属于什么疾病,是一种高级的脑力劳动。任意拿一X有异常的CT图像、X线照片或超声图像来看,如果不是训练有素的医生,是难以发现图像上的异常的。所以对医学图像进行处理显得尤为重要。

2.2 医学图像处理及研究内容

2.2.1 超声图像

超声是超过正常人耳能听到的声波,频率在20 000赫兹(Hertz,Hz)以上。超声检查是利用超声的物理特性和人体器官组织声学性质上的差异,以波形、曲线或图像的形式显示和记录,借以进行疾病诊断的检查方法。40年代初就已探索利用超声检查人体,50年代已研究、使用超声使器官构成超声层面图像,70年代初又发展了实时超声技术,可观察心脏及胎儿活动。超声诊断由于设备不似CT或MRI设备那样昂贵,可获得器官的任意断面图像,还可观察运动器官的活动情况,成像快,诊断及时,无痛苦与危险,

属于非损伤性检查,因此,在临床上应用已普及,是医学影像学中的重要组成部分。不足之处在于图像的对比分辨力和空间分辨力不如CT和MRI高。

超声在介质中以直线传播,有良好的指向性。这是可以用超声对人体器官进行探测的基础。当超声传经两种声阻抗不同相邻介质的界面时其声阻抗差大于0.1%,而界面又明显大于波长,即大界面时,则发生反射,一部分声能在界面后方的相邻介质中产生折射,超声继续传播,遇到另一个界面再产生反射,直至声能耗竭。反射回来的超声为回声。声阻抗差越大,则反射越强,如果界面比波长小,即小界面时,则发生散射。超声在介质中传播还发生衰减,即振幅与强度减小。衰减与介质的衰减系数成正比,与距离平方成反比,还与介质的吸收及散射有关。

人体结构对超声而言是一个复杂的介质,各种器官与组织,包括病理组织有它特定的声阻抗和衰减特性。因而构成声阻抗上的差别和衰减上的差异。超声射入体内,由表面到深部,将经过不同声阻抗和不同衰减特性的器官与组织,从而产生不同的反射与衰减。这种不同的反射与衰减是构成超声图像的基础。将接收到的回声,根据回声强弱,用明暗不同的光点依次显示在影屏上,则可显出人体的断面超声图像,称这为声像图。人体器官表面有被膜包绕,被膜同其下方组织的声阻抗差大,形成良好界面反射,声像图上出现完整而清晰的周边回声,从而显出器官的轮廓。根据周边回声能判断器官的形状与大小。

图2.1 急性阑尾超声影像

2.2.2 X射线图像

X线图像是当前临床应用最广泛的一种医学图像,如何从X线图像获得更多的信息,

是提高诊断技术水平的一个重要方向。

X线图像建立在当X线透过人体时,各种脏器与组织对X线的不同吸收程度的基础上,因而在接收端将得到不同的射线强度。接收端射线强度的变化,如被记录在底片上就变成灰度的变化。

基于这个原理,所得的X线图像是把三维结构的人体在二维空间中投影成像的技术,是人体内各层结构重叠后的图像。因此,处理的基本目的是要在图片上把特定的脏器轮廓从周围的结构中分离出来。几十年来,X线技术的发展可以说大都是为了提高X 线图像的分辨能力。例如,各种X线照片的处理技术(包括增强,分割,识别等),X线断层摄影技术,X线CT技术,X线减影技术等。此外,也要尽可能减少病人和医生所受到的X线辐射剂量。

图2.2 骨纤维异常增殖症X光片

2.2.3 磁共振成像

核磁共振(MRI)又叫核磁共振成像技术。是继CT后医学影像学的又一重大进步。自80年代应用以来,它以极快的速度得到发展。其基本原理:是将人体置于特殊的磁场中,用无线电射频脉冲激发人体内氢原子核,引起氢原子核共振,并吸收能量。在停止射频脉冲后,氢原子核按特定频率发出射电信号,并将吸收的能量释放出来,被体外的接受器收录,经电子计算机处理获得图像,这就叫做核磁共振成像。

核磁共振是一种物理现象,作为一种分析手段广泛应用于物理、化学生物等领域,到1973年才将它用于医学临床检测。为了避免与核医学中放射成像混淆,把它称为核

磁共振成像术(MR)。

MR是一种生物磁自旋成像技术,它是利用原子核自旋运动的特点,在外加磁场内,经射频脉冲激后产生信号,用探测器检测并输入计算机,经过处理转换在屏幕上显示图像。

MR提供的信息量不但大于医学影像学中的其他许多成像术,而且不同于已有的成像术,因此,它对疾病的诊断具有很大的潜在优越性。它可以直接作出横断面、矢状面、冠状面和各种斜面的体层图像,不会产生CT检测中的伪影;不需注射造影剂;无电离辐射,对机体没有不良影响。MR对检测脑内血肿、脑外血肿、脑肿瘤、颅内动脉瘤、动静脉血管畸形、脑缺血、椎管内肿瘤、脊髓空洞症和脊髓积水等颅脑常见疾病非常有效,同时对腰椎椎间盘后突、原发性肝癌等疾病的诊断也很有效。

图2.3 颅脑病变MR影像

MR也存在不足之处。它的空间分辨率不及CT,带有心脏起搏器的患者或有某些金属异物的部位不能作MR的检查,另外价格比较昂贵。

2.2.4 核医学成像

将放射性同位素(RI)作为示踪物质,直接注入人体,并在体外用测定器对它的分布、聚集、变化等进行测定记录,所得的图像即为核医学图像。

核医学图像与其它用作诊断的医学图像相比,是有其特长的。首先,由于可以选择对特定脏器的生理作用有关联的放射性药物,因而可对不同的脏器做图像观察和分析研

究,即有做选择性造影的能力;其次,由于放射性药物可以有不同的寿命,因而有可能对放射性物质在体内的活动进行长时间的观察,从而有可能测定体内各脏器的摄取、排泄、循环以及代谢等机能,即具有动态机能测定的能力,这些重大特长都是其它医学图像所不具有的。由于核医学图像具有的“选择性造影能力”和“动态机能测定能力”,所以虽然它有一系列的缺点,但在临床诊断中还是得到了广泛的应用。

核医学图像存在的弱点与检测方法有关。首先,由于被检查人员和操作人员所受辐射量的原因,做检查时用的放射性同位素剂量是不大的,而γ线的放射是同位素衰变的一种随机现象,所以核医学图像中含有较大的时间统计误差。为了使两个区域检测到的γ线数的变化不被统计涨落所淹没,同时又不增加同位素剂量,只好扩大每个区域的面积。这就导致核医学图像空间分辨率的降低。

正是由于核医学图像的空间分辨率低、信噪比低以及对比度低这些特点,使得在利用核医学图像做诊断时,医生的主观介入较多,往往造成解释上的差异。因此,引入图像处理技术和识别技术,对核医学图像来讲尤为重要。

图2.4显示了一种叫做“正电子放射断层”(PET)的核成像。

图2.4 PET图像

2.3 医学图像处理技术新进展

1.医学图像处理技术

医学图像处理技术包括很多方面,图像分割、图像配准和融合以及伪彩色处理技术和纹理分析在医学领域的应用和发展越来越广泛。

图像分割就是把图像中具有特殊涵义的不同区域分开来,这些区域使互不相交的每一个区域都满足特定区域的一致性。它是图像处理与图像分析中的一个经典问题。图像分割技术发展至今,已在灰度阈值分割法、边缘检测分割法、区域跟踪分割法的基础上结合特定的理论工具有了更进一步的发展。比如基于三维可视化系统结合Fast Marching 算法和Watershed变换的医学图像分割方法,能得到快速、准确的分割结果。

图像分割同时又是进行三维重建的基础,分割的效果直接影响到三维重建后模型的精确性,分割可以帮助医生将感兴趣的物体(病变组织等)提取出来,帮助医生能够对病变组织进行定性及定量的分析,从而提高医生诊断的准确性和科学性。

医学图像配准是通过寻找某种空间变换,使两幅图像的对应点达到空间位置和解剖结构上的完全一致。要求配准的结构能使两幅图像上所有的解剖点,或至少是所有具有诊断意义以及手术区域的点都达到匹配。目前医学图像配准方法有基于外部特征的图像配准(有框架)和基于图像内部特征的图像配准(无框架)两种方法。后者由于其无创性和可回溯性,已成为配准算法的研究中心。基于互信息的弹性形变模型也逐渐成为研究热点。

图像配准是图像融合的前提,是公认难度较大的图像处理技术,也是决定医学图像融合技术发展的关键技术。近年来国外在图像配准方面研究很多,如几何矩的配准、利用图像的相关系数、样条插值等多项式变换对图像进行配准。国内研究人员也提出了一些相应的算法:一致图像配准方法、金字塔式多层次图像配准方法、基于互信息的方法。在努力提高配准精度的同时,目前提出的多种方法都力求整个过程自动化,其结果导致实现算法的过程复杂而耗费时间。

不同的医学图像提供了相关脏器的不同信息,图像融合的潜力在于综合处理应用这些成像设备所得信息以获得新的有助于临床诊断的信息。利用可视化软件,对多种模态的图像进行图像融合,可以准确地确定病变体的空间位置、大小、几何形状及它与周围生物组织之间的空间关系,从而及时高效地诊断疾病,也可以用在手术计划的制定、病理变化的跟踪、治疗效果的评价等方面。在放疗中,利用MR图像勾勒画出肿瘤的轮廓线,也就是描述肿瘤的大小;利用CT图像计算出放射剂量的大小以及剂量的分布,以便修正治疗方案。在制定手术方案时,对病变与周围组织关系的了解是手术成功与否的关键,所以CT与MR图像的融合为外科手术提供有利的佐证,甚至为进一步研究肿瘤的生长发育过程及早期诊断提供新的契机。在CT成像中,由于骨组织对X线有较大的吸收系数,因此对骨组织很敏感;而在MR成像中,骨组织含有较低的质子密度,所以

MR对骨组织和钙化点信号较弱,融合后的图像对病变的定性、定位有很大的帮助。由于不同医学成像设备的成像机制不同,其图像质量、空间与时间特性有很大差别。因此,实现医学图像的融合、图像数据转换、图像数据相关、图像数据库和数据理解都是亟待解决的关键技术。

对一幅黑白图像,人眼一般只能辨别出4到5比特的灰度级别,而人眼能辨别出上千种不同的颜色。针对这一特点,人们往往将黑白图像经过处理变为彩色图像,充分发挥人眼对彩色的视觉能力,从而使观察者能从图像中取得更多的信息,这就是伪彩色图像处理技术。经过伪彩色处理技术,即密度分割技术,提高了对图像特征的识别。通过临床研究对X线、CT、MRI、B超和电镜等图片均进行了伪彩色技术的尝试,取得了良好的效果,部分图片经过处理后可以显现隐性病灶。

纹理是人类视觉的一个重要组成部分,迄今为止还难以适当地为纹理建模。为此有关专家进行了大量的探索研究,但未能获得有关纹理的分析、分类、分割及其综合的有效解释。有研究针对肝脏疾病难以根除、危害面广的问题,采用灰度梯度共生矩阵的方法,分别提取纤维化肝组织和正常肝组织的CT图像的纹理特征,提出了基于友度梯度共生矩阵的小梯度优势、灰度均方差、灰度嫡等参数作为图像的纹理特征量。通过选取的纹理参数,可以看到正常组和异常组之间存在显著性差异,为纤维化CT图像临床诊断提供了依据。

2.三维医学图像的可视化

三维医学图像的可视化通常是利用人类的视觉特性,通过计算机对二维数字断层图像序列形成的三维体数据进行处理,使其变换为具有直观立体效果的图像来展示人体组织的三维形态。三维医学图像可视化技术通常分为面绘制和体绘制两种方法。

医学数据的可视化,已成为数据可视化领域中最为活跃的研究领域之一。实现三维数据可视化的方法很多,空间域方法的典型算法包括:射线投射法、足迹法、剪切一曲变法(目前被认为是一种速度最快的体绘制算法)等;变换域方法的典型算法有频域体绘制法和基于小波的体绘制法,其中小波的体绘制技术显现出较好的前景。

随着互联网技术不断发展,跨越空间限制的远程虚拟现实技术已经逐步成为可能。基于虚拟现实技术利用美国国家医学图书馆VHP(Visible Human Project)完整数据重建可视人体,综合VTK, VRML和OperFGL等可视化平台的优势,采用三维互动、空间电磁定位、立体视觉等虚拟现实技术,实现了全数字可拆装人体骨骼的本地和远程互动学习。三维虚拟现实让邀游人体世界成为可能,可以呈现一个物理上并不存在但又实实在

在看得见、摸得着的真实人体,使用者可以无数次地解剖这个虚拟人以了解人体的结构。

在临床方面,提出了一种用AVS/Express开发的基于PC的Le Fort手术模型系统原型。利用AVS用xpress大量预制的可视化编程对象模块,快速构建系统的结构框架和功能模块,生成的原型能对以DI(Digital Imaging and munications in Medicine)格式存储的颅颌面CT序列断层图像进行预处理,并进行三维重建,在交互式操作环境中,显示颅颌面各种组织的解剖结构,进行相应的三维测量,模拟Le Fort I手术的截骨头,对截骨段实行任意的平移颌旋转。在体视化方面一直致力于提高重建速度(实时显示利于交互操作),使重建效果理想,减少冗余信息及存储空间。

3.针对PACS的图像压缩

图像存档及通信系统(picture archiving and munication system,PACS)是近年来国内外新兴的医学影像信息技术,是专门为医学图像管理而设计的,包括图像获取、处理、存储、显示或打印的软硬件系统,是医学影像、数字化图像技术、计算机技术和网络通信技术相结合的产物。显然,计算机网络是PACS的重要组成部分,它负责提供底层图像传输服务,是PACS的软硬件基础,正是通过各个层次的网络才将PACS中的图像获取、存储显示以及医疗数据的管理等单元连为一体,使之形成一个统一、高性能的系统. PACS 需要解决数据传输和图像存储的问题,如何利用有限的存储空间存储更多的图像,医学图像压缩是关键的技术之一,也是近年来图像处理技术中的一个重点研究的问题。

医学图像的压缩无疑是减低应用系统成本,提高网络传输效率,减少存储空间的一个重要途径。DI作为医学图像与通信的重要标准,加入了对图像压缩算法的支持。目前DI正在研究对最新的压缩标准JPEG2000支持的可能性。随着新一代静态图像压缩标准JPEG2000的发展,小波理论在这个领域成为研究的热点。

医学图像是医学诊断和疾病治疗的重要根据,在临床上具有非常重要的应用价值。确保医学图像压缩后的高保真度是医学图像压缩首要考虑的因素,现在医学图像上常常采用无损压缩,因为它能够精确地还原原图像。但是无损图像压缩的压缩比很低,一般为1∶2~4,而有损图像压缩的压缩比可以高达1∶50,甚至更高。所以将这两种压缩方法在保证使用要求的基础上结合起来,在获取高的压缩质量的前提下提高压缩比,这也是目前医学图像研究领域的一个热点。

3 Java语言的特点

3.1 面向对象编程

Java的核心是面向对象编程。事实上,所有的Java程序都是面向对象的,你别无选择。这一点与C++不同,因为在那里你可以选择是否面向对象编程。面向对象编程与Java密不可分,因此,在你编写哪怕是最简单的Java程序以前,也必须理解它的基本原则。

3.1.1 抽象

面向对象编程的一个实质性的要素是抽象。人们通过抽象(abstraction)处理复杂性。例如,人们不会把一辆汽车想象成由几万个互相独立的部分所组成的一套装置,而是把汽车想成一个具有自己独特行为的对象。这种抽象使人们可以很容易地将一辆汽车开到杂货店,而不会因组成汽车各部分零件过于复杂而不知所措。他们可以忽略引擎、传动及刹车系统的工作细节,将汽车作为一个整体来加以利用。

使用层级分类是管理抽象的一个有效方法。它允许你根据物理意义将复杂的系统分解为更多更易处理的小块。从外表看,汽车是一个独立的对象。一旦到了内部,你会看到汽车由若干子系统组成:驾驶系统,制动系统,音响系统,安全带,供暖,便携,等等。再进一步细分,这些子系统由更多的专用元件组成。例如,音响系统由一台收音机、一个CD播放器、或许还有一台磁带放音机组成。从这里得到的重要启发是,你通过层级抽象对复杂的汽车(或任何另外复杂的系统)进行管理。

复杂系统的分层抽象也能被用于计算机程序设计。传统的面向过程程序的数据经过抽象可用若干个组成对象表示,程序中的过程步骤可看成是在这些对象之间进行消息收集。这样,每一个对象都有它自己的独特行为特征。你可以把这些对象当作具体的实体,让它们对告诉它们做什么事的消息做出反应。这是面向对象编程的本质。

面向对象的概念是Java的核心,对程序员来讲,重要的是要理解这些概念怎么转化为程序。你将会发现,在任何主要的软件工程项目中,软件都不可避免地要经历概念提出、成长、衰老这样一个生命周期,而面向对象的程序设计,可以使软件在生命周期的每一个阶段都处变不惊,有足够的应变能力。例如,一旦你定义好了对象和指向这些

对象的简明的、可靠的接口,你就能很从容很自信地解除或更替旧系统的某些组成部分。

3.1.2 面向对象编程的3个原则

所有面向对象的编程语言都提供帮助你实现面向对象模型的机制,这些机制是封装,继承及多态性。当然,Java也不例外。

封装:封装(Encapsulation)是将代码及其处理的数据绑定在一起的一种编程机制,该机制保证了程序和数据都不受外部干扰且不被误用。理解封装性的一个方法就是把它想成一个黑匣子,它可以阻止在外部定义的代码随意访问内部代码和数据。对黑匣子内代码和数据的访问通过一个适当定义的接口严格控制。封装代码的好处是每个人都知道怎么访问它,但却不必考虑它的内部实现细节,也不必害怕使用不当会带来负面影响。

Java封装的基本单元是类。一个类(class)定义了将被一个对象集共享的结构和行为(数据和代码)。一个给定类的每个对象都包含这个类定义的行为和结构,好像它们是从同一个类的模子中铸造出来似的。因为这个原因,对象有时被看作是类的实例(instances of a class)。所以,类是一种逻辑结构,而对象是真正存在的物理实体。

当创建一个类时,你要指定组成那个类的代码和数据。从总体上讲,这些元素都被称为该类的成员(members)。具体地说,类定义的数据称为成员变量(member variables)或实例变量(instance variables)。操作数据的代码称为成员方法(member methods)或简称方法(methods)。如果你对C/C++熟悉,可以这样理解:Java程序员所称的方法,就是C/C++程序员所称的函数(function)。在完全用Java编写的程序中,方法定义如何使用成员变量。这意味着一个类的行为和接口是通过方法来定义的,类这些方法对它的实例数据进行操作。

既然类的目的是封装复杂性,在类的内部就应该有隐藏实现复杂性机制。类中的每个方法或变量都可以被标记为私有(private)或公共(public)。类的公共接口代表类的外部用户需要知道或可以知道的每件事情;私有方法和数据仅能被一个类的成员代码所访问,其他任何不是类的成员的代码都不能访问私有的方法或变量。既然类的私有成员仅能被程序中的其他部分通过该类的公共方法访问,那么你就能保证不希望发生的事情就一定不会发生。当然,公共接口应该小心仔细设计,不要过多暴露类的内部内容。

继承:继承(Inheritance)是一个对象获得另一个对象的属性的过程。继承很重要,因为它支持了按层分类的概念。大多数知识都可以按层级(即从上到下)分类管理。使用了继承,一个对象就只需定义使它在所属类中独一无二的属性即可,因为它可以从它的

父类那儿继承所有的通用属性。所以,可以这样说,正是继承机制使一个对象成为一个更具通用类的一个特定实例成为可能。

继承性与封装性相互作用。如果一个给定的类封装了一些属性,那么它的任何子类将具有同样的属性,而且还添加了子类自己特有的属性。这是面向对象的程序在复杂性上呈线性而非几何性增长的一个关键概念。新的子类继承它的所有祖先的所有属性。它不与系统中其余的多数代码产生无法预料的相互作用。

多态性:多态性(polymorphism ,来自于希腊语,表示“多种形态”)是允许一个接口被多个同类动作使用的特性,具体使用哪个动作与应用场合有关,下面我们以一个后进先出型堆栈为例进行说明。假设你有一个程序,需要3种不同类型的堆栈。一个堆栈用于整数值,一个用于浮点数值,一个用于字符。尽管堆栈中存储的数据类型不同,但实现每个栈的算法是一样的。如果用一种非面向对象的语言,你就要创建3个不同的堆栈程序,每个程序一个名字。但是,如果使用Java,由于它具有多态性,你就可以创建一个通用的堆栈程序集,它们共享相同的名称。

多态性的概念经常被说成是“一个接口,多种方法”。这意味着可以为一组相关的动作设计一个通用的接口。多态性允许同一个接口被同一类的多个动作使用,这样就降低了程序的复杂性。选择应用于每一种情形的特定的动作(specific action)(即方法)是编译器的任务,程序员无需手工进行选择。你只需记住并且使用通用接口即可。

如果用得当,在由多态性、封装性和继承性共同组成的编程环境中可以写出比面向过程模型环境更健壮、扩展性更好的程序。精心设计的类层级结构是重用你花时间和努力改进并测试过的程序的基础,封装可以使你在不破坏依赖于类公共接口的代码基础上对程序进行升级迁移,多态性则有助于你编写清楚、易懂、易读、易修改的程序。

除了面向对象特性外,Java还具有其它的特点。

3.2 Java的特性

作为一种程序语言,Java拥有许多重要的特性:简单的、面向对象的、网络的、解释的、健壮的、安全的、可移植的、高性能的、多线程以及动态性。

前面已对面向对象特性做了具体的说明,下面针对其它的特性加以说明。

1.简单性:Java语言通过提供最基本的方法来完成指定的任务 ,只需理解一些基本的概念 ,就可以用它编写出适合于各种情况的应用程序。 Java略去了运算符重载、多

重继承等模糊的概念,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有 40KB左右,加上标准类库和线程的支持也只有215KB左右。库和线程的支持也只有 215KB左右。

2.网络性:Java本身等于就是通过学习网络而产生的,它的许多功能与应用都是与网络相关,从最初的确良Applet、简化的Socket、交互式的JSP/Servlet网络程序到今日热门的Web Serivice等,都注定了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.3 Java语言的前景

Java语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用:

1.所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等;

2.计算过程的可视化、可操作化的软件的开发;

3.动态画面的设计,包括图形图像的调用;

4.交互操作的设计(选择交互、定向交互、控制流程等);

5. Internet的系统管理功能模块的设计,包括Web页面的动态设计、管理和交互操作设计等;

6.Intranet(企业内部网)上的软件开发(直接面向企业内部用户的软件);

7.与各类数据库连接查询的SQL语句实现;

8.进行手机通讯和其他的一些嵌入式的开发(比如手机和网络游戏);

9.其它应用类型的程序。

4Java语言实现图像处理

4.1 图像增强技术

数字图像的增强是图像处理中的一个重要研究内容之一,是图像处理的一项基本技术。图像增强是指按特定的需要突出一幅图像的某些信息,同时,削弱或除去某些不需要的信息的处理方法。

图像增强在人眼对图像的识别中很重要。人眼有这样一视觉特性:由人眼的视觉和人的心理特性可知,变化幅度较大,细节丰富的区域容易引起人眼的注意,而变化平坦的区域则不容易注意。在人们对视觉的研究中,进行过如下实验,将两幅图同时放在测试者的视野中,其中一幅有黑色线条,另一幅全部都为白色,用仪器分别记录下眼睛注视两幅图的时间,结果表明了人眼有70%的时间在注视带线条的那一幅,这说明变化剧烈的图像更吸引人的注意力,对灰度图像而言,人眼会将注意力集中在灰度值变化大的区域。根据人眼的这一视觉特性,图像处理中对灰度图像的增强就是为了解决这一视觉上的障碍。

图像增强的方法分为两大类:空间域方法和频率域方法。

空间域增强是指增强构成图像的像素。空间域方法是直接对这些像素操作的过程。空间域处理可由下式定义:

g x y T f x y

=(4.1) (,)[(,)]

其中(,)

g x y是增强处理后的图像函数,T是对f的一

f x y是增强处理前的图像函数,(,)

种操作,其定义在(,)

x y的邻域。式(4.1)可用图4.1表示。

图4.1 空间域方法示意图

频率域方法是在图像的某种变换域内对图像的变换值进行运算,如(,)

f x y表示增强处理前的图像函数,(,)

g x y是由

h x y表示空间运算函数,增强处理后的图像函数(,)

h x y的卷积的,即

f x y和(,)

(,)

?*(4.2)

g x y h x y f x y

(,)(,)(,)

根据卷积理论,在频域中有下面的变换关系

相关主题
相关文档
最新文档