imageJ中文开发教程.docx

您所在的位置:网站首页 imagej中文教程分享 imageJ中文开发教程.docx

imageJ中文开发教程.docx

2023-07-21 05:08| 来源: 网络整理| 查看: 265

1、ImageJ 开发教程(苑永超 整理,仅供参考,勿作商业用途)目录 TOC o 1-5 h z HYPERLINK l bookmark8 o Current Document 一、ImageJ 简述 2二、ImageJ 内部结构 3 HYPERLINK l bookmark16 o Current Document 三、ImageJ 通过插件扩展功能的方法 4 HYPERLINK l bookmark28 o Current Document 三、插件编辑、编译、运行与部署 6 HYPERLINK l bookmark36 o Current Document 四、主要的包介绍 8 HYPE

2、RLINK l bookmark38 o Current Document 五、重要类方法介绍 10 HYPERLINK l bookmark40 o Current Document 1、创建图象和图象栈 10 HYPERLINK l bookmark46 o Current Document 2、创建图象处理器 11 HYPERLINK l bookmark52 o Current Document 3 、载入和存储图象 11 HYPERLINK l bookmark54 o Current Document 4、图象参数 11 HYPERLINK l bookmark56 o Curre

3、nt Document 5、操作像素 11 HYPERLINK l bookmark58 o Current Document 6、图象转换 12 HYPERLINK l bookmark60 o Current Document 7、直方图与图象统计量 12 HYPERLINK l bookmark62 o Current Document 8、点运算 12 HYPERLINK l bookmark64 o Current Document 9、滤波器 13 HYPERLINK l bookmark66 o Current Document 、几何运算 13 HYPERLINK l book

4、mark68 o Current Document 、图形运算 14 HYPERLINK l bookmark70 o Current Document 、显示图象和图象栈 14 HYPERLINK l bookmark72 o Current Document 、图象栈上的操作 15 HYPERLINK l bookmark74 o Current Document 、感兴趣的区域 16 HYPERLINK l bookmark76 o Current Document 、图象属性 17 HYPERLINK l bookmark78 o Current Document 、用户交互 17 H

