自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
满足
该插件位于Process › Image Expression Parser。
该插件解析均使用数学表达式并使用图像作为变量计算结果。例如:
2*AA*(B+30)sqrt(A^2+B^2)*cos(C)A > Bgauss(A, 0.8)
其中A、B和C是相同尺寸的打开图像。
从版本2.x开始,支持基于逐像素的操作,并支持Imglib算法。
解析能力由 JEP 库提供:Java Expression Parser v.jep-2.4.1-ext-1.1.1-gpl。作者是 Nathan Funk 和 Richard Morris 在 GPL 下发布的最后一个版本,请参阅Singular System。在内部,该插件使用 Imglib 来处理图像。
在内部,图像是通过将复制到新的浮点类型图像来处理的,居民剪切效果。返回的结果图像也是浮点类型。
用户界面
饮料版本(从 ImageJ 启动)使用 GUI。
启动后,它会显示一个窗口,用户输入数学表达式、变量(大写字母,最多26个变量)和规范函数。该表达式由JEP库的解析器检查(http://www.singularsys.com/jep/)。如果无效,则显示一条有用的错误消息。
可以使用+/-按钮添加变量。它们与ImageJ中打开的图像相匹配。
当图像是RGB图像时,它们会以特殊的方式进行处理:
-它们分为3个RGB通道;
- 每个通道单独解析和评估;
- 3个结果图像重新组合成3个通道合成图像。
GUI 部分使用 Jigloo GUI 构建器构建 http://www.cloudgarden.com/jigloo/.
支持的功能
以下是自版本 2.1 起支持的函数和算法的列表。
支持 ImgLib 算法
| 描述 | 语法 |
|---|---|
| 高斯本质 | 高斯(img,西格玛) |
| 弗洛伊德-斯坦伯格恐惧不决(img) | |
| 图像归一化(总和为1) | 标准化(img) |
###支持的功能
| 描述 | 语法 | |||
|---|---|---|---|---|
| 欧拉品牌 | 电子 | |||
| π | pi | |||
| 标准运营商 | +、-、*、/、^、% | |||
| 正弦 | 罪恶 | |||
| 余弦 | cos | |||
| 正切 | 棕褐色 | |||
| 不一致弦 | 阿辛 | |||
| 反余弦 | acos | |||
| 相似切 | 阿坦 | |||
| 相似切 2 参数 | atan2(y,x) | atan2(y,x) | atan2(y,x) | atan2(y,x) |
| 双曲正弦 | 星 | |||
| 双曲余弦 | 科什 | |||
| 双曲正切 | 正切 | |||
| 自然对数 | 日志 | |||
| 指数 | 经验 | |||
| 电源 | 战马 | |||
| 平方根 | 开方 | |||
| 绝对值 | 腹肌 | |||
| 圆形 | 圆形 | |||
| 楼层 | 楼层 | |||
| 天花板 | 天花板 | |||
| 布尔贡献 | !、&&、||、<、>、!=、==、>=、<= |
扩展解析器
使用新功能扩展解析器相对容易。
基本上,您必须编写一个实现 fiji.expressionparser.function.ImgLibFunction 的函数。完成后,必须将其添加到解析器类中,以便它知道它。请参阅 fiji.expressionparser.ImgLibParser 方法 addStandardFunctions() 中的示例。
然而,在 fiji.expressparser.function 包中有一些抽象函数来简化扩展过程:
fiji.expressionparser.function.TwoOperandsPixelBasedAbstractFunction
这是带有两个参数且仅对像素值进行操作的函数的母类。也就是说:结果图像上的像素值将仅取决于源图像中同一位置处的像素值。
例如,查看扩展它的 fiji.expressionparser.function.ImgLibArcTangent2 。新函数基本上只需在方法 evaluate(final R t1, Final R t2) 中实现对数字的实际操作。
fiji.expressionparser.function.SingleOperandPixelBasedAbstractFunction
同样的事情,但是对于具有单个参数的函数。例如,请参阅 fiji.expressionparser.function.ImgLibAbs。
fiji.expressionparser.function.SingleOperandAbstractFunction
这是一个更通用的抽象类,允许处理整个图像操作。有两种方法可以实现:
- *evaluate(Image
img)* 指定函数对整个图像执行的操作; - evaluate(R t) 指定函数对标量执行的操作。
相关示例,请参阅 ImgLibNormalize。
fiji.expressionparser.function.TwoOperandsAbstractFunction
相同的事情,但有两个参数。由于单例扩展可以向左或向右,所以有更多的方法可以实现,并且不一定会产生相同的结果。
有关示例,请参阅 ImgLibGaussConv。在此示例中,您将看到如何处理错误或无效参数。
从其他地方调用插件
可以从其他类或脚本语言调用插件。以Python为例: from ij import WindowManager from net.imglib2.img import ImagePlusAdapter from net.imglib2.img.display.imagej import ImageJFunctions from fiji.process import Image_Expression_Parser
# Make an ImgLib image from the current image
imp = WindowManager.getCurrentImage()
img = ImagePlusAdapter.wrap(imp)
# In python, the map can be a dictionary, relating
# variable names to images
map = {'A': img}
expression = 'A^2'
# Instantiate plugin
parser = Image_Expression_Parser()
# Configure & execute
parser.setImageMap(map)
parser.setExpression(expression)
parser.process()
result = parser.getResult() # is an ImgLib image
# Copy result to an ImagePlus and display it
result_imp = ImageJFunctions.show(result)
result_imp.resetDisplayRange()
result_imp.updateAndDraw() 这是 Jeff Hanson 贡献的 [Javascript](/scripting/javascript) 中的另一个示例:
// This script was created as an javascript equivalent of the Python example here:
// https://fiji.sc/Image_Expression_Parser#calling-the-plugin-from-elsewhere
importClass(Packages.fiji.process.Image_Expression_Parser);
importClass(java.util.HashMap);
importPackage(Packages.mpicbg.imglib);
expression = 'A^2';
imp = IJ.getImage();
img = Packages.mpicbg.imglib.image.ImagePlusAdapter.wrap(imp);
imgMap = new java.util.HashMap();
imgMap.put('A', img);
parser = new Packages.fiji.process.Image_Expression_Parser();
parser.setImageMap(imgMap);
parser.setExpression(expression);
parser.process();
result = parser.getResult();
resultImp = Packages.mpicbg.imglib.image.display.imagej.ImageJFunctions.copyToImagePlus(result);
IJ.run(resultImp, "Enhance Contrast", "saturated=0.35");
resultImp.show(); ## 版本历史
- v1.0 - 2010年2月 - 第一个工作版本。
- v1.1 - 2010 年 4 月 - 表达式字段现在有了历史记录。
- v2.0 - 2010 年 5 月 - 完整逻辑重写:
- functions are now handled by code specific for ImgLib;
- support for ImgLib algorithms and non pixel-based operations, such as gaussian convolution;
- faster evaluation, thanks to dealing with ImgLib images as objects within the parser instead of pixel per pixel evaluation.
- v2.1 - 2010 年 6 月 - GUI 现在生成一个新的单独线程进行处理,释放资源以重绘 GUI 面板本身(感谢 Albert Cardona 和斐济人的输入)。
- v2.2 - 2010 年 6 月 - 公开发布第一个版本。 RGB 图像由 GUI 以特殊方式处理:它们的每个通道都单独处理,然后组合在一起形成合成图像。
这个插件的愿望清单
我们有兴趣知道如何扩展这个插件,以便它满足您的需求。请get in touch。