您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > imageJ中文开发教程
ImageJ开发教程(苑永超整理,仅供参考,勿作商业用途)目录一、ImageJ简述....................................................................................................2二、ImageJ内部结构.............................................................................................3三、ImageJ通过插件扩展功能的方法....................................................................4三、插件编辑、编译、运行与部署.........................................................................6四、主要的包介绍..................................................................................................8五、重要类方法介绍............................................................................................101、创建图象和图象栈.......................................................................................102、创建图象处理器..........................................................................................113、载入和存储图象..........................................................................................114、图象参数.....................................................................................................115、操作像素.....................................................................................................116、图象转换.....................................................................................................127、直方图与图象统计量...................................................................................128、点运算.........................................................................................................129、滤波器.........................................................................................................1310、几何运算...................................................................................................1311、图形运算...................................................................................................1412、显示图象和图象栈.....................................................................................1413、图象栈上的操作........................................................................................1514、感兴趣的区域............................................................................................1615、图象属性...................................................................................................1716、用户交互...................................................................................................1717、插件..........................................................................................................1818、窗口管理...................................................................................................1919、其他函数...................................................................................................19六、学习资源.......................................................................................................20ImageJ官网()上有英文的用户手册和教程,以及一些例子。本教程主要是为看英文比较累的朋友提供一些快速的入门。如果想在ImageJ上开发自己的图象处理算法,建议先熟悉java编程知识。本教程基本不对ImageJ菜单中提供的各种文件操作、图象编辑、图象处理、图象分析等功能作详细介绍,请读者自行探索;也不准备介绍数字图象处理的各种算法和操作,本文假定读者是图象处理方面的专业人士,本教程的重点是如何进行二次开发,如果不特别指出,文中的部分内容和例子都为ImageJ软件包自带或采自相关书籍(如《数字图像处理-java语言描述》),中文注释是后加的。一、ImageJ简述图象处理的流程无外乎就是打开图象数据文件,将图象数据加载到内存,然后对该内存中的图象数据进行一系列处理(分割、检测、滤波、合成、识别、显示等等),最后可能还需要将处理结果保存成某种格式的文件。对于一般的用户来说,类似ACDsee之类的傻瓜式的软件足够了。但是科学人士除了希望有广泛的、成熟的处理算法库可以直接调用外,一般还希望开发自己的特有的图象处理算法、特有的图象处理步骤、甚至特有的交互过程。ImageJ就是这样的工具软件。ImageJ是基于Java的,ImageJ在设计上实现了一个可以扩展的基本框架,开发人员可以通过其提供的接口来扩展图象处理功能。ImageJ提供了很多现成的功能,这些功能可以通过菜单来调用,也可以调用相应的类的方法的API。用户只要按照接口要求开发好自己的处理模块,并按照要求部署和配置,Image就可以自动加载和调用。ImageJ是完全开源和免费的,特别适合教学和科研。其关键的特征有:1、在菜单上集成了一系列的交互式工具,用于创建、加载、编辑、分析、处理、保存图象,支持常见的图象文件格式。目前,ImageJ主菜单上的集成的主要功能:!File:打开、保存、创建新的图象文件。!Edit:图象的编辑和绘制操作。!Image:图象的修改、转换、几何操作。!Process:图象的点运算、滤波器、以及多幅图象之间算法操作。!Analysze:对图象数据进行统计分析、用直方图或其他格式显示出来。!Plugin:编辑、编译、执行、管理用户自己定义的插件。2、提供简单的插件机制,帮助开发人员专注于自己的图象处理过程的开发,从而扩展ImageJ的功能。3、提供宏语言或javascript脚本以及解释器,可以通过组合现有的函数,来实现客户化的处理过程。这种方式不需要用户具有Java知识。此外还有一些使用其他脚本语言扩展的方式。用户要想在ImageJ的基础上扩展自己的图象处理功能、进行二次开发,需要了解Image内部结构。二、ImageJ内部结构上面是一个ImageJ的内部结构图,我们结合该图以“打开并显示一个图象”的功能为例说明一下ImageJ的工作原理:1、首先创建一个打开文件类FileOpener对象,并调用其Open方法。2、该Open方法首先从图象文件中读取像素数据,并放到数组pixels[]中。3、随后创建一个ImagePlus的对象。如图所见,这个对象成员中包含有一些指针,指向其他对象:!一个图象处理器对象ImageProcessor的子类:该对象主要是提供对当前图象数据的处理操作。(像素数据保存有对应的像素数组pixels[])。!一个图象栈对象ImageStack:用来保存多幅图象数据或图象处理的中间数据。!文件信息类对象fileInfo:存有图象的尺寸、位深度等的相关信息。!AWT的图象对象类img:通过操作将图象数据映射到Image对象上,实现图象的显示。!Frame窗口类的子类对象ImageWindow:实现对图象窗口的管理。上述这些对象在FileOpener对象的open方法中创建,并赋予ImagePlus中的相应成员:ip,stack,fileInfo,img,win。4、如果该图象需要显示,则调用ImagePlus的show方法。图1ImageJ图象及图象栈的内部表示该方法调用图象处理器对象ip的createImage()方法创建和图象数组数据对应的图象类Image对象。并将img指向它。然后创建ImageWindow窗口。设置窗口画布、窗口布局等。最后通过ImagePlus的draw()方法调用完成绘制。切记:FileOpener的open()方法返回的是对应的ImagePlus对象。通过该对象,我们可以毫不费力地找到上述相关的对象,尤其是拥有众多图像处理操作和算法的ImageProcessor,调用需要的方法,从而快捷地完成我们的工作。三、ImageJ通过插件扩展功能的方法插件是一种小型的程序模块,该模块遵循简单的标准化接口,可以被集成到软件框架中,从而扩展宿主软件的功能。ImageJ的许多内置的图象处理功能也是通过插件来实现的。这里所谓的简单的标准化接口其实就是Java的接口类。ImageJ提供如下三种不同的接口插件:!PlugIn:启动该插件时不需要打开一幅图象!PlugInFilter:启动该插件时,需要传递给该插件一幅打开图象的指针。该插件的操作将施加在该图象上。!PlugInFrame:该插件可以扩展一个独立的操作交互界面。很显然,通过PlugIn扩展的插件,如果要处理图象,则需要自己去处理获取图象数据,这可以通过获取一个已经被打开的
本文标题:imageJ中文开发教程
链接地址:https://www.777doc.com/doc-4591265 .html