自迁移出 MediaWiki 以来,本页内容尚未经过审查。如果您愿意帮忙,请查看帮助指南!
本页记录了 ImageJ2 某些部分的技术细节。
Process › Math › Equation
本节记录了可用于通过 Process › Math › Equation 命令指定方程的语言。
Process › Math › Equation对话框支持强大的语言来定义可用于用数据填充图像的方程。
方程由索引变量声明列表和公式定义定义。如果公式没有引用任何索引变量,则可以从定义中省略它们。 (索引变量稍后讨论)
例如,这是最基本的定义:
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 * 7或PI / 4中的E和PI) - 括号
以下是一些简单的例子:
77 - PI + E[x], (3*x) - 9[x,y], 200/(y + 30)[x,y] , x^2 + y^2img[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 Process › Math › Macro 语言进行比较。在 ImageJ 1.x 中,该命令的默认宏定义为 v = v + 50*sin(d/10)。请注意,这个确切的字符串在新的方程语言中不是合法的语法。但现在可以将其指定为 img+50*sin(dctr/10)。
Edit › Options › Compatibility
本节记录了Edit › Options › Compatibility命令对话框。
某些命令具有关联的 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 位图像也将相对于最小和最大数据值反转。
Image › Overlay › Overlay 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 方式)。并且由方程语言(之前的超链接)定义的任何函数都可以在约束规范中使用。