Original MediaWiki pages:  12345

我知道编辑这个网站吗?
the ImageJ2 platform本页介绍与 the ImageJ2 platform 相关的内容。点击徽标查看详情。

ImageJ2 实施笔记

自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南

本页记录了 ImageJ2 某些部分的技术细节。

ProcessMathEquation

本节记录了可用于通过 ProcessMathEquation 命令指定方程的语言。

ProcessMathEquation对话框支持强大的语言来定义可用于用数据填充图像的方程。

方程由索引变量声明列表和公式定义定义。如果公式没有引用任何索引变量,则可以从定义中省略它们。 (索引变量稍后讨论)

例如,这是最基本的定义:

12

当您查询该方程时,它返回值 12。请注意,没有索引变量定义。

以下是带有索引变量定义的方程示例:

[ u , v ] , u + v

当您查询该等式以获取加载的图像时,它将用每个 x 索引替换 u,用每个 y 索引替换 v 并返回 u + v(产生斜坡)。

请注意,索引名称不必是 ImageJ 1.x 中定义的名称(即 x、y、c、z 或 t)。它们可以是您指定的任何名称。关键概念是索引定义的顺序很重要。如果您的输入图像被定义为具有轴 [X,Y,FREQUENCY],您希望方程匹配(即 [u,v,freq] , freq * 1.3

如果您有多维数据集,则将所有轴指定为索引变量非常重要。例如,对于 5d [X,Y,Z,C,T] 数据集,我们可能需要一个将像素值设置为时间索引的 2 倍的方程。如果你这样指定

[ t ] , t * 2

输入图像将用 x 值替换 t 变量,但您不会得到您想要的结果。正确的规范是:

[x,y,z,c,t] , t * 2

然而,如果不使用一组轴,则可以不指定它们而不会出现问题。给定一个轴为 [X,Y,Z,C,T] 的输入图像,我们可以合法地指定如下函数:

[x,y,z], x + z

请注意,我们不关心 Y 轴,但我们指定它是为了保持正确填充位置索引。我们忽略了 C 轴和 T 轴。

人们还可以使用当前图像的数据值作为方程的输入。例如,这里有一个这样做的示例:

img+23

当您查询此等式以获取加载的图像时,它会用 img 函数替换每个像素值,并向其添加 23(从而产生增亮效果)。

方程是分段指定的。方程语言支持:

  • 加/减/乘/除/模(+-*/%
  • 提升到幂 ( ^ )
  • 否定(-
  • 变量索引引用(x in [x,y]3 * x
  • 图像参考(img
  • 调用内置函数(例如 sin(v) - 下面列出了更多内容)
  • 常量(例如 E * 7PI / 4 中的 EPI
  • 括号

以下是一些简单的例子:

  • 7
  • 7 - PI + E
  • [x], (3*x) - 9
  • [x,y], 200/(y + 30)
  • [x,y] , x^2 + y^2
  • img
  • [x,y] , sin(y)

方程中可以出现许多内置函数。作为参考,这里列举了它们:

| 功能 | 示例 | 描述 | |————–|—————————————-|——————————————————————————————————————————————————–| | 腹肌 | [x,y] , abs(y)|返回其输入的绝对值。 | | 阿科斯 | [x,y] , acos(y) |返回余弦等于给定输入的角度(以弧度表示)。 | | 阿科什 | [x,y] , acosh(y) |返回双曲余弦等于给定输入的弧度角。 | | 阿科特 | [x,y] , acot(y)|返回余切等于给定输入的角度(以弧度表示)。 | | 阿科斯 | [x,y] , acoth(y) |返回双曲余切值等于给定输入的角度(以弧度表示)。 | | acsc | [x,y] , acsc(y)|返回余割等于给定输入的角度(以弧度表示)。 | | acsch | [x,y] , acsch(y) |返回双曲余割等于给定输入的弧度角。 | | 角度 | [x,y,z,c,t] , angle(z,t) |返回给定像素沿两个指定轴的角度(以弧度为单位)。 | | asec | [x,y] , asec(y) |返回正割值等于给定输入的角度(以弧度表示)。 | | 阿什 | [x,y] , asech(y)|返回双曲正割等于给定输入的弧度角。 | | 阿辛 | [x,y] , asin(y)|返回正弦等于给定输入的弧度角。 | | 阿辛 | [x,y] , asinh(y)|返回双曲正弦等于给定输入的弧度角。 | | 阿坦 | [x,y] , atan(y)|返回正切等于给定输入的弧度角。 | | 阿坦赫 | [x,y] , atanh(y) |返回双曲正切等于给定输入的弧度角。 | | CBRT | [x,y] , cbrt(y)|返回给定输入的立方根。 | | 天花板 | [x,y] , ceil(y) |返回将非整数输入值推入下一个更高整数值的结果。 | | cos | [x,y] , cos(y)|返回输入值的余弦。 | | 科什 | [x,y] , cosh(y) |返回输入值的双曲余弦。 | | 婴儿床 | [x,y] , cot(y)|返回输入值的余切。 | | 棉布 | [x,y] , coth(y)|返回输入值的双曲余切值。 | | CSC | §§§20§§§|返回输入值的余割。 | | csch | §§§21§§§|返回输入值的双曲余割。 | | dctr | §§§22§§§|返回每个输入像素距图像中心的距离。 | | 暗淡 | [x,y,z], dim(z)|返回输入图像的指定轴的尺寸。 IE。对于 200x500 图像,dim(y) 将为 500。 | 经验 | [x,y] , exp(y) |返回常数 E 等于给定输入的幂的结果。 | | expm1 | [x,y] , expm1(y)|返回常数 E 的等于给定输入的幂并减去 1 的结果。 | | 地板 | [x,y] , floor(y) |返回将输入值截断为整数值的结果。 | | 高斯 | [x,y] , gauss(y)|返回平均值为 0 且标准差与输入值匹配的高斯随机变量。 | | 图片 | [x,y] , img |返回当前活动图像的像素值。 | | 日志 | [x,y] , log(y) |返回给定输入的自然对数。 | | log1p | [x,y] , log1p(y) |返回给定输入与 1 之和的自然对数。 | | log10 | [x,y] , log10(y)|返回给定输入的从 10 开始的对数。 | | 日志2 | [x,y] , log2(y)|返回给定输入的从 2 开始的对数。 | | 最大 | [x,y] , max(x,y)|返回两个输入值中的最大值。 | | 分钟 | [x,y] , min(x,y)|返回两个输入值中的最小值。 | | 兰特 | [x,y] , rand(y) |返回一个均匀分布在 0 到(但不包括)输入值范围内的随机数。 | | 打印 | [x,y] , rint(y)|返回将给定输入值四舍五入到最接近的整数值(冗余)的结果。 | | 圆形 | [x,y] , round(y) |返回将给定输入值四舍五入到最接近的整数值(冗余)的结果。 | | | [x,y] , sec(y)|返回输入值的正割值。 | | 安全 | [x,y] , sech(y) |返回输入值的双曲正割。 | | 签名 | [x,y] , signum(y)|根据给定输入值是负数、零还是正数返回 -1、0 或 1。 | | | [x,y] , sin(y)|返回输入值的正弦值。 | | 正弦 | §§§20§§§|对于给定的输入值 x,返回 sin(x) / x。 | | sincpi | §§§21§§§|对于给定的输入值 x,返回 sin(PIx) / (PIx)。 | | | §§§22§§§|返回输入值的双曲正弦值。 | | 平方 | §§§23§§§|返回输入值的平方。 | | 平方 | §§§24§§§|返回输入值的平方根。 | | 步骤 | §§§25§§§|如果输入值小于 0,则返回 0。否则返回 1。 | 晒黑 | §§§26§§§|返回输入值的正切值。 | | 双曲正切 | §§§27§§§ |返回输入值的双曲正切。 | | 最大温度 | §§§28§§§|返回给定输入图像的像素的最大可能值。例如。 uint8=255,int8=127。 | | 时间 | §§§29§§§|返回给定输入图像的像素的最小可能值。例如。 uint8=0,int8=-128。 | | ulp | §§§30§§§|返回输入浮点值与下一个较大浮点值之间的正距离。 | 我们可以将此语言与 ImageJ 1.x ProcessMathMacro 语言进行比较。在 ImageJ 1.x 中,该命令的默认宏定义为 v = v + 50*sin(d/10)。请注意,这个确切的字符串在新的方程语言中不是合法的语法。但现在可以将其指定为 img+50*sin(dctr/10)

EditOptionsCompatibility

本节记录了EditOptionsCompatibility命令对话框。

某些命令具有关联的 ImageJ 1.x 兼容模式标志。标志设置会影响某些命令在 ImageJ 中的行为方式。 ImageJ2 的作者希望提供一种机制,使 ImageJ 1.x 的行为在有意义时可以被覆盖。这允许在必要时与过去决裂。将模式设置为“Modern”将覆盖某些 ImageJ 1.x 行为,而将其设置为 /libs/imagej-legacy 将尽可能保持 ImageJ 1.x 行为。

受此设置影响的命令:

Invert 命令 - 在 ImageJ 1.x 中,Invert 命令根据图像中存在的最小和最大数据值反转所有像素。尽管行为与 8 位图像不同,但 8 位图像总是相对于 0/255 反转。当兼容模式设置为“兼容性”时,会保留此行为。当其设置为“现代”时,8 位图像也将相对于最小和最大数据值反转。

ImageOverlayOverlay Manager

ImageJ2 的覆盖管理器与 ImageJ 1.x ROI 管理器非常相似。请参阅第 ImageJ 1.x documentation of its ROI Manager

然而,它们之间存在一些重大差异。例如:

  • 在 ImageJ2 中,叠加层会自动添加到叠加层管理器中;它们不需要单独选择和添加。
  • 当任何打开的图像中不存在对叠加层的引用时,叠加层也会从叠加层管理器中删除。因此,覆盖管理器的作用并不像覆盖的存储箱。它是一个用于处理叠加的工具。覆盖仍然可以保存到磁盘并从磁盘恢复。

点集演示

PointSet 演示程序展示了属于 ImgLib2 OPS 子项目的 TextSpecifiedPointSet 的强大功能。

该对话框显示一个文本字段,可用于指定复杂的点集。所得点显示为两色图像,其中白色表示集合内的点,黑色表示集合外的点。

指定PointSet的文本的语法是一个或多个轴范围,可选地后跟指定附加约束的方程。每个术语都用逗号分隔。

轴语法遵循 Haskell 的列表理解语法。您可以指定轴名称及其关联的单个值(即x = [10])。或多个值(即x=[10,20,30])。或一系列值(即 x = [1..25])。或者甚至是定义步长的一系列值(即 x = [1,3..15] 等于 [1,3,5,7,9,11,13,15])。

约束方程使用与第 here 中概述的大部分相同的语法。

一些例子:

  • X 范围从 1 到 10,y 范围从 5 到 15:x=[1..10], y=[5..15]
  • 相同的点集,但进一步约束,使得 x 加 y 小于 20:x=[1..10], y=[5..15], x + y < 20
  • 以 50,50 为中心的圆形区域:x=[1..100], y=[1..100], (x-50)^2 + (y-50)^2 <= 400

可以定义多个轴以及任意数量的约束,只要它们用逗号分隔即可。所有约束同时应用(以 AND 方式)。并且由方程语言(之前的超链接)定义的任何函数都可以在约束规范中使用。