ImageJ脚本初步:宏录制

发布时间:2024年01月17日

文章目录

宏录制

ImageJ毕竟不是编程语言,其目标用户也大概率不会编程,所以提供了宏录制的功能。只需点击Plugins->Macros->Record,即可弹出Recoder窗口,如下图所示

在这里插入图片描述

接下来,无论在ImageJ中做什么操作,均会记录在Recorder窗口中。在窗口工具栏,Record后可选择录制语言,默认是Macro,即ImageJ的宏语言,特点是比较简洁。下面回顾一下图像处理时的基础操作:转灰度并查看直方图。其顺序为如下

  1. 打开lena图(随便打开一张图片即可)
  2. 点击菜单栏Image->Type->8-bit
  3. 点击菜单栏Analyze->Histogram

这样,在Recorder窗口中就会出现如下代码

selectImage("lena.jpg");
run("8-bit");
run("Histogram");

由于我们希望处理的是当前活动的图像,而非仅仅针对lena图,所以将第一行删掉。然后点击Create按钮,就会出现代码调试窗口,当前编辑文件默认名字是Macro.jim。

此时,关闭lena图和直方图,然后重新打开lena图,再点击代码调试窗口中的run按钮,则会复现刚刚的工作,效果如下

在这里插入图片描述

脚本语言

除了Macro脚本之外,ImageJ还提供了四种编程语言,对于有下面几种编程经验的程序员来说,显然更加友好。

Java

首先,ImageJ是java开发的,所以支持java是理所当然的,录制转灰度、画直方图这两部操作,转到代码编辑窗口后,生成的代码如下

import ij.*;
import ij.process.*;
import ij.gui.*;
import java.awt.*;
import ij.plugin.*;

public class My_Plugin implements PlugIn {

    public void run(String arg) {
        ImagePlus imp = IJ.getImage();
        IJ.run(imp, "8-bit", "");
        IJ.run(imp, "Histogram", "");
    }

}

BeanShell

BeanShell,是一种符合Java语法规范的脚本语言,即其语法几乎与Java一致,但不用遵循面向对象编程的规范,所以写起来十分灵活,示例如下

import ij.*;

imp = IJ.getImage();
IJ.run(imp, "8-bit", "");
IJ.run(imp, "Histogram", "");

Python

Python是在科学计算和图像处理领域应用最广的语言,而且凭借其胶水特性,几乎是哪都有它。但在ImageJ中录制宏的时候,还是有一点小坑,首先生成的代码后面会被加上分号,尽管ImageJ貌似支持这种语法,但显然不符合Python的语法规范;其二则是不会自动导入ij模块,需要手动添加一下。

from ij import IJ
imp = IJ.getImage()
IJ.run(imp, "8-bit", "")
IJ.run(imp, "Histogram", "")

JavaScript

最后,ImageJ还支持JavaScript的代码录制,以争取广大的前端程序员。但和Python类似,出现了不导入模块的问题,最终可运行代码示例如下。

importClass(Packages.ij.IJ);
imp = IJ.getImage();
IJ.run(imp, "8-bit", "");
IJ.run(imp, "Histogram", "");

可以发现,这四种脚本语言,尽管语法并不完全一致,但所涉及到的转灰度、调用直方图等操作用到的函数是完全一致的。在后续的教程里,如无例外,将只演示其中一种编程语言。

文章来源:https://blog.csdn.net/m0_37816922/article/details/135598897
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。