5、YPERLINK l bookmark94 o Current Document 17、插件 18 HYPERLINK l bookmark96 o Current Document 18 、窗口管理 19 HYPERLINK l bookmark98 o Current Document 19 、其他函数 19 HYPERLINK l bookmark100 o Current Document 六、学习资源 20绍数字图象处理的 理方面的专业人士, 果不特别指出,文中的部分内容和例子都为ImageJ软件包自 带或采自相关书籍(如绍数字图象处理的 理方面的专业人士, 果不特别指出,文中的部分

6、内容和例子都为ImageJ软件包自 带或采自相关书籍(如ImageJ 官网( HYPERLINK /ij/index.html /ij/index.html )上有英文的用户 手册和教程,以及一些例子。本教程主要是为看英文比较累的 朋友 提供一些快速的入门。如果想在 ImageJ 上开发自己的图象处理算 法,建议先熟悉 java 编程知识。本教程基本不对 ImageJ 菜 单中提供的各种文件操作、图象编辑、图象处理、图象分析等功能 作详细介绍,请读者自行探索;也不准备介各种算法和操作,本文假定读者是图象处本教程的重点是如何进行二次开发,如数字图像处理-java 语言描述) ,中 文注释是后加的

7、。一、 ImageJ 简述图象处理的流程无外乎就是打开图象数据文件,将图象数 据加载到内存,然后对该内存中的图象数据进行一系列处理 (分割、检测、滤波、合成、识别、显示等等) ,最后可能 还需要将处理结果保存成某种格式的文件。对于一般的用户来说,类似 ACDsee 之类的傻瓜式的软件足 够了。但是科学人士除了希望有广泛的、成熟的处理算法库 可以直接调用外,一般还希望开发自己的特有的图象处理算 法、特有的图象处理步骤、甚至特有的交互过程。 ImageJ 就是这样的工具软件。ImageJ 是基于 Java 的 ,ImageJ 在设计上实现了一个可以扩展的 基本框架,开发人员可以通过其提供的接口来扩

8、展图象处理 功能。 ImageJ 提供了很多现成的功能,这些功能可以通过菜 单来调用,也可以调用相应的类的方法的 API 。用户只要按照接口要求开发好自己的处理模块,并按照要求 部署和配置,Image 就可以自动加载和调用。ImageJ 是完全开源和免费的,特别适合教学和科研。其关键的 特 征有:1 、在菜单上集成了一系列的交互式工具,用于创建、加载、编辑、分析、处理、保存图象,支持常见的图象文 件 格式。目前, ImageJ 主菜单上的集成的主要功能:File:打开、保存、创建新的图象文件。Edit:图象的编辑和绘制操作。Image: 图象的修改、转换、几何操作。Process: 图象的点运

9、算、滤波器、以及多幅图象之间算法操作。Analysze: 对图象数据进行统计分析、用直方图或其他格式显示出来。Plugin: 编辑、编译、执行、管理用户自己定义的插件。2 、提供简单的插件机制,帮助开发人员专注于自己的图象处理过程的开发,从而扩展 ImageJ 的功能。3 、提供宏语言或javascript 脚本以及解释器,可以通过组合 现有的函数,来实现客户化的处理过程。这种方式不 需 要用户具有 Java 知识。此外还有一些使用其他脚本语言 扩展的方式。用户要想在 ImageJ 的基础上扩展自己的图象处理功能、进 行二次开发,需要了解 Image 内部结构。二、ImageJ内部结构Imag

10、cPlusImageCanvas(java.at .Canvas)ImageWindow(java,awt. Frame)java.awt. I mageImagcPlusImageCanvas(java.at .Canvas)ImageWindow(java,awt. Frame)java.awt. I mage11 Tnage ProcessorrkTT 丄iI11 Tnage ProcessorrkTT 丄iIfile, URL图1 ImageJ图象及图象栈的内部表示上面是一个ImageJ的内部结构图,我们结合该图以“打开并显示一个图象”的功能为例说明一下ImageJ的工作原理:1、 首

11、先创建一个打开文件类FileOpener 对象,并调用其Open方法。2、该Open方法首先从图象文件中读取像素数据,并放到数组pixels中。3、 随后创建一个ImagePlus的对象。如图所见,这个对象成员中包含有一些指针,指向其他对象:一个图象处理器对象ImageProcessor的子类:该对象主要是提供对当前图象数据的处理操作。(像素数据保存有对应的像素数组pixels)。一个图象栈对象ImageStack :用来保存多幅图象数据或图象处理的中间数据。文件信息类对象filelnfo :存有图象的尺寸、位深度等的相关信息。AWT的图象对象类img:通过操作将图象数据映射到Image对象上

12、,实现图象的显示。Frame 窗口类的子类对象 ImageWindow :实现对图象窗口 的管理。上述这些对象在 FileOpener 对象的 open 方法中创 建 ,并 赋 予 ImagePlus 中 的 相 应 成 员 : ip,stack,fileInfo,img,win 。4、如果该图象需要显示,则调用ImagePlus 的 show 方法。该方法调用图象处理器对象ip 的 createImage()方法创建和图象数组数据对应的图象类Image 对象。并将img 指向它。然后创建 ImageWindow 窗口。设置窗口画布、窗口布局等。 最后通过 ImagePlus 的 draw (

13、)方法调用完成绘制。切记:FileOpener 的 open() 方法返回的是对应的 ImagePlus 对象。通过 该对象,我们可以毫不费力地找到上述相关的对象,尤其是 拥 有众多图像处理操作和算法的 ImageProcessor ,调用需要的 方法, 从而快捷地完成我们的工作。三、ImageJ 通过插件扩展功能的方法插件是一种小型的程序模块,该模块遵循简单的标准化接 口,可以被集成到软件框架中,从而扩展宿主软件的功能。 ImageJ 的许多内置的图象处理功能也是通过插件来实现的。 这里所谓的简单的标准化接口其实就是 Java 的接口类。ImageJ 提供如下三种不同的接口插件:Plugin

14、 :启动该插件时不需要打开一幅图象PluginFilter :启动该插件时,需要传递给该插件一幅打开 图象的指针。该插件的操作将施加在该图象上。PluginFrame :该插件可以扩展一个独立的操作交互界面。很显然,通过 Plugin 扩展的插件,如果要处理图象,则需 要自己去处理获取图象数据,这可以通过获取一个已经被打开 的图象文件的指针、自己打开或新创建一个图象文件并获取指针,或直接在内存中开辟图象数据的方式实现。该方式的自由度很高。该接口的用法示例如下:/对话框打开并显示一个图像文件import ij.plugi n.*;import ij.plugi n.frame.*;import

15、ij.*;public class Test_Plugl n impleme nts Plugi n public void run( Stri ng arg) Opener xx = new Open er();xx.ope n(); / end of class用户要实现该接口的 run 方法。实际上,用的最多的是通过例如下:实际上,用的最多的是通过例如下:PluginFilter 扩展的插件。该接口的示/实现将一幅 8bit位的灰度图取反import ij.I magePlus;import ij.plug in filter.Plug In Filter;import cess .I

16、mageProcessor;public class My ln verter impleme nts PlugI nFilter /取列为u/取列为u,行为v位置的像 素的值/设置列为u,行为v位置的如果用户要实现复杂的界面和交互,可以扩展plugFrame 插件。public int setup(Str ing arg, ImagePlus im) retur n D0ES_8G; / this plug in accepts 8-bit grayscale imagespublic void run (ImageProcessor ip) in tw =ip.getWidth(); /

17、获得图象宽度in th=ip.getHeight(); / 获得图象高度/ iterate over all image coord in atesfor (i nt u = 0; u w; u+) for (i nt v = 0; v h; v+) intp=ip.getPixel(u, v);/取列为u,行为v位置的像素的值ip.putPixel(u, v, 255 -p); /设置列为u,行为v位置的像素 值用户要实现该接口的两个方法。public int setup(String arg, ImagePlus im)系统执行 PlugInFilter 类型的插件时,首先调用 setup

18、 方法获得 插件本身的一些信息。该方法利用打开图象的ImagePlus 对象im 中包含的信息,进行版本校验,处理参数的设置等操作。public void run(ImageProcessor ip)该方法接收 ImageProcessor 类型的对象,其中包含待处理的 图象及其相关信息。上面的程序段里利用了相关的方法获取图 象尺寸、像素等信息。另外上述的run() 方法中还可以通过 直接操作像素数组来实现类似的功能,但效率要高多了,程 序段如下:public void run (ImageProcessor ip) in tw =ip.getWidth();/获得图象宽度in th=ip.g

19、etHeight();/获得图象高度byte pixels =(byte)ip.getPixels() ; / 获得像素数组/ iterate over all image coord in ates for (i nt u = 0; u w; u+) for (i nt v = 0; v New ,在选择对应的插件 类型,来生成相应的插件原型源代码,用户可以在该代码的基础上编写自己的插件。但是ImageJ 内置的 java 代码编辑器不能提供在线的语言帮助,不是很 方便。用户可以通过 Eclipse 或其他集成编辑器开发插件。、 编译ImageJ 自带了 java 编译器, 可以在 Imag

20、eJ 的菜单中使用。 选择 Plugi ns-Compile andRun.选择要编译和执行的插件。这种方式,插件编译后会立即被加载和执行,如果是PluginFilter插件则一定要用菜单方式打开一幅可被处理的图像文件,否则插件 执行会报错。、 菜单设置 要从菜单上执行该插件功能。选择 Plugins-Shortcuts-Install Plugins. . 在弹出的对话框中设置如下:Plugin :从下拉列表中把你的插件选择出来( ImageJ 已经对部署到FLgs或下一级的目录下的插件自动识别出来料)。Menu :选择要将菜单项放到那个子菜单项目 下 。 ( 一 般 插 件放 到plugi

21、ns 或 plugins/shortcuts 下)。Command :显示在菜单上的对应的菜单项的名称。Shortcuts:对应的快捷键(一般是F+数字,如F4)。Argument :该插件需要的参数,对应插件的 setup 方法中要传入的参数。、 从菜单中去除菜单项选择Plugins-Shortcuts- remove.,从对话框列表中选择要删除 的菜单项名称。 ImageJ 重起后生效。6、 使用 Eclipse 开发插件使用Eclipse 的好处:a、随时可以得到语法帮助,b、相关类和方法的用法帮助,c、自动补全完成功能,d、调试和跟踪代码的执行。开发效率将大大提高。使用 Eclipse

22、 步骤如下:从官网下载最新的ImageJ 源码包(我下载的是这个链接 的包 HYPERLINK /ij/download/src/ij145e-src.zip%ef%bc%89%e3%80%82 /ij/download/src/ij145e-src.zip)。用eclips建一个java的空的工程(我命名为ImageJ),将145&src.zip包解开,将其中的 source 下的子目录等内容拷贝到 ImageJ 下通过选择 ”project -clean ”来编译 ImageJ 工程, Complier.java 会报 错,这是因为使用的缺省的 java1.5 版本太高。具体做法是:将 I

23、mageJ 安装包自带的 jre 目录拷贝到 ImageJ 的目录下, 在工程浏览窗口的 ImageJ 工程上右键打开菜单,选择工程 属性,打开 javaBuild Path-Libraries 。先将原先的 1.5 版本的 jre 删除,然后选择 Add Libraries ,在 libraries type 类 型列表框 中选择 ”jre system library ”,再选择 ”alternate JRE ”,按 Install JREs 按牛,在新的对话框中选择”Add”, 在新的对话框中选择 ”Browse 按纽,选择 ImageJ 目录下的 jre 目录即可。确认 后 jre1.

24、4 就被添加进了了,选择JRE 为刚添加的 jre 版本的就 OK 了。此时可以选择运行 ImageJ 的 main() 方法,成功则显示 ImageJ 的主界面。注意,在libraries type类型列表框不要选择J2EE1.4,而要使用 jesystem library 去添加 jre1.4 , 否则会报 java/lang/NoClassDefFoundError: java/lang/Object)。这时如果 ImageJ 下 Plugins 目录下有插件源代码,则浏览窗口提示有错误。提示的错误是“ declare package “” not expectpackage XXX”

25、。 这 是 因 为 插 件 的 java 文 件 前 面 没 有 package 语句,因为这些代码并不打到IJ.jar 包里去,不影响 ImageJ 本身的编译。切记不要给插件加 package声明语句,否则虽然错误提示没了,插件执行却会出错。要开发插件,只需要在 Plugins 下创建新的类即可,要继承 相应的接口,实现要求的方法,注意将自动添加的包声明去掉。要编译插件,在 eclipse 菜单中选择 project-clean 即可。要使用最新的 IJ.jar 可以通过 ImageJ 菜单的 help-ImageJ n ews 选择升级。大量的插件可以通过 ImageJ 菜单的 help

26、-plugins 在线访问。7 、 使用宏程序 对于经常使用的一系列的插件调用,可以通过ImageJ 的 Plugins-Macros-Record 记录成为宏程序,这样只要 选择执行该宏就可以实现原先的一系列操作料。要充分发掘 ImageJ 的功能,需要熟悉 Image 主要的类结构和 相互关系,下面按照功能介绍以下主要的包的类图结构。IJFrame(from 饰1 WindowManager-SappletA叩同 (tfom apple!) t3_SijIJFrame(from 饰1 WindowManager-SappletA叩同 (tfom apple!) t3_SijappletIm

27、agcPhji、ImaccSiackImagelAppletMenu1Execute rLookUpTable四、主要的包介绍图2 ImageJ 中ij包的类图类型(所在包)主要类类说明图象(包ij)ImagePlus该类的一个对象和一幅要处理的图象(或 图象序列)相对应。包含有图象处理类ImageProcessor抽象类。ImageStack可扩充图象序列(栈),依附于 ImagePlus对象图象处理器(包 Icess )ImageProcessor这是一个抽象类,有四个派生类ByteProcessor用于8位(byte )类型的灰度图象和索引 彩 色图象的处理类。其子类Bin aryPro

28、cessor 实现了仅包含 0和255两个像素值的图象。ShortProcessor16位灰度图象的处理类。FloatProcessor32位(浮点型)图象的处理类。ColorProcessor32位彩色(3X8位RGB通道加上 8位 通道浮)图象的处理类。插件(包 ij.plugin )plugi n包含 void run(String arg) 方法。 不需要先打开图象。插件(包ij.plug in .filter)PlugI nFilter要实现下面两个方法int setup(Str ing arg, ImagePlus imp) void run (ImageProcessor ip)

29、插件(包ij.plugin.Frame)PlugI nFrame用户要实现界面相关的消息处理类型(所在包主要类类说明GUI(包 ij.gui )ColorChooser颜色选取对话框类NewImage交互式创建新图象的类Gen ericDialog提供一套标准父互字段可配置 的对话框窗口类ImageCa nvasAwt中Canvas的子类,描述窗口中显示图象的映射关系(源矩形 框、缩放因子),也处理发送到该窗口 的键盘和鼠标事件ImageW in dowAwt中Frame 的 子类,用于 显 示ImagePlus 类型图象的屏幕窗 口。 该类对象包含一个 ImageCa nvas类的实例,用于

30、图象的实际显示。Roi定义一个用户选取的感兴趣区 域。是ROI 类(Line,OvalRoi,PolygonRo) 等的超类Ellir FillerImtiizeStiiHMa-ShriStabticKUyEcSlDlistlCSoKyil MillerTy peC htp,酣 rtc1FtDaiProces&orC cilfirPnv 已 mJniiiigjcC on cncr,RytePrQecssoiBlirtlFTCubeSlat KCoiuencrFki.ill3hSXLEllir FillerImtiizeStiiHMa-ShriStabticKUyEcSlDlistlCSoKyi

31、l MillerTy peC htp,酣 rtc1FtDaiProces&orC cilfirPnv 已 mJniiiigjcC on cncr,RytePrQecssoiBlirtlFTCubeSlat KCoiuencrFki.ill3hSXL:iHi 门 3巧 Proeeitsor中cess 包的类图图 3 ImageJ匚 S2iL3rflE1lkIlcr二” 二r! FlcKiiiiEi&ncstoIorStali il i ,!ITMedkirtCul窗口管理 (包 lj)Win dowMa nger提供一套静态方法用于ImageJ 窗口管理工具(包)提供了一套静态工具方法,包 括图

32、象选取、创建、打开和保存以及 操作环境信息获得的方法R am*demStream匚nTiffDccMlcrCisssL&aderffrorn 1 ang)Tools(from utilF ramefrom nwt jImpon DialogR am*demStream匚nTiffDccMlcrCisssL&aderffrorn 1 ang)Tools(from utilF ramefrom nwt jImpon DialogFlugioC lassLoaderJpegEncodcrJpglnfoOpenDialog输入输出(包 jj.io)包含从文件度取(载入)和往 文件写入各种格式和编码图图

33、4 ImageJ 中jj.io包的类图五、重要类方法介绍1、创建图象和图象栈ImageJ中有多种方式创建图象。ImagePlus 类中支持创建一个空的ImagePlus 对象、从URL路径中创建、从给定的Image 图象中创建、从ImageProcess对象中也可以创建、从给定的图象栈中可以创建、可以创建一个空 的图象栈、可以返回与当前ImagePlus相关联的图象栈。IJ类支持创建一个给定参数的ImagePlus 图象NewImage 类用几个静态方法支持创建ImagePlus 图象和图象栈ImageProcessor 支持用Image 的Createlmage()方法创建当前图象的副本 并

34、以标准Image图象返回。2、创建图象处理器ImageProcessor 对象表示可以被创建、处理、销毁但一般不能在 屏 幕上显示的图象。ImagePlus 的 getProcessor 返回指向图象的 ImageProcessor 对象的引 用,如果没有,则创建一新的,如果没有 Image 则返回空。 setProcessor 设置该对象ImageProcessor 提供了创建 createProcessor, 复制 duplicate 。 子类中可以从 Image 图象创建或按照指定尺寸、色彩等参数构造。3、载入和存储图象IJ 类中提供了很多类似菜单功能的静态方法:Run(“Open”/”

35、Revert”/”Save”)可用于 IO 的方法 open(path)/openImage(path)/save(path)/saveAs(fmt,path)Opener 类提供了重载的 open()/openImage()/openMultiple() 方法打开模式设置,以及针对特定格式的打开方 法、 保存方法。FileOperner 类从该类保存的文件信息的位置上打开或保存图象4 、图象参数ImageProcessor 中获得图象的宽度和高度、打开或关闭像素插值 ColorProcessor 提供彩色转灰度,权值获取/设置getWeightingFactors() set Weighti

36、ngFactors()5、操作像素ImageProcessor 提供了很多坐标访问方法: getPixel(x,y)/putPixel(x,y,val) get(x,y)/put()x,y 是 2D 索引不验证参数的版本 get(i)/put(i) 是按照 1D 索引访 问 带 f 是浮点型的版本。获取像素数组指针getPixels还可以整行 /整列 /整个数组的操作彩色图象使用 getRGB()/setRGB()/getHSB()/setHSB() 等进行6、图象转换ImageProcessor 实现了不同类型间图象相互转换的基本方法(非破 坏性转换)convertToByte/conver

37、tToShort/convertToFloat/convertToRGBImagePlus 类型可以通过 ImageConvert 类的方法进行转换(破 坏性转换) convertToGray8()/convertToGray16()/convertToGray32()/ convertToRGB()/converToHSB/convertHSBToRGB convertRGBStackToRGB( 将 RGB 栈转成单幅的 RGB 图象 ) 诸如此类7、直方图与图象统计量ImageProcessor 的方法 获取图象或感兴趣区的直方图 Int getHistogram() Int getHi

38、stogramMax() Int getHistogramMin() Int getHistogramSize() Int setHistogramRange() Int setHistogramSize() 其 他 的 统 计 量 可 通 过 ImageStatictics 及 其 子 类 ByteStaticticsShortStaticticsFloatStaticticsColorStaticticsStackStatictics 实现。8、点运算对 ImageProcessor 类型的对象的整幅图或感兴趣区域的全体像素施加 该运算。abs() 给每个像素替换成其绝对值 add(val

39、) /and(val)/or(val)/sqr()/sqrt()/xor/log() applyTable(int lut) / 查表影射 autoThreshold() / 转 2 值图象 gamma(g) / gamma 矫正max(val)/ min(val)/ 将所有大于 /小于 val 的值设置成 valmax(val)/ min(val)multiply(val) 乘 /noise(val) 加噪声随即量val threshold(int th) / th0, 否则255多幅像素运算, ImageProcessor 组合 2 幅图的方法: copyBits(ImageProcess

40、or, int, int, int mode ) mode 运算类型中在 Blitter 中定义: COPY/ADD/AND/COPY_INVERTED/DIFFERENCE/DIVIDE/9、滤波器imageProcessor 类提供滤波方法:void convolve(float kernel, int w, int h ) 对当前图象执行线形卷积,滤波kernel 大小为 w*h 。 void convolve3x3(int kernel) 对当前图象执行线形卷积,滤波kernel 大小为 3*3int 数组dilate()使用 3*3 最小滤波器膨胀运算erode()使用 3*3 最小

41、滤波器腐蚀运算findEdges()使用 3*3 边界滤波器运算( Sobel 算子)medianFilter ()使用 3*3 中值滤波器运算smooth()使用 3*3 均值滤波器运算(箱式滤波)sharpen ()使用 3*3 类似 Laplacian 的滤波核锐化处理10 、几何运算ImageProcessor 类支持如下运算ImageProcessor crop()对象/ 对当前图象或 ROI 区域创建一个新的 ImageProcessor void flipHorizontal() 当前图象或 ROI 区域破坏性水 平镜像 void flipVertical() 当前图象或 ROI

42、 区域破 坏性垂直镜像 ImageProcessor resize (int w,int h)对象/ 对当前图象或 ROI 区域产生一个缩放的新的ImageProcessorM 象 Void rotate(double an gle) /破坏性按照一定角度顺时针地旋转 angle 角度 ImageProcessor rotateLeft()/ 按照一定角度逆时针地旋转90角度,/ 并返回一个新的 ImageProcessorImageProcessor rotateRight()/ 按照一定角度顺时针地旋转90角度,/ 并返回一个新的ImageProcessor Void Scale(doub

43、leXScale, double yScale)/ 破坏性地比例缩放图象或 ROI 区域Void setBackgroundValue ( double value )/ 设置图象背景值,用于 rotate 或scale Boolean getInterpolate()/ 获取当前的双线性插值状态Void setInterpolate(bool)/ 获取当前的双线性插值状态Double getInterpolatedPixel ( double x, double y )/ 返回使用插枝得到的对连续坐标(x,y) 得到的像素值 Double getInterpolatedRGBPixel (d

44、oublex, double y )/ 对彩色图象返回使用插枝得到的对连续坐标(x,y) 得到的像素 值11 、图形运算ImageProcessor 提供了一系列的绘制 /填充各种图形的函数。Void drawXXX() 形式Void fill() / fillXXX( )形式Void setXXX () 设置对象属性,线宽等、显示图象和图象栈只有 ImagePlus 对象可以使用下面的方法, ImageProcessor 必须通过得 到关联的 ImagePlus 对象来显示的。Void draw()/draw(x,y,wid,height)Int getcurrentSlice / 获得当前

45、图象栈片段的索引号Int getID / 得到图象的 IDString getTitle() 得到图象的名字ImageWindow getWindow() / 返回显示用的窗体Void hide() / 关闭显示当前图象的任何窗体Void repaintWIndow()Void setSlice(index)Void setTItle(String)Void show() / show(statusString) /打开窗口显示此图象 (状态条中显示文本 ) Void updateAndDraw() / 根据 ImagPocessor 数据更新图象并显示Void updateAndRepain

46、tWindow() / 当前图象数据重新绘制,并更新头信 息(纬度 / 类型等)、图象栈上的操作ImagePlus 类:创建空的图象栈 ( 具有和 ImagePlus 相同的宽度、高度、色表,新栈 自动依附ImagePlus)ImageStack createEmptyStack() 取得与 ImagePlus 相关联的图象栈,没有则调用 getStack()ImageStack getImageStack() 取得与 ImagePlus 相关联的图象栈 ,不存在则调用 createEmptyStack() 成单层 栈ImageStack getStack()取得栈大小Int getStack

47、Size() 替换当前图象栈Void setStack(String title, ImageStack stack)ImageStack 类:将 IP 指定的图象加载到栈的尾部,并给新 层分配 label Void addSlice(String label, ImageProcessor ip )将 IP 指定的图象加载到栈的第 n 层之后,并给新 层分配 label Void addSlice(String label, ImageProcessor ip, int n )将由 pixels 指定的(像素数组)图象加入到栈的末尾Void addSlice(String label, Ob

48、ject pixels ) 删除栈末尾的一层Void deleteLastSlice() 删除栈中指定的一层Void deleteSlice(int n) 取得栈中图象的高度Int getHeight() 取得栈中图象的宽度Int getWidth() 将整个栈作为一个一维像素数据的叔祖返回Object getImageArray()返回栈的第 n 层图象的一维像素数组Object getPixels(int n )创建一个 ImageProcessor 为栈的第 n 层,并返回它 ImageProcesspr get Processor(int n )返回栈的层数Int getSize()

49、返回第 n 层栈的标签String getSliceLabel(int n )返回栈的所有层标签String getSliceLabel()将像素数组分配给第 n 层 setPixels(Object pixels, int n ) 设置第 n 层标签setSliceLabel (String label, int n )、感兴趣的区域所谓感兴趣的区域 (ROI) 就是为随后的处理选择一个特别的图象 区 域,通常由用户交互式来选定的。 ImageJ 支持的 ROI 类型,包 括:矩形( Roi 类)、 (PlygnRoi类、 FreehandRoiROI 对象一般和椭圆型( OvalRoi 矩

50、形( Roi 类)、 (PlygnRoi类、 FreehandRoiROI 对象一般和椭圆型( OvalRoi 类)、直线Line类)、多边形 /折线类)、点集( PointRoi 类) ImagePlus 对象相关联。ImagePlus 类 : Roi Void Void Void Void 为 null 或宽度或高度为 ImageProcessor 象 (ByteProcessporgetRoi()KillRoi() setRoi(int x,int y, int width, int height) setRoi(java.awt.Rectangle rect) setRoi (Roi

51、roi ) / 给图象分配一个指定的0 ,则删除所有现有的ROI 。getMask() / 对 于 矩 形 的类型 );否则返回 null 。ROIROI ,并显示,如果 ROI返回一个掩膜图RoiLineOvalRoiPointRoiPolygonRoi 类 注意构造方法的参数ImageProcessor 类:ImageProcessor 对象也可有一个关联的 ROI ,该机制类似于用于 ImagePlus 的机制,但又有所不同。特使是,一个非矩形 ROI 表 示为一个包围矩形与由一个一维 int 数组指定的大小相同的掩 膜的组合。ImageProcessor getMask() / 同 上

52、Byte getMaskArray() / 返回掩膜的 byte 数组,若此图象没有掩膜 则返回 null Rectangle getRoi()Reset Roi() / 设置 ROI 包含整副图象Void setMask(ImageProcessor mask) / 定义一个 byte 掩膜以限制对一个不 规则 ROI 的处理。 Mask 大小必须与当前 ROI 相同。Void setRoi(int x,int y, int width, int height)Void setRoi(java.awt.Rectangle rect)Void setRoi (Roi roi )Void set

53、Roi (java.awt.Polygon poly ) / 多边型 ROIImageStack 类 : 只有矩形 ROI 可用语图象栈 :Java.awt.Rectangle getRoi() / void setRoi ( java.awt.Rectangel)IJ 类:下面的静态 ROI 方法作用于当前活动(用户选定)的图象Static void makeLine(int u1,int v1,int u2,int v2 ) /创建一个直线选择 ROIStatic void makeOval(int x,int y, int width, int height) / 创建一个椭圆型IROS

54、tatic void makeRectangle(int x,int y, int width, int height) / 创建一个矩形 IRO15 、图象属性有时候需要从一个插件向另一个对性传递结果。但是 run() 方法 本身不提供返回值。解决办法:可以将要传递的值保存到对应的 ImagePlus 的对象的属性中。属性就是一个关键字/值对。属性必须是字符串,值可为任意 java 对象。 ImageJ 中由哈希表支 持该机制。Java.util.Properties getProperties() / 返回图象中所有的Object getProperty(String key)Void s

55、etProperty(String key, Object value)16 、用户交互IJ 类 文本输出: Static void error ( String msg) / 对话框标题为 ImageStatic void error (String title,String msg ) / 对话框标题由 title 指定Static void log ( String msg) /在日志窗口中显示一行msg Static void write ( String msg)/ 向日志窗口写入 一行 msg对话框:Static double getNumber(String prompt, do

56、uble defVal) / 读取用户输入的 数字 Static String getString (String prompt, String defVal) / 读取用户输 入的字符串 Static void noImage() / 提示没有图象对话框Static void showMessage( String msg) /提示消息Static void showMessage ( String title,String msg ) / 对话框标题由 title 指 定 Static boolean showMessageWithCancel(String title,String ms

57、g) / 用户 按取消则返回 false进展条和状态条:Static void showProgress(double prog) / 更新 ImageJ 中进度条, 0=prog1 则进度条被删除。Static void showProgress(int I, int n) / 0=in在状态条中显示一个消息Static void showStatus ( String msg ) /在状态条中显示一个消息查询键盘:Static Boolean altKeyDown()Static Boolean escapePressed()Static void resetEscape()Static

58、Boolean shiftKeyDown()Static Boolean spaceBarDown()其他:Static void beep() / 发出蜂鸣声Static ImagePlus getImage() / 返回当前活动图象的引用 Static void wait ( int ms) / 等待 ms 毫秒GenericDialog 类 该类提供了一种简单机制用于创建一个包含对多个不同类型字段 的对话框窗体。这些对话框窗口的布局是自动建立的。17 、插件插件接口:Plugin :应用时不需要任何图象,可用于获取图象、显示窗体等。 PluginFilter: 用于处理已有的图象。其中 setup() 返回插件的特征,有一些预 定义的值 DOES_8G 8 位灰度图像 DOES_8C8 位索引彩色图像DOES_1616 位灰度图像DOES_3232 位 float 图像DOES_RGB 3*8RGB 图像DOES_ALL 任何类



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3