imagej数字图像处理研讨论文
macro语言几乎支持java中所有的操作符,所以这里就不再赘述了,有爱好的读者可以去参看bruceeckel的《thinkinginjava》第三版。
2.3macro语言的if/else,while循环语句在macro语言中,条件语句和循环语句的用法与在java中的用法也是一样的,有爱好的读者可以去参看bruceeckel的《thinkinginjava》第三版。3imagej良好的易扩展性——插件的应用imagej的插件就是用java语言编写的,被编译为“.class”的java类文件。它的安装非常简单:把需要用的插件,也就是java的类文件放到imagej的“plugins”目录下,然后重新启动imagej,这时你就会在“plugins”的下拉菜单中发现这个插件已经安装了。这里需要注重的是,java类文件的文件名假如使用了下划线“_”,在“plugins”中会被空格替代。根据实现功能的不同,插件被大致分为以下几类:图像的i/o处理,图像的基本特征分析,各种滤波器,图形操作,还有非凡针对“图像栈(stack)”的处理插件,这是imagej的一个非常重要的应用。下面对它做进一步的介绍。
3.1stack的基本概念stack就是把一系列相关的图片以“栈”的形式显示在同一窗口内,通过一条命令就可以处理整个“栈”的所有图片。3.2stack的应用下面通过一个目标跟踪的例子来看对它的使用:图1是一个由50张图片组成的图片栈的第一帧,我们能看到两只白蚁在托盘上的运动。我们需要对这两只白蚁进行跟踪,包括托盘上白蚁的数量、各自位置的标定和两只白蚁间位置的测量。第一步,使用image/duplicate复制raw-stack的第一帧,命名为background。第二步,需要把这两只白蚁从background中分开出来。在background里圈定一个矩形框,按下“c”复制,移动这个矩形框直到覆盖掉白蚁,最后按下“v”粘贴上。对每一只白蚁都重复这样的操作,最后得到图2background。这就是把白蚁分离开后的背景图。第三步,从该图片栈中所有的图片中减去这个背景图background。使用process/imagecalculator,在弹出的对话框中,“image1”就是这个图片栈,这里的“operator”用“subtract”,这里的“image2”就是背景图background。第四步,使用image/adjustthreshold来设定最低和最高阀值。这样,白蚁就是红色,背景就是黑色。调整的标准就是浏览整个图片栈,让所有的红色都始终连在一块。最后点对话框中的“apply”按钮,就把图片栈里所有50张图片都全部转换为黑/白的二值图片了。如图3binary-stack所示。最后,运行“tracker”插件,得到图4的结果。选中那一栏的意义如下:在该图片栈的第5帧图片上,发现2只白蚁,第一只白蚁所在位置坐标是(46.4,65.1),第二只所在位置坐标是(76.3,89.4),它们之间的距离是38.49个像素。同时弹出的还有一个表示每一帧对应的白蚁之间距离的二维坐标关系图,限于篇幅关系,这里就不再给出了。图4白蚁跟踪结果除了这种目标跟踪插件外,还有其他的跟踪插件,比如像multitracker,manual_tracking,spott论文指导