鹿国萍-星载SAR立体观测系统界面设计
更新时间:2024-05-31 20:43:01 阅读量: 综合文库 文档下载
- 鹿国是哪个国家推荐度:
- 相关推荐
摘 要
干涉SAR(InSAR)是一种可以获得目标高程信息的SAR工作方式。干涉SAR数据处理包括多个处理步骤。为了便于操作,设计一个可将多个处理步骤集成到一起的软件界面具有实际意义。
本文以Java为开发工具,设计了星载SAR立体观测系统软件界面设计。设计过程中解决了处理结果显示和高程图显示等Windows高级程序设计问题。该软件界面可提供可视化界面,可以大大提高数据处理的可操作性和工作效率。同时该系统界面具有较强的通用性、良好的稳定性、友好的用户界面和良好的扩展性能。
利用仿真数据对所设计的软件界面进行了测试,结果表明该软件界面可以稳定运行,能够方便的完成干涉SAR的数据处理工作。
关键词:可视化界面、数据处理、JAVA
- I -
Abstract
Interference SAR (InSAR) is one of the SAR work modes which could obtain elevation information of targets. The data processing of Interference in SAR included multiple steps. Therefore, designing a software integrated all processing steps is full of practical significance.
In this paper, the data system interface of the three-dimensional spaceborne SAR observation system is designed with the JAVA. In the design process, more Windows advanced programming problems is solved, such as the processing results and the elevation map displaying. The interface provides visual interface and the operability and data processing efficiency is greatly improved. The system also has a strong universal, good stability, friendly user interface and good scalability.
Using simulated data, the system interface is tested, the results show that it could work stably and finish the data processing of InSAR.
Keywords: Visual interface, data processing,Java
- II -
目 录
摘 要 -------------------------------------------------------------------------------------------------------------------- I Abstract -------------------------------------------------------------------------------------------------------------------- II 目 录 ------------------------------------------------------------------------------------------------------------------ III 1 前言 ----------------------------------------------------------------------------------------------------------------------- 1
1.1 国内外研究现状以及发展趋势 --------------------------------------------------------------------------- 1 1.2 本设计研究目的及意义 ------------------------------------------------------------------------------------ 2 1.3 本文需要解决的问题及研究工作 ------------------------------------------------------------------------ 3 2 星载干涉SAR信号处理的基本原理 ------------------------------------------------------------------------------ 4
2.1干涉SAR概述 -------------------------------------------------------------------------------------------------- 4 2.2 InSAR数据处理的流程 ------------------------------------------------------------------------------------- 4 3 系统界面开发及开发语言介绍 ------------------------------------------------------------------------------------ 7
3.1 Java界面开发工具 ------------------------------------------------------------------------------------------ 7 3.2 界面设计常用组件介绍 ------------------------------------------------------------------------------------ 8 3.3 立体观测系统主界面的设计 ------------------------------------------------------------------------------ 9 3.4 界面设计常用组件介绍 ---------------------------------------------------------------------------------- 21 4 仿真调试 --------------------------------------------------------------------------------------------------------------- 22
4.1 系统界面功能 ----------------------------------------------------------------------------------------------- 22 结 论 ------------------------------------------------------------------------------------------------------------------ 31
- III -
1 前言
合成孔径雷达(SAR)是20世纪50年代发明的一种全天候、全天时的分辨率高微波遥感成像雷达,自发明以来,它技术的发展非常迅速,已经现实了多模式合成孔径雷达,这些模式包括多极化、多频段、可变波束和可变视角,合成孔径雷达下一步发展以及应用的热点是宽侧绘带宽和超高分辨率,干涉式合成孔径雷达(INSAR)的研发成功已经成为全球地壳微变和地形测绘提供了方便可靠地手段。
干涉合成孔径雷达(InSAR)技术在合成孔径雷达应用技术中出现的较晚,它是现在科研SAR发展的非常重要一个方向,这种技术可以实现从合成孔径雷达复数据提取的干涉相位信息作为数据源获取地表的三维信息和地表变化信息。通过这种技术可以获取地表的数字高程图(DEM ),并且可以实现对地表的三维测绘。
InSAR的概念在20世纪70 年代被人们提出[16],但因为70年代计算机技术和雷达水平没有得到广泛的发展和深入的应用,人们无法充分完全的获得相干性好的干涉信息并进行较为有效方便的处理。随着科技的进步,从20世纪90年代中期开始,合成孔径雷达干涉测量技术渐渐成熟,应用的领域继续扩展,成为SAR研究与应用的一个重点。这种测量方法是用两幅或者多幅合成孔径雷达影像图,根据根据卫星或飞机接收到的回波相位差来生成数字高程模型或者地表形变图。理论上此技术可以测量数日或者数年间厘米级的地表形变,可以用于自然灾害,如地震、火山爆发和滑坡,以及结构工程尤其是沉降监测和结构稳定性。SAR具有巨大的社会和经济效益,InSAR技术的应用前景正被日益看好。
1.1 国内外研究现状以及发展趋势
目前,国内外已经开发出很多关于星载SAR立体观测的软件系统,有很多的公司在进行这类软件的研发。比如,株洲开发区智能电子有限公司推出了INSAR software 2011 HOT这一款软件,这款软件能够监测大面积的土地变形、下陷和周边土地变形,还能够监测到有小规模的数字化的地形变动以及对农业作物分类、产量估算等进行监测。
在国外方面,常见的类似功能的软件有RAT、ERDAS、ENVI、GAMMA、DORIS、ROI_PRO等。RAT是一个功能强大的开源软件,而ERDAS或ENVI只包括一些基本的处理功能。在先进的算法方面,它们在处理偏振干涉测量(InSAR)和极化干涉(PolInSAR)这两面必须由自己来实现。因此,RAT的应用和发展就有了突出的意义。RAT可以实现对处理算法的简化,而且在数据处理和复杂的合成孔径雷达数据处理方面有更广泛的用户基础。RAT的编程接口简单,所以可以轻松的添加自己的处理数据。RAT在IDL虚拟机上运行,因此,我们必须下载和安装IDL虚拟机。
还有,BEST(Basic Envisat SAR Toolbox)是一个可以方便使用欧空局合成孔径雷
- 1 -
达收集的数据的软件。工具箱的功能不是为了复制已经存在的商业软件包,而是为了完善有固定功能的可以操作SAR的这些商业软件包。
与BEST类似的NEST(Next ESA SAR Toolbox)是一个新的欧空局有集成监视器的工具箱,可以进行综合、阅读、校准、处理和分析。欧空局收集数据的分析,第三方SAR处理数据以及从第一部分开始建立的工具箱都是开源的。NEST可以允许用户通过一个新的应用程序编程接口(API)对合成孔径雷达数据进行读取和处理。
瑞士的GAMMA公司在这方面的主要活动包括地球观测、为用户提供服务和咨询。GAMMA进行对SAR和用户的干涉处理,而且它还提供端到端的数据和INSAR干涉处理方法。
在这一方面,总参第四测绘大队也做了深入的工作并且有了突出的成果,他们研发的INSAR-DEM软件系统也具有非常广泛的应用前景。该项目制作的INSAT-DEM软件是他们自主研发的产品软件,具有很多的优点。比如它界面的设计比较友好、运算的速度很快和实用性强都是很突出的特点。它的系统包括很多模块,如复影像匹配、相位展开以及正射影像图制作等。该软件具有光学图像比不了的好处,体现在对赤道附近雨林地区、边境无人控制的地方和人类无法到达的高山等地区进行地图测绘优势明显。当然,它也有缺陷,这种系统只能操作两种数据格式,对于其他的数据,还需要进行复杂的数据转换,才能被系统读取和操作。并且该系统也不是非常完善,由于技术方面要求很高,需求的资金较多,该项目目前要实现该系统的完善面临的困难也比较大,这需要国家进行更高的投入。
虽然目前可以见到的星载SAR立体观测软件众多,但是或者这些软件是商业用途,价格昂贵,对于研究用途难以承受,或者这些软件是在工作站的UNIX操作系统下运行,处理过程复杂,不便使用,因此开发一个界面友好,易于操作的处理系统具有很大的实用意义。
1.2 本设计研究目的及意义
干涉 SAR(InSAR)是可以获得地面目标高程的一种新的SAR 工作方式。InSAR 技术的主要应用领域包括:DEM生成、地面沉降监测、地震监测、火山灾害、冰川移动、海洋测绘等方面。
就InSAR技术本身来讲,算法、处理软件、硬件设施等各方面都已基本成熟,但精度仍需要进一步改进,比如SAR分辨率的提高、卫星轨道参数精度的提高、轨道的优化、数据模型精度的提高等。对于我国,应该充分注意到InSAR技术的优势,积极发展本国的星载InSAR系统和处理软件,以更好地为国民经济建设和国防建设服务。
干涉SAR数据处理包括多个处理步骤,开发软件可提供可视化界面,可以大大提高数据处理的可操作性和工作效率。本文的主要内容是立体观测软件界面的设计与实现。
- 2 -
1.3 本文需要解决的问题及研究工作
(1)、 系统全面的学习干涉SAR立体观测界面设计方法并根据其流程实现软件界面设计。
(2)、 利用可视化开发软件Java实现软件界面开发并进行集成及测试。
- 3 -
2 星载干涉SAR信号处理的基本原理
2.1干涉SAR概述
合成孔径雷达干涉测量技术(InSAR)是以合成孔径雷达复数据提取的相位信息为信息源获取地表三维位置和形变信息的一项技术。InSAR 通过两副天线同时观测(单轨模式),或两次近平行的观测(重复轨道模式),获取地面同一景象的复图像对。由于目标与两天线位置的几何关系,在复图像上产生了相位差,形成干涉纹图。干涉纹图中包含了斜距向上的点与两天线位置差的精确信息。因此,利用传感器高度、雷达波长、波束视向及天线基线距的几何关系,可以精确地测量出图形上每一点的三维位置和形变信息。
干涉处理通过一个特殊的软件包来执行。如果软件包的名字和版本是已知的,数据集可以用同一个软件包来处理,来得到更多的结果分析。处理结果的质量主要取决于实际计算的算法。由于它的复杂性和数据集的尺寸,干涉处理是在计算的精度和速度间进行权衡。在存取上,三种基于强度值、复合值或信噪比的不同方法可以被使用。选择何种方法取决于存取的质量。此外,在存取过程中,用于采样差值可以有几种方法。在处理过程中的几个不同阶段可以应用不同的滤波方法。相位展开可能是整个干涉处理中最复杂的问题。为了解决这项艰巨的任务,现在已经提出了多种解决方案。为了估计处理的质量,每个加工步骤应被给予尽可能多的细节。
2.2 InSAR数据处理的流程
大部分的受支持的传感器来自星载系统,这十分符合逻辑,因为卫星数据是定期获取并且能覆盖全球。ERs-I/ERS-2图像支持所有软件包,而RADARSAT数据没有被全社会共同使用。处理机载数据,比处理卫星数据更加复杂,包括一些特定的非商业包。SIR-C/X-SAR 数据受一些INSAR软件的支持,因为这些数据集可以广泛的用于实现研究目的。
在具体的输入格式上,并没有明显的偏向。单看复杂(SLC)的数据支持所有商业包和大多数的非商业包。10包甚至都能够处理原始数据和SLC数据。
大多数软件包已经开发了新一代的数字高程模型(DEMS)。仅仅几个软件包不能计算DEMs,因为它们主要用于要求差分干涉的表层变化的研究。八个软件包计算所有的干涉产品,其中的七种软件包包括INSAR产品的地理编码。应当指出的是,产品例如一种差分干涉不需要包括INSAR软件包的自动程序就可以计算。通常情况下,为不同目的开发的模型已经在合成孔径雷达干涉中被采用。
经过查阅资料,以及老师指导,最后得出了一个通用的一般处理流程。其主要步骤包括:InSAR复图像对的输入,SAR 图像配准,共轭相乘,生成干涉图,滤波处理,
- 4 -
去除平地效应,相位解缠,最终生成三维DEM。其中有些步骤可能需要通过迭代来精化处理结果,有些步骤在特殊情况下也可以省略,处理流程如图2.1所示。实际处理时,往往还要一定的地面控制点来计算有关的参数。
下面将对各步进行简要概述:
1) SAR 图像预滤波
由于两幅 SAR 图像多普勒中心频率和入射角的差异,导致两幅图像存在方位向和距离向的频谱偏移,预滤波处理可以滤除不重叠的谱段,只留下重叠谱段,提高图像对的相干性。SAR 图像预滤波包括方位向滤波和距离向滤波,一般在SAR 图像粗配准后进行,根据粗配准结果预滤波。若两幅 SAR 图像频谱偏移不大,可以不做滤波处理。
2) SAR 图像配准
由于两幅 SAR 图像成像轨道、视角或时间的偏差,在距离向和方位向都会存在一定的错位和扭曲,生成干涉图之前必须使同一场景的两幅复图像精确地对准,使得复图像对中同一位置的像素对应地表面的同一回波点。完成配准后,主图像和重采样后的辅图像共轭相乘,生成干涉图和相关系数图,干涉图的幅度图可以辅助 DEM 的生成,相关系数图可以作为相位解缠的质量图,指导相位解缠的路径或权值设置。 3) 干涉图滤波
干涉图中的噪声主要来源于地形、时间或基线失相关、热噪声、数据处理噪声等。噪声的存在使得干涉图信噪比降低,从而严重影响相位解缠的精度。最常用干涉图滤波方法有:多视平均法或中值滤波法、自适应滤波算法、圆周期中值滤波法等等。 4)去平地效应
干涉图随距离向位置的不同而引起相位变化,它不反映目标的高度变化,称为平地效应。由于平地效应常常会造成干涉条纹过密,给相位解缠带来困难,因此,在相位解缠前,需要先消除平地效应,得到反映地形高度变化的稀疏干涉条纹。 5) 相位解缠
由于复数对相位的周期性,干涉图中各点的相位值只能落入主值的范围内,只是真实相位的主值,要得到反映高程信息的真实相位值,必须对每个相位值加上整数倍,我们把由相位主值得到真实相位值的过程统称为相位解缠。
6) 生成三维 DEM
通过相位解缠得到反映地形高度的真实相位后,根据 InSAR 成像基本原理及坐标转换可得到相应的数字高程图(DEM)。
- 5 -
单视复图像 单视复图像 复图像配准 预滤波处理 预滤波处理 共轭相乘 干涉相位图 滤波处理 去平地效应 相位解缠 生成三维DEM 6
图2.1 数据处理流程
- 6 -
3 系统界面开发及开发语言介绍
3.1 Java界面开发工具
所谓可视化编程,就是指在软件开发过程中,用直观的具有一定含义的图标按钮、图形化的对象取代原来手工的抽象的编辑、运行、浏览操作,软件开发过程表现为鼠标点击按钮和拖放图形化的对象以及指定对象的属性、行为的过程。这种可视化的编程方法易学易用,而且大大提高了工作效率。
系统软件界面主要运用java编写的,下面先简要介绍一下java基本知识: 1)、java语言简介
Java语言的前身是Oak语言,这种语言一开始是作为消费电子产品的开发语言提出的,而java语言却是因为网络而发展起来的。
Java具有简单、面向对象、分布式、解译性、健壮性、安全性、架构中立性、可移植性、高效能、多线程、动态性等诸多优秀的特性,这使得java语言在诞生之日起就受到人们的广泛关注并随着技术的进步获得了巨大的发展。Java目前分化为3个版本:J2SE、J2EE和J2ME,而java2SDK的版本也已经发展到了1.5版本。
2)、java编程环境
Java程序需要在Java虚拟机上运行,Java虚拟机是Java程序的运行平台。Java虚拟机屏蔽了与具体平台相关的信息,因此只要实现了Java虚拟机,Java程序就可以在任何平台上运行。
Java2SDK是Sun公司免费提供开发工具,java2SDK包括Java程序开发包和Java程序运行环境。Java2SDK还提供了用手调试的工具jdb。
Java源代码可以用任何文本编辑器编辑。Java程序可以分为两类,一类是Application,另一类是Applet。Application必须有一个main方法作为程序入口,而Applet则通过继承Applet实现。
3)、java基本语法
数据类型指的是一组性质相同的值的集合以及定义与这个值集合上的一组操作的总称。Java的简单数据类型包括字符型、整形、浮点型和布尔型。
运算符是对进行特定类型运算的符号。Java提供的运算符包括算术运算符、位运算符、赋值运算符、关系运算符、布尔运算符、条件运算符等。
表达式是变量、常量、运算符、方法调用的序列,它执行这些元素指定的计算并返回某个值。对一个表达式进行运算时,要按运算符的优先顺序从高到低进行,同级的运算符则按从左到右的方向进行。
与大多是语言一样,Java中程序流程控制有循环、分支、break个continue、方法返回和例外等。
- 7 -
3.2 界面设计常用组件介绍
一个完整的界面开始设计,首先需要确定界面的大小以及显示的位置,然后就要在界面中设置一些按钮,并依次设置按钮的布局格式。
AWT的全称是抽象窗口工具集。它是一个特殊的组件,其中包含有其他的组件。它的库类也非常丰富,包括了创建Java图形界面程序的所有工具。用户可以利用AWT,在容器中创建标签、按钮、复选框、文本框等用户界面元素。
AWT中包括了图形界面编辑的基本类库。它是Java语言GUI程序设计的核心,它为用户提供基本的界面构件。这些构件是为了使用户和机器之间能够更好地进行交互,而用来建立图形用户界面的独立平台。其中主要有以下几部分组成,包括:组件类、容器类、图形类和布局管理器。
Swing元素的屏幕显示性能要比AWT要好,而且Swing是使用纯Java来实现的。所以Swing也理所当然地具有Java 的跨平台性。但Swing 并不是真正使用原生平台提供设备,而是仅仅在模仿。因此,可以在任何平台上来使用Swing 图形用户界面组件。它不必在它们自己本地窗口中绘制组件,而是在它们所在的重量级窗口中绘制,因为Swing 绝大部分是轻量级的组件。Java x.swing包中有顶层容器和轻量级两种类型的组件,Swing 轻量级的组件都是由AWT 的Container 类来直接或者是间接派生而来的。使用 Swing 进行程序设计,首先要引入Swing 的包,创建顶层的容器,在容器中创建按钮和标签等一系列的组件,并将组件添加到顶层容器中,然后在组件的周围添加边界,最后对组件的事件进行处理。
下面就通过一个Hello World 的示例来演示第一个Swing 程序,这个程序就是按照前面所介绍的流程进行编写的。
//首先导入Swing 需要的包 import javax.swing.*; import java.awt.*;
import java.awt.event.*; //创建Hello World 类 public class HelloWorld { //创建主方法
public static void main(String[] args) { try { //try语句块,监视该段程序 设置窗口风格
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()) ;
}
catch (Exception e) { //捕获异常
- 8 -
e.printStackTrace(); //异常信息输出 }
JFrame frame = new JFrame(\第一个示例\创建顶层容器并初始化 Container c = frame.getContentPane(); //获取面板容器 JPanel pane = new JPanel(); //创建面板panel 并初始化 c.add(pane); //将面板添加到窗口
pane.setLayout(new FlowLayout()); //设置布局管理器FlowLayout final JLabel label = new JLabel(); //创建标签label 并初始化 JButton button = new JButton(\按钮\创建button 并初始化 pane.add(label); //向容器中添加组件label pane.add(button); //向容器中添加组件button 对按钮事件的处理方法
button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
label.setText(\!\设置label 显示的内容 } });
窗口设置结束,开始显示
frame.addWindowListener(new WindowAdapter() { 图形界面编程
public void windowClosing(WindowEvent e) { System.exit(0);} //程序退出 });
frame.setSize(300,240); //设置窗口大小 frame.setVisible(true); //显示窗口 } }
文本框具有文本输入和编辑的功能,文本框组件用于获取到用户所输入的文本。除此之外还有文本区,文本区和文本框的区别是,前者可以输入多行文本,而文本框只接受单行文本的输入。实现文本框功能的类是JTextField,其中提供了多个方法,可以设置输入的文本字符长度限制。密码框和文本框的外观一样,并且也继承自JTextField 类,密码框只提供专门的密码输入,输入内容不能直接显示,在密码框中以星号或其他形式的符号显示在上面。
3.3 立体观测系统主界面的设计
建立Frame。创建一个对话框应用程序,命名SAR01。在MFC AppWizard-Step
- 9 -
中选择MFC AppWizard(exe),然后选择”Dialog based(对话框模式)”一项,其余则一直按照默认到最后单击按钮”Finish”。在完成了以上步骤后,一个叫SAR01的文件建立了。然后我们就可以根据我们的需要来添加按钮、编辑框等控件,直到做出基础的主界面对话框。
程序主界面 图像输入部分 图像处理及输出部分 主图像 辅图像 预 滤 波 配 准 干涉图滤波 去平地效应 相位解缠 生成DEM 图3.3主界面设计框图
一个人性化、操作简单的界面便于提高系统界面的通用性和实用性,使用户能够直观、快速的观测到设备的各种测量信息。用户能够直观的理解自己的操作对实验或测量过程的影响。例如,用户在点击界面上相应按钮后,系统界面将会把设备所返回的数据返回到界面的图像上或相应的编辑框内,用于用户直观、快速地进行测量操作。同时,系统界面的操作遵循大多数用户所熟悉的Windows操作习惯和标准,界面风格采用对话框形式,易于用户与设备间进行交流。所以我设计了如图的界面。他的特点就是操作简单,并包含了设计要求的完整功能。
在主体框架确定和主要的界面安排确定后,我们就要开始编辑相关的功能按钮。 本界面用eclipse开发,创建工程bysj,在src源目录下创建窗口类MainFrame.java,此类包含了所有界面的控件。
界面控件如图所示:
- 10 -
Src文件夹内为源目录。
JRE system library下的是项目所以来的jar包。
显示主窗口代码。
1、new MainFrame().setVisible(true);此代码语句是创建一个frame窗口对象,然后setVisible(true)此语句表示可以被看到。
此时运行代码,显示窗口如图所示
图3.4
2、然后对此窗口进行属性设置: this.setJMenuBar(menubar);
this.setSize(new Dimension(500,400)); this.setTitle(\系统界面\);
此为设置窗口的宽度和高度
此为设置窗口标题栏为“系统界面”
this.setLocation(300, 100); 此为设置窗口在屏幕上显示的位置 this.setDefaultCloseOperation(EXIT_ON_CLOSE); 可关闭
此时界面如下:
- 11 -
图3.5
3、之后在窗口上添加2块用线包围的框体。
代码如下
this.setLayout(null); 设置layout布局方式为空 JPanel p1 = new JPanel();
创建一个Jpanel对象,也就是线框。
p1.setBorder(BorderFactory.createTitledBorder(\图像输入\));设置次线框的边框样式,以及标题为“图像输入” p1.setBounds(15, 10, 455, 68);
设置次线框在frame中显示的位置以及大小。 p1.setLayout(null); 设置layout布局方式为空
this.add(p1); 将此线框对象添加到frame窗口中。
JPanel p2 = new JPanel();
创建一个Jpanel对象,也就是线框
p2.setBorder(BorderFactory.createTitledBorder(\图像处理及输出\));
设置次线框的边框样式,以及标题为“图像输入”
p2.setBounds(15, 90, 455, 260); this.add(p2);
设置次线框在frame中显示的位置以及大小。
- 12 -
将此线框对象添加到frame窗口中。 p2.setLayout(null); 设置layout布局方式为空 运行代码后显示
图3.6
4.在p1内添加按钮,文字,文本输入控件。代码如下 JButton button1 = new JButton(\主图像\); 添加按钮,名字为“主图像”
button1.setBounds(25, 19, 80, 20); 设置按钮在p1内的位置和大小 p1.add(button1); 将此按钮添加到p1
JButton button2 = new JButton(\辅图像\); 同上
button2.setBounds(25, 45, 80, 20); 同上
p1.add(button2); 同上
- 13 -
JTextArea jta1 = new JTextArea(\距离向尺寸\); 添加文字显示区域,名字为“距离向尺寸” jta1.setBounds(115, 19, 60, 20); 设置此文本在p1的位置和大小 jta1.setEditable(false);
设置此文本不可编辑,只能显示,不能修改 p1.add(jta1); 将此文本添加到p1
JTextField jtf1 = new JTextField(); jtf1.setBounds(188,19,60,20); p1.add(jtf1);
JTextArea jta2 = new JTextArea(\方向尺寸\); jta2.setBounds(275, 19, 60, 20); jta2.setEditable(false); p1.add(jta2);
JTextField jtf2 = new JTextField(); jtf2.setBounds(352,19,60,20); p1.add(jtf2);
JTextArea jta3 = new JTextArea(\距离向尺寸\); jta3.setBounds(115, 45, 60, 20); jta1.setEditable(false); p1.add(jta3);
JTextField jtf3 = new JTextField(); jtf3.setBounds(188,45,60,20); p1.add(jtf3);
JTextArea jta4 = new JTextArea(\方向尺寸\); jta4.setBounds(275, 45, 60, 20); jta4.setEditable(false); p1.add(jta4);
- 14 -
JTextField jtf4 = new JTextField(); jtf4.setBounds(352,45,60,20); p1.add(jtf4);
之上代码说明同上,执行代码后显示效果:
图3.7
5、同理在p2内添加所需的控件,代码如下。
JPanel innerP1 = new JPanel();
innerP1.setBorder(BorderFactory.createTitledBorder(\预滤波\)); innerP1.setBounds(10,20,168,65); innerP1.setLayout(null);
JTextArea innerP1TA = new JTextArea(\方式选择\); innerP1TA.setBounds(10, 15, 60, 15); innerP1.add(innerP1TA);
Choice innerP1C = new Choice(); innerP1C.setBounds(10, 30, 60, 20); innerP1C.add(\小猪\); innerP1C.add(\小鸡\);
- 15 -
innerP1C.add(\小狗\); innerP1C.add(\小羊\); innerP1.add(innerP1C);
JButton innerP1B = new JButton(\显示结果\); innerP1B.setBounds(80, 30, 100, 20); innerP1.add(innerP1B);
p2.add(innerP1);
JPanel innerP2 = new JPanel();
innerP2.setBorder(BorderFactory.createTitledBorder(\生成DEM\)); innerP2.setBounds(250,20,168,65);
JButton innerP2B = new JButton(\显示结果\); innerP2B.setBounds(80, 30, 100, 20); innerP2.add(innerP2B);
p2.add(innerP2);
JPanel innerP3 = new JPanel();
innerP3.setBorder(BorderFactory.createTitledBorder(\配准\)); innerP3.setBounds(10,96,168,65); innerP3.setLayout(null);
JTextArea innerP3TA = new JTextArea(\方式选择\); innerP3TA.setBounds(10, 15, 60, 15); innerP3.add(innerP3TA);
Choice innerP3C = new Choice(); innerP3C.setBounds(10, 30, 60, 20); innerP3.add(innerP3C);
- 16 -
JButton innerP3B = new JButton(\显示结果\); innerP3B.setBounds(80, 30, 100, 20); innerP3.add(innerP3B);
p2.add(innerP3);
JPanel innerP4 = new JPanel();
innerP4.setBorder(BorderFactory.createTitledBorder(\相位解缠\)); innerP4.setBounds(250,96,168,65); innerP4.setLayout(null);
JTextArea innerP4TA = new JTextArea(\方式选择\); innerP4TA.setBounds(10, 15, 60, 15); innerP4.add(innerP4TA);
Choice innerP4C = new Choice(); innerP4C.setBounds(10, 30, 60, 20); innerP4.add(innerP4C);
JButton innerP4B = new JButton(\显示结果\); innerP4B.setBounds(80, 30, 100, 20); innerP4.add(innerP4B);
p2.add(innerP4);
JPanel innerP5 = new JPanel();
innerP5.setBorder(BorderFactory.createTitledBorder(\干涉图滤波\)); innerP5.setBounds(10,172,168,65); innerP5.setLayout(null);
JTextArea innerP5TA = new JTextArea(\方式选择\); innerP5TA.setBounds(10, 15, 60, 15); innerP5.add(innerP5TA);
Choice innerP5C = new Choice();
- 17 -
innerP5C.setBounds(10, 30, 60, 20); innerP5.add(innerP5C);
JButton innerP5B = new JButton(\显示结果\); innerP5B.setBounds(80, 30, 100, 20); innerP5.add(innerP5B);
p2.add(innerP5);
JPanel innerP6 = new JPanel();
innerP6.setBorder(BorderFactory.createTitledBorder(\去地平效应\)); innerP6.setBounds(250,172,168,65); innerP6.setLayout(null);
JTextArea innerP6TA = new JTextArea(\选择方式\); innerP6TA.setBounds(10, 15, 60, 15); innerP6.add(innerP6TA);
Choice innerP6C = new Choice(); innerP6C.setBounds(10, 30, 60, 20); innerP6.add(innerP6C);
JButton innerP6B = new JButton(\显示结果\); innerP6B.setBounds(80, 30, 100, 20); innerP6.add(innerP6B);
p2.add(innerP6); 运行后代码,界面如下
- 18 -
图3.8
6、使用java语言调用windows exe程序。核心代码如下:
Runtime rn = Runtime.getRuntime(); Process p = null; try {
p = rn.exec(\桌面/EXE运
行/BMP.exe\);
} catch (Exception e) { }
System.out.println(\);
原文件目录为
7、使用此代码调用BMP.exe后生成“image1.bmp”图像文件
8、使用java代码,读取硬盘中的BMP图像文件,然后显示。
- 19 -
代码如下:
public class ShowBMP extends JFrame {
} }
读取文件并显示:
SwingUtilities.invokeLater(new Runnable() {
public void run() { }
new ShowBMP(fileName).setVisible(true);
public static void main(String[] args) {
final String fileName = \public ShowBMP(String bmpFile) { }
super(\); Image image = null; try {
image = ImageIO.read(new File(bmpFile));
//得到图像文件输
入流
} catch (IOException ex) { }
JLabel label = new JLabel(new ImageIcon(image)); add(label);
setDefaultCloseOperation(EXIT_ON_CLOSE); pack();
//添加关闭按钮
桌面/EXE运行/image1.bmp\; //设置读取文件路径
});
- 20 -
图 3.9
到此系统界面的设计以及所需的技术,介绍完毕。
3.4 界面设计常用组件介绍
系统界面开发过程中使用Java的常用组件包括命令按钮、标签、标签控件、布局管理器等。下面就对各个组件作简单的介绍。
? 命令按钮(Button):当用户用鼠标左键单击按钮时,就会激活一个事件。按钮由button类创建,而button类是由Component类直接扩展的。public Button()创建一个无标签按钮;public Button(String Label)创建一个有标签按钮;public String getLabelj()可以获取按钮标签;public void setLabel(String label)可以设置按钮标签。
? 编辑框控件:编辑框(Edit Box)控件实际上是一个简易的正文编辑器,用户可以在编辑框中输入并编辑正文。编辑框既可以是单行的,也可以是多行的,多行编辑框是从零开始编行号的。
? 列表框控件:列表框主要用于输入,它允许用户从所列出的表项中进行单项或多项选择,被选择的项呈高亮度显示。列表框具有边框,并且一般带有一个垂直滚动条。列表框分单选列表框和多重选择列表框两种。
? 组合框控件:组合框把一个编辑框和一个单选择列表框结合在了一起。用户既可以在编辑框中输入,也可以从列表框中选择一个列表项来完成输入。Windows中比较常用的是下拉式和下拉列表式组合框。
- 21 -
4 仿真调试
4.1 系统界面功能
系统界面总体由两部分组成:主界面,图像显示区域,下面就这两个方面展开详细介绍。
一、主界面介绍。 主界面分为两块:
1、图像输入界面,包括主图像显示区和辅图像显示区。
2、图像处理和输出界面,包括预滤波区域、生成DEM区域、配准区域、相位解缠、干涉图滤波、去地平效应区域。 二、主图像与辅图像的显示
1、主图像显示所需核心程序如下:
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
BMP bmp = new BMP(
\and Settings/Administrator/桌面/数据
/image_800x800.bmp\);
jtf1.setText(bmp.getWidth() + \); jtf2.setText(bmp.getHeight() + \); bmp.showBMP();
} });
图像如下:
- 22 -
2、辅图像
@Override
public void actionPerformed(ActionEvent arg0) {
BMP bmp = new BMP(
\and Settings/Administrator/桌
button2.addActionListener(new ActionListener() {
面/数据/image_as_800x800.bmp\);
jtf3.setText(bmp.getWidth() + \); jtf4.setText(bmp.getHeight() + \); bmp.showBMP();
- 23 -
}
});
辅图像显示如下:
三、图像显示区域。
建立Frame。创建一个对话框应用程序,命名SAR01。在MFC AppWizard-Step中选择MFC AppWizard(exe),然后选择”Dialog based(对话框模式)”一项,其余则一直按照默认到最后单击按钮”Finish”。在完成了以上步 骤后,一个叫SAR01的文件建立了。然后我们就可以根据我们的需要来添加按钮、编辑框等控件,直到做出基础的主界面对话框。
1、在图像处理和输出点击预滤波内的“执行过程”,执行完毕后点击“显示结果”显示图片。
处理图片的类BMP.java,代码
- 24 -
public void showBMP() { }
SwingUtilities.invokeLater(new Runnable() {
public void run() { }
new BMP(getBmpFile()).setVisible(true);
public BMP(String bmpFile) { }
super(\); this.bmpFile = bmpFile; Image image = null; try { }
JLabel label = new JLabel(new ImageIcon(image)); add(label);
setDefaultCloseOperation(EXIT_ON_CLOSE); pack();
image = ImageIO.read(new File(bmpFile)); } catch (IOException ex) { public String getBmpFile() { }
return bmpFile; private String bmpFile;
//
});
在“显示结果”添加监听事件,代码如下
innerP1B1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
new BMP(
\and Settings/Administrator/桌面/数据
/image_fil_IN_800x800.bmp\)
- 25 -
}
.showBMP();
});
显示出图片:
图4.1预滤波后图像
2、在图像处理和输出点击“配准区域”的“执行过程”,执行完毕后点击“显示结果”,显示图片。
innerP3B1.addActionListener(new ActionListener() {
new BMP(
\and Settings/Administrator/桌面/数据.showBMP();
- 26 -
@Override
public void actionPerformed(ActionEvent arg0) {
/image_IN_800x800.bmp\)
} });
\and Settings/Administrator/桌面/数据.showBMP();创建BMP对象,并显示。
addActionListener添加事件监听。new BMP(
/image_IN_800x800.bmp\)
图4.2配准后图像
3、在图像处理和输出点击“干涉图滤波”的“显示结果”,显示图片。 innerP5B.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new BMP(
\and Settings/Administrator/桌面/数据
/image_fil_IN_fil_800x800.bmp\)
- 27 -
.showBMP();
} });
图4.3干涉图滤波后图像
4、在图像处理和输出点击“去地平效应”的“显示结果”,显示图片。 innerP6B.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new BMP(
\and Settings/Administrator/桌面/数据.showBMP();
/image_fil_IN_fil_flat_800x800.bmp\)
} });
- 28 -
图4.4去地平效应后图像
5、在图像处理和输出点击“相位解缠”的“执行过程”,执行完毕后点击“显示结果”,显示图片。
innerP4B1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new BMP(
\and Settings/Administrator/桌面/数据.showBMP();
/image_fil_IN_fil_flat_rw_800x800.bmp\)
} });
- 29 -
图4.5 相位解缠后图像
6、在图像处理和输出点击“生成DEM”的“显示结果”显示图片。
- 30 -
图4.6三维DEM图像
结 论
本设计方案经过需求分析、界面设计和代码编写三个过程,系统界面已基本上完成。回顾本次设计,在设计方案中完成的工作主要有:
(1)完成了系统界面的总体设计。基本达到了要求中的功能。
(2)实现了Java对界面的设计,并实现Java对exe程序和BMP图片的调用和显示。
- 31 -
正在阅读:
鹿国萍-星载SAR立体观测系统界面设计05-31
江西省南丰县第一中学高中语文 好仁不好学,其蔽也愚教案 新人教版选修《先秦诸子选读》08-20
近五年高考数学试卷分析02-29
广厦建设集团第五建筑公司质施工现场安全生产管理制度04-06
我的幼师妈妈作文500字06-16
2015-2016学年度青岛版初三数学上册一元二次方程单元综合检测题(带答案)08-12
给政府的申请报告优秀8篇03-27
女人吃豆腐的好处02-10
2012-2016年中国模型遥控飞机市场竞争格局与企业竞争力评价(报告精选)06-11
保运计划01-07
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 界面设计
- 观测
- 立体
- 系统
- SAR
- HT1621液晶显示驱动详细原理及程序 - 图文
- 毕业论文1
- 汽车修理工技师理论知识复习题
- 发热电缆使用说明书
- 自动回转刀架设计说明书
- 2016年餐饮O2O发展现状及市场前景分析
- 人教版高中英语单词表必修五 带音标
- 色彩构成结课论文
- GB 9706.1医用电气设备 安全通用要求 试验模板
- 市政道路、给排水施工组织设计
- 0811新一代网银内管系统操作(分行操作员)
- UML课后习题答案
- 拓展语文视野 提高学习能力
- 2016年手持移动电视现状及发展趋势分析 (目录)_ss
- 新作文听话与不听话韩国岁月号沉船 - 图文
- 纪检监察干部必备基本业务知识
- 六年级上册数学导学案全册
- 3-《物联网应用技术》专业可行性报告
- 2017年最新人教版小学三年级语文上册全册导学案(表格式)
- 如皋市教育局文件:关于钱跃华等同志职务任免的通知(皋教发〔201