原始 MediaWiki 页面

我知道编辑这个网站吗?

扩展库

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

“Xlib”概述

瑞士 Empa Dübendorf 混凝土和建筑化学实验室的 3D 工作站、分析和建模小组维护了一组精美 ImageJ 插件。这些插件包括用于过滤、数据重建、定量数据评估和数据导入的自动成像工具,以及用于交互式分割、可视化和图像数据管理的工具。

由于我们小组的研究重点是 3D 推理,因此我们所有的插件都能够处理 2D 或 3D 图像数据。3D 图像数据始终由图像堆栈表示。3D 处理可能包括对堆栈中所有图像进行切片 2D 处理,或者有时更重要的是真正的 3D 处理。

每个新插件都包含一个帮助按钮,其中提供了有关功能的基本注释和参数描述。此功能不符合 ImageJ 理念(假设帮助文档仅在互联网上可用)。然而,我们认为帮助按钮是一个方便的功能。

用户可能会惊讶地发现某些工具显然已经存在于 ImageJ 或 Fiji 的其他插件中。这些工具例如 “FFT 2D 3D”“Image Calculator”“Distance Transform”“Transform 2D 3D” 等。显然这种发音的原因是原始工具包含了主要限制,而新消除了这些限制。下面将简要介绍每一种可用工具及其优点。

包含以下插件:

数据分析:

过滤:

重建:

评估:

编辑及观众:

数据分析

本节插件提供 ImageJ 未知的特殊数据格式的导入、处理或分析,但对于特殊用途非常有趣。

###最近的集群

该插件提供了一个引擎,用于查找给定能量色散光谱 (EDS) 数据中最可能的化学成分。根据一组建议的化学式,计算与候选 EDS 数据匹配的概率的排名。

标题为“Instructions for the Phase Clustering and Identification Using the Plugins for ImageJ”的手册中提供了EDS谱图和相识别的分步教程。

该程序可以与“Cluster Image”插件结合使用。因此,对于所获得的新生儿中心集,该程序提供了最可能的新生儿成员资格。 doi:10.1111/jmi.12309

导入DMP

DMP 是一种用于存储 2D 图像的简单数据格式。它在 ETH 和苏黎世图像大学的 IBT 中使用。数据文件的前两个短整数边界被保留,用于提供的宽度和高度。下一个短整数被保留。此后(即前 6 个字节之后)紧接着数据本身,每个像素由 32 位浮点数给出。

下面给出了一个简单的§§0§§§代码,用于编写这样一个图像变量“图像”,其大小为“宽度”和“高度”:

fid=fopen(file,'w');
fwrite(fid,size(image,2),'uint16');
fwrite(fid,size(image,1),'uint16');
fwrite(fid,0,'uint16');
fwrite(fid,image','float32');
fclose(fid);

使用MATLAB读取DMP图像可以这样实现:

fid=fopen(filename);
dim=fread(fid,3,'uint16');
width=dim(1);
height=dim(2);
data=zeros(height,width);
for ii=1:height
    data(:,ii)=fread(fid,width,'float32');
end
fclose(fid);

过滤

过滤函数接受应用了某些过滤技术的一张或多张图像或图像堆栈。一般来说,以下过滤函数适用于 2D 图像、切片 2D 以及真正的 3D 模式(如果应用于图像堆栈)。

各向异性扩散

xfig6-1

CT slice after strong alcali aggregate reactions (top) and edge preserving / smoothing filtering with a 4x4 median (bottom left) and anisotropic diffusion (bottom right).

The mechanism of heat diffusion has been used as the basics for image filtering. Thereby, the image values are understood as temperature values and image blurring represents the process of heat transport blurring. The key idea is the introduction of anisotropy, i.e. of diffusion characteristics that are depending on the pixel environment and the transfer direction. The local anisotropy is assigned according to the direction and magnitude of the image gradient, introducing high diffusion rates at low gradients and low diffusion rates at high gradients. Hence, the anisotropic diffusion characteristics are defined according to an ellipse in 2D or an ellipsoid in 3D perpendicular to the gradient vector.

相应的偏微分方程在 1990 年首次通过 Perona 和 Malik [Perona1990] 的快速算法通过简单的盒式滤波定义椭圆扩散形状来进行数值逼近。使用 2005 年 Tschumperlé 和 Deriche [Tschmperlé2005] 的技术,通过根据特征值和特征向量设置张量场来驱动扩散,可以获得更好的结果。然而,正如预期的那样,这种方法更耗时。

该滤波器是一款出色的边缘保留/平滑滤波器,可实现智能降噪。特别是,在区分相干边缘和噪声方面,Tschumperlé 和 Deriche 的实现优于其他方法。上图显示了强碱骨料反应后混凝土 CT 切片的各向异性扩散(右下)和中值滤波(左下)之间的比较(上)。各向异性扩散过滤非常出色,可以更好地保留裂纹,同时消除噪声导致的不均匀性(请注意中心区域)。

该滤镜适用于 2D 和 3D。

精明边缘

xfig6-2

Valve image (left) and the results from the Canny filter. Top: original image, 2nd row: magnitudes of gradient vectors, angles of gradient vectors, 3rd row: magnitudes after non-maxima suppression, and the connected regions after double thresholding the maximal magnitudes.

In 1986, J. Canny has proposed an excellent edge detection filter [Canny1986] that due to its performance became famous. The filter is based on a fast numeric approach for the calculation of the direction-dependent first derivative, i.e. the gradient vector function of an image. The Canny filter is well known for 2D imaging, yet it is barely supported in 3D. This plugin supports both, the 2D and the 3D implementation. It additionally supports preceding Gauss filtering, optional non-maxima suppression for the extraction of the edges, as well as a function for double thresholding and joining the connected regions. Double thresholding means that an upper threshold is used for extracting the relevant edges, while a lower threshold is provided for adding residing connections between the extracted edges. The plugin returns the magnitudes and the angles of the gradient vector functions.

阀门图像的 Canny 滤波结果如上图所示(上图:原始图像)。显示了梯度幅度和角度(第二行),以及非极大值抑制后以及连接连接区域后的幅度(第三行)。

聚类图像

xfig6-3-1

Image acquired by BSE and EDX maps at the same local position showing the amounts of Ca, C (1st row), Al, Cl, Fe, K (2nd row), Mg, Mn, Na, O (3rd row), P, Si, S, Ti (4th row).

Cluster analysis is a technique of statistical data analysis for grouping sets of objects. It is used in machine learning, data mining, pattern recognition, information retrieval, bio-informatics and can also be applied to image analysis. Different clustering definitions and algorithms have been proposed using connectivity, distance to the cluster center, statistical distribution, or density rates as optimization parameters for building clusters.

在图像分析中,主要有两种算法比较突出:k-means算法和均值平移算法。它们与第三种方法(模糊 C 均值聚类)一起实施。

k 均值算法 [Kanungo2002] 最小化每个数据点到其指定聚类中心的距离的平方和。它首先将数据点随机关联到最初确定的簇数。使用迭代优化过程,它可以快速收敛到集群的稳定数据分配。 K 均值聚类很受欢迎,因为它非常快。 均值平移聚类方法 [Funkunaga1975] 优化聚类中心,使得聚类内的数据密度最大化。在每个数据点周围给定大小的内核内,确定内核内所有点的质心,并相应地移动球体。反复重复此过程后,球体保持静止。然后将数据点分配给这个最终的聚类中心。该算法可以理解为步行到山地景观中最近的山峰。在一定范围内,正在定位并达到最高目标。从那时起,同一周界内的下一个目标被定位并再次到达。迭代地进行此过程,直到到达选定周长内的顶部。根据周长的大小,将实现不同的山丘或亚山丘。如果周长大于400公里,从瑞士任何地方都可以到达勃朗峰。如果大于20’000公里,则从世界任何一点都可以到达珠穆朗玛峰。如果它的大小只有几米,你可能最终会到达建筑物的顶部。

模糊 c 均值聚类 [Bezdek1984] 允许将一个数据点分配到多个聚类。集群的从属关系由范围从 0 到 1 的成员资格值给出。数据点的所有隶属度之和是统一的。因此,将数据点分配给类并不是明确的,而是相对的。属于某个类的程度与数据点到簇的距离成反比。它还取决于控制给予获胜集群多少权重的参数。使用模糊 c 均值时,簇的质心是所有点的平均值,并根据它们属于簇的程度进行加权。最终获胜的班级是排名最高的班级。模糊c-means算法的过程与k-means算法非常相似。

期望最大化 (EM) 聚类 [Dempster1977] 迭代地找到像素值的原始 N 维分布的高斯分布拟合的最大似然估计。 EM 迭代在执行期望 (E) 步骤和最大化 (M) 步骤之间交替执行,前者创建使用参数的当前估计评估的对数似然期望的函数,后者计算使 E 步骤上找到的期望对数似然最大化的参数。

The plugin also allows clustering by using ELKI (Environment for Developing KDD-Applications Supported by Index-Structures, developed by the ELKI team). ELKI is an open source data mining software written in Java. In addition to multiple features, ELKI offers various ways for clustering. An ELKI wrapper for the clustering of images is included with the Image Clustering plugin. When the respective elki.jar bundle is placed in the ImageJ plugins directory, image clustering with ELKI is possible. The required specification parameters for the ELKI clustering algorithm together with its parameters can be defined by the user.

xfig6-3-2

Results from clustering of the 15-dimensional image data space displayed in the figure above. First row: k-means for 2 (left), 3, 5 and 16 (right) clusters. Second row: mean shift for the seeking perimeters 100 (left), 70, 60 and 50 (right). Third row: fuzzy c-means clustering for 5 clusters at fuzziness 1.1 (left) and 4.0, 16 clusters at fuzziness 2.0, and its fuzziness membership values (right).

As an example, ESEM images of a natural cement analogue (Maqarin, Jordania) is provided in the figure to the upper right. A backscatter electron microscope (BSE) image (top left) and image maps acquired from energy-dispersive X-ray spectroscopy (EDX) at the same location forked into 14 different elements (see figure above) are used as the basis for clustering. Thus together with the BSE image, the clustering is achieved from a 15-dimensional vector space. In the figure below, some results from different clustering algorithms and parameter settings are displayed. The first row shows results from the k-means, the second one from the mean shift, and the third one from fuzzy c-means clustering. K-means clustering (1st row) requires the number of clusters as an input parameter. The results for 2 (left), 3, 5 and 16 (right) clusters are provided. Slightly different results provides mean shift clustering (2nd row) which requires the size of the seeking perimeter as input parameter. It is determined at 100 (left), 70, 60 and at 50 (right). Fuzzy c-means clustering (3rd row) requires the number of clusters and the fuzziness as input parameters. The results are displayed for 5 clusters at fuzziness 1.1 (left) and 4.0, for 16 clusters at fuzziness 2.0, as well as an image showing its fuzziness membership to the cluster with the highest respective ranking at each location (right). 聚类还可以应用于一维空间(即来自单个灰度图像),或者应用于其中 R、G、B 颜色通道提供 3 维向量空间的彩色图像。因此,聚类提供了一种自动分割包含不同相的 2D 图像或 3D 图像体积的优雅方法。

断开粒子连接

xfig6-4

3D FIB-nanotomography of cement grains (left), subsequent thresholding (center), disconnected (k=0.7) and labeled particles (right).

在通过理论进行粒子分析时,由于分辨率限制,如果粒子两端距离太近,则可能会在不同位置错误地连接粒子。为了成功这种连接,已经实施了一种在瓶颈处断开连接的算法[Münch2006]。如果需要一个从[0…1]排序的参数k来控制断开连接。当k=1时,颗粒分离发生在任何处,而当k=0时,根本不执行任何分离。基于数据的最佳值,通常在k=0.7左右,从而导致标记的瓶颈被雕刻,而小瓶颈则保持不变。

上图显示了通过3D FIB纳米断层扫描获得的水泥颗粒的结果。右边图显示了在k=0.7时断开并标记的体积。

距离变换

xfig6-5-1

Binary mask from cement particles (left) and Euclidian distance transform of it (center) and of its reversed mask (right).

图像剪刀的快速距离变换对于许多形态逻辑应用非常有用。在数据量不断增加的时代,处理速度是最重要的。现代方法 [Saito1994,Meijster2000] 甚至可以在线性期限生成距离变换。该插件中的实现允许在 2D 和 3D 中计算欧几里德、棋盘或城市地图距离变换。

xfig6-5-2

Mask containing 3 black dots only (left) and its Euclidian, Chessboard and Citymap (right) distance transform.

xfig6-6

FIB-nt image (427x768 pixels) from cement paste (left) and the magnitudes (center) and angles (right) of its Fourier transform.

上图所示,使用欧几里得距离变换(中)处理水泥颗粒(左)的二值掩模。还给出了逆掩码的变换(右)。通过使用从蓝色(低值)到红色(高值)的颜色替换表来可视化距离。不同距离闭合的效果如下图所示。提供了一个由3个单个黑点组成的简单掩模(左)。旁边显示了欧几里距离变换、棋盘距离变换和城市地图右()距离变换的结果。

FFT 2D 3D

用于计算离散快速傅立叶变换 (FFT) 的快速、分布且广泛使用的 Cooley-Tukey radix-2 算法仅适用于大小等于 2的幂的数据。为了对不同大小的数据提供FFT,通常将数据排序下一个更高的2次方。在很多情况下,这种方法就足够了,特别是在转换后的数据函数的性质不相关的情况下。然而,如果周期长度很重要并且必须保持不变,则需要对原始数据大小进行FFT。这可以通过使用Bluestein算法来实现[Bluestein1968,Rabiner1969]。事实上,我们没有可用的ImageJ插件允许对非基数 2 大小的周期进行 FFT,因此已构建此插件。它可以正确计算任何大小的 2D 和 3D 图像上的复杂 FFT。它可选地提供实部和虚部,或者纵向和角度图像。此外,它允许引入基于对数或平方根的缩放,以降低 FFT 的分辨率。如果 FFT 函数用于显示目的,此功能非常有用。所有这些选项都支持 FFT 变换的可逆性。

右图显示了水泥浆(左)的FIB-nt图像样本,宽度为427像素,高度为768像素。其傅里叶变换的幅度和角度通过对数值函数进行缩放,以提高小系数的可见性。中心图像和右图像的FFT变换反过来重建原始函数(左),而不损失任何精度。

  • doi:10.1007/0-306-47025-X_36
  • Invalid citation arguments: {"last"=>"Weiszfeld", "first"=>"E V", "caption"=>"Sur le point pour lequel la somme des distances de n points donnes est minimum", "journal"=>"The Tohoku Mathematical Journal", "volume"=>"43", "pages"=>"355-386", "year"=>"1937"}

</div> </div>

形象外汇

ImageJ 中已经实现了允许各种术算侵犯的图像外汇计算器,“图像计算器”、“计算器加”以及“数学”中的整个函数列表,所有这些都在“流程”下。那么,您可能会问,为什么“又一个图像外汇外汇”。原因是我们的外汇外汇能够轻松执行上面导入的所有插件的可能任务以及更多任务。概念思想是在 ImageJ 中提供当前的中打开所有图像和图像堆栈的列表,给它们分配给符号名称(i0,i1,i2,…)。在文本字段中,用户可以提供他想要评价自己的图像的代码。图像转换器适用于单个 2D 图像和 3D 图像体积。

输入图像(或 3D 图像堆栈)按照加载到 ImageJ 的顺序命名为“i0”、“i1”、“i2”…。使用这些变量,可以执行任何产生值的 java 操作(即基本操作或对 java 函数的调用)。

图像转换器有两种不同的操作。第一种模式(除了几个示例)仅返回根据一个或多个输入图像计算得到的单个值。然后操作分配给每个单个像素或体素。第二种模式(除了最后几个示例)接受使用任何类型的java语法的多行编码。它需要定义、并最终使用“return new Object[] { mm, out };”之类的语句返回输出图像(或形状),标记“mm”保存一个队列,其中包含一个队列x、y(最终为z)中的(或体积)大小(以像素(或体素)为单位);变量“out”保存图像(体积)数据本身。

下面给出一些参考示例:

xfig6-7-01

left: image i0, 2nd: image i1, 3nd: image i2, right: mean value of the images i0, i1 and i2

(i0 + i1 + i2) / 3

确保 ImageJ 上加载了三个图像,其中 i0、i1 和 i2 是要处理的图像。上述命令将返回一个图像,提供图像 i0、i1 和 i2 的刀具(请参见右侧最右边的图像)。

以下使用命令 java 内部类。由于许多有用类的全局导入语句通常不会默认相应定义,应提供 java 库的完整路径(此处:“java.awt.Color”)。

xfig6-7-02

left: image i0, right: mask where regions higher than 170 are colored in red

(i0 > 170)? 
	java.awt.Color.red.getRGB() : java.awt.Color.black.getRGB()

显示一个遮光罩,其中 170 的值设置为红色,而其余值设置为黑色。与前面的示例一样,将参数“输出图像的格式”设置为“int color”以启用颜色输出非常重要。

以下操作使用纯整数值来定义颜色。

xfig6-7-03

left: image i0, 2nd: image i1, 3rd: image i2, right: colored mask out of images i0, i1, i2

The value “-16777216” represents black, the value “-65536” red, the value “-16711936” green, the value “-16776961” blue color.

(i0==255)? -16711936 : 
	((i1==255)? -16776961 : ((i2==255)? -16777216 : -65536))    

获取三个二值图像 i0、i1、i2 并创建一个彩色蒙版(请参见右边最右边的图像)。与前面的示例一样,此操作需要将参数“图像输出的格式”设置为“int color”。

xfig6-7-04

left: image i0, right: power of two of image i0

The operation

Math.pow(i0, 2.)

图像产生 i0 的 2 次幂。建议将“输出图像格式”的值设置为“浮点灰度”(或至少为“短灰度”,而不是“字节灰度”),纵向超出值范围。如果选择“字节灰度”,则大于 255 的像素值将设置为 255。

xfig6-7-05

left: i0, right: copy of image i0 overlayed by a ramp

The operation

i0 + x

将计算由水平高度覆盖的图像 i0 的副本。“x”(以及 3D 体积的“y”和“z”)的值在内部定义为局部 x 坐标(3D 体积的 y 坐标和 z 坐标)。

xfig6-7-06

left: image i0, right: ramp with the same size as image i0

The code line

x // i0

只需创建坡道。

在这种情况下,仅返回“x”的值(本身不会创建图像),是图像操作。该命令附加了注释而不掉的“i0”。为此需要这样做,是为了提供有关结果大小的线索,该图像现在等于图像 i0 的大小。因此,图像 i0 的内容实际上没有被使用,它只是相当于结果大小的模板。

xfig6-7-07

left: image i0 defining image size, right: halo centered at (100, 200)

The following code

Math.sqrt(Math.pow(100 - x, 2) + Math.pow(200 - y, 2)) // i0

计算与 i0 大小的图像相同,但仅包含以 (100, 200) 为中心的光晕。生成生成图像的代码既不包含输入图像的操作,也不包含任何图像大小的定义,因此解析器会搜索其他提示来确定输出图像大小,并获取对“i0”的引用,即使它已被注释掉。

xfig6-7-09

left: image i0, right: circular mask around (100, 200)

The following command line

(Math.sqrt(Math.pow(150 - x, 2) + 
 Math.pow(200 - y, 2)) < 100)? 255 : 0 // i0

创建一个包含点 (100, 200) 周围圆形蒙版的图像。

和前面的例子一样,需要注释“// i0”来根据i0的大小定义新图像的大小。

xfig6-7-08

left: image i0, right: binary thresholding of i0 by value 128

The following command line

(i0 >= 128)? 255 : 0

通过使用阈值 128 对图像 i0 进行阈值化来创建二值图像掩码。请注意,前面所有示例中所示的单行分配始终返回需要像素值。这就是为什么“if”语句在这种情况下是不可能的并且必须是“?”绕过的原因。操作。

xfig6-7-10

left: image i3, right: content of image i3 inside of a circle

The following code

(Math.sqrt(Math.pow(mx / 2 - x, 2) + 
 Math.pow(my / 2 - y, 2)) < mx / 2)? i0 : 0

仅获取圆内图像的内容并删除圆外的区域。请注意:此代码片段使用预定义的变量“mx”和“my”来保存 x 和 y 中图像的大小。对于图像堆栈,还定义了变量“mz”。

xfig6-7-11

left: image i0, center: image i1, right: exclusive OR of images i0 and i1

Finally,

(((int)i0 ^ (int)i1) > 0)? 255 : 0

对图像 i0 和图像 i1 执行异或攻击。

上面的示例说明,只要遵循 Java 表示法,任何像素或体素操作都可以在该单个命令行中提供。然而,插件还可以做更多的事情。可以提供图像范围的 Java 代码片段,而不是逐像素操作模式。例如,

float[] out = new float[i0.length];
for (int ii = 0; ii < out.length; ii++) 
	out[ii] = (i0[ii] + i1[ii] + i2[ii]) / 3f;
return new Object[] { m0, out };

执行与上面的像素操作相同的操作(i0 + i1 + i2) / 3

xfig6-7-13

left: image i0, right: message box with number of pixel values >= 10

代码片段

float value = 10f;
int[] mm = m0;
int anz = 0;
for (int ii = 0; ii < i0.length; ii++) 
	if (i0[ii] >= value) anz++;
IJ.showMessage(" ", "Number of pixels: " + anz);
return new Object[] { mm, null };
xfig6-7-14

left: image i3, center: image i5, right: image i5 embedded at the center area of image i3

Counts all pixels (or voxels) in the image (or volume) with a value larger or equal 10.

或者代码

int offx = (m3[0] - m5[0]) / 2;
int offy = (m3[1] - m5[1]) / 2;
float[] out = (float[])i3.clone();
for (int jj = 0; jj < m5[1]; jj++) 
	for (int ii = 0; ii < m5[0]; ii++) 
	out[ii + offx + (jj + offy) * m3[0]] = 
		(i3[ii+offx + (jj+offy) * m3[0]] + 
		 i5[ii + jj * m5[0]]) / 2f;
return new Object[] { m3, out };

获取更小的图像 i5 将其添加到更大的图像 i3 的中心。

xfig6-7-15

left: image i0, center: image mask i1, right: message box with mean value of i0 within mask i1

The code fragment

double mean = 0;
int anz = 0;
for (int ii = 0; ii < m0[0] * m0[1]; ii++) 
	if (i1[ii] > 127) {
		mean += i0[ii];
		anz++;
	}
mean /= anz;
IJ.showMessage("mean value: " + mean);
return null;

简要计算 i1 定义的 ROI 内图像 i0 的总体布局并将其显示在表单中。

xfig6-7-16

ramp image

Moreover, it is even possible to create your own images without any input image:

int mx = 256;
int my = 200;
float[] out = new float[mx * my];
for (int jj = 0; jj < my; jj++) 
	for (int ii = 0; ii < mx; ii++) out[ii + jj * mx] = ii;
return new Object[] { new int[] { mx, my }, out };

创建包含基底的图像(参见右图),

xfig6-7-17

circular mask

or,

int mx = 256;
int my = 200;
float[] out = new float[mx * my];
for (int jj = 0; jj < my; jj++) 
	for (int ii = 0; ii < mx; ii++) {
		if (Math.sqrt(Math.pow(ii - mx / 2, 2) + 
					  Math.pow(jj - my / 2, 2)) < 80) 
			out[ii + jj * mx] = 255;
	}
return new Object[] { new int[] { mx, my }, out };

创建一个中心包含圆形蒙版的图像(请参见右图)。更多语法信息请探究插件本身的帮助功能。

xfig6-7-18

Mandelbrot fractal

As a final example, we show that it is also possible to create even more ‘cute’ images with that tool:

int max = 255;
int mx = 512;
int my = 512;
float[] out = new float[mx * my];
for (int jj = 0; jj < my; jj++) 
	for (int ii = 0; ii < mx; ii++) {
		double px = -2. + (double)ii / 200.;
		double py = -1. + (double)jj / 255.;

		double zx = 0.0, zy = 0.0;
		double zx2 = 0.0, zy2 = 0.0;
		int value = 0;
		while (value < max && zx2 + zy2 < 4.0) {
			zy = 2.0 * zx * zy + py;
			zx = zx2 - zy2 + px;
			zx2 = zx * zx;
			zy2 = zy * zy;
			value++;
		}
		out[ii + jj * mx] = 50f * (float)Math.log(value);
	}
return new Object[] { new int[] { mx, my }, out };

该代码片段创建了右侧的图像,显着地展示了曼德尔布罗分形!

标记 2D 3D

粒子分析对先前确定的粒子特效药进行标记,该粒子特效药是通过某种类型的图像分割技术获得的,例如通过阈值提提最简单的一个。二元粒子特效药仅允许对进行粒子特效药进行全局评估。通过标记粒子特效药,特效药特效药都需要分配一个唯一的ID。标记是考虑单个物体的局部值(例如颗粒尺寸、直径或其他形状参数)进行评估的先决条件。该实现了2D或3D的先决条件。二进制掩码中中断连接的对象的标记。灰度图像的二值化是通过提供下限阈值和上限阈值来进行的。

xfig6-8

Particle image (left) and its labeling (right)

“Disconnect Particles” 部分的中心图像和右图像给出了标记示例,其中中心图像显示断开连接过程和标记之前的粒子粒子。断开过程分离单个粒子。在此步骤之后,对象蒙版仍然是二进制的,并且应用标签来对粒子进行着色,能够以便通过它们的对象值来区分它们。

中添加 2D 3D

该插件支持传统和图像体积的传统以及几何 2D 和 3D 中值辅助。几何中值辅助是根据 E.V.Weiszfeld[Weiszfeld1937]的算法实现的。与传统的中值辅助不同,几何中值辅助可以针对多维支撑空间而不是仅针对一维值集来实现。那么,如果单个位置存在多个,则可以通过使用常见的 N 维几何距离来找到中值来对它们进行过滤。

xfig6-09-1-phasesmedianfiltering

Color image containing multiple phases (top left) and different types of median filtering: conventional band-wise (top right), multidimensional geometrical (bottom left), and multidimensional geometrical by choosing the closest available vectors.

示例彩色向量(右上)显示了多个噪声层次。对每个R、G、B波动进行固定中值抑制分别产生右上图像。由于RGB循环,可以看出,会出现原始图像上不存在的新颜色。利用Weiszfeld算法进行多维几何过滤(在RGB情况下为3维)可生成左下图像。当另外叠加于已经存在的颜色向量时,会产生右下图像。

  • doi:10.1086/624298

    删除背景

    如果图像根据位置而受到图像值一致的全局偏移,则这可能是由于数据采集的不一致而不是材料属性的实际变化。在这种情况下,背景技术可能是合适的。一个典型的例子是来自 FIB 纳米断层扫描 (FIB-nt) 的相应数据。,在数据采集中,将 FIB-nt 重新绘制在另一个样品表面上的立方体之前。由于云效应,随后的 3D数据采集不会丢失切片下边界的亮度和亮度。这会错误地导致图像值的系统不均匀性,从而达到可靠的定量变量。这种缺陷的校正可以通过确定整个图像上的低次全局初始化式并随后从原始图像中增加式函数的值来获得。通过执行最小化二乘优化来确定全局校正式函数。因此,可以全局校正系统亮度变化。因此,可以全局校正系统亮度变化。认为是整个图像的全局初始化值至少保持或少保持恒定,在平均是这样。

xfig6-9-1

FIB-nt image with strong shadowing effects (top left), its thresholding (top centre), global polynomial of degree 1 (top right), its subtraction from the original image (bottom left), and its thresholding (bottom right).

上图(左上)给出了FIB-nt图像及其遮蔽效果的结果。阈值处理后,对下边界的系统危机损害变得明显(顶部中心)。1次全局式举报的确定会产生背景图像(右上)。减法后(左下),消失消失,随后的阈值处理(右下)也证实了这一点。

除了亮度值的全局均匀化之外,该插件还允许校正恢复值。然而,附加先决条件,必须假设图像由一定数量的校正式或少稳定图像值的相位组成。在这种情况下,可以从包含最低图像值的相位计算全局校正式,并包含从包含最高图像值的相位校正式作为校正计算式。通过展平两个校正式函数来校准校正。该过程需要数作为输入参数。

xfig6-9-2

FIB-nt image of a fuel cell and its shadowing effects (left), and the image after correction (right) by assuming three existing phases.

校正的结果如上图所示。 左边显示原始图像。它由三个不同的阶段组成。位于下边界,增强并达到能够急剧恢复。假设在校正后的图像,校正后的图像似乎没有增强并恢复恢复(右)。

圆度 2D 3D

连接对象的圆度值可以定义为该对象的实际尺寸与该对象的最大直径所覆盖的虚拟球体的尺寸之比。

2D: rnd = 4. * size / (diameter^2 * PI)
3D: rnd = 6. * size / (diameter^3 * PI)

其他蓝牙的定义(例如 Wadell 的虚拟度定义 [Wadell1935])是基于与物体体积的相同球体的虚拟度相对于其实际的实际的。像素化对象的虚拟度的计算并不简单,而体积大小的计算只是对象像素或体素的数量。这就是为什么我们更喜欢以前的虚拟度定义的原因。不过,虚拟化对象的另一个有用的选项可能是 ISO的圆度定义,它基于对象的内切圆和外接圆之间的差异,即适合内部和外围对象的圆的最小和最大尺寸。

圆度值可用于提供物体形状接近圆形(2D)或球体(3D)的程度,从而用于对物体形状进行评级。

重构 2D 3D

在形状分析中,可以从夹具的拓扑中捕获拓扑特征。在技术文献中存在几种不同的数学定义。已经提出了许多不同的算法。其中许多缺乏保留原始拓扑。2D和3D拓扑的良好守恒是选择算法的关键(Palagyi,[Palagyi1998])。此功能如下所示,其中提供了一组几何3D对象(左)。骨架化(中心)后,主要保留拓扑结构。如果骨架的直径膨胀到原始体积位移变换的值(右),则恢复的对象与原始对象具有很大的相似度。

xfig6-11

Some 3D objects (top), their skeletonization (bottom left) and their restoration by inflating the pipes up to the distance transform values of the original objects (bottom right).

###条纹过滤器

由于数据采集期间的不良影响,可能会出现条纹α影。缺陷检测器像素可能是计算机断层扫描测量投影中出现条纹的原因,导致重建后出现环状α影。使用FIB纳米断层扫描访问3D数据时,瀑布动画可能是出现条纹的原因。两种类型的动画影都可以通过基于小波和傅立叶变换组合的条带辅助技术来消除[Münch2009]。下图显示了条纹过滤插件的潜力,将其图像渲染灰度图像(顶部)和RGB(底部)。

xfig6-12-1

Gray level (top) and RGB (bottom) image containing horizontal stripes (left) and the results of the stripe filtering plugin (right).

下图中,显示了CT投影中的条纹(顶部)和重建图像中由此产生的环形伪影(底部),左边为原始情况,右边为条纹辅助后的结果。

xfig6-12-2

Projection image in a CT slice (top) before (left) and after (right) stripe filtering. The stripes in the projections yield ring artifacts in the reconstructed image (bottom). An original (left) and its filtered version (right) is displayed.

xfig6-13

Flowers image (top left), its transform into polar coordinates (top right), its scaling followed by a rotation (bottom left), its rotation followed by a scaling (bottom right).

将 2D 转换为 3D

该插件通过使用任意数量的旋转方式来提供 2D 图像和 3D 图像体积的图像变换。可以选择各种变换,包括平移、旋转、任意顺序缩放以及通过选择可变中心坐标。

这可以通过使用包含平移(“t”)、旋转(“r”)和/或缩放(“s”)操作的字符串语法来执行。每个操作后面都有其分隔的平移、旋转或缩放值。例如,一个操作

t10,-20r30

定义平移(10, -20),然后围绕原始中心点在2D中旋转30度。同样,

s0.5,0.8,1.5p0,0,0r-10,20,30t11,-22,33

定义缩放 (0.5, 0.8, 1.5),然后围绕 (0, 0, 0) 以度为单位旋转 (-10, 20, 30),然后在 3D 中进行 (11, -22, 33) 平移。

相应的齐次 4x4(对于 3D,或 3x3 对于 2D)矩阵运算始终动态指示。当然,4x4(或3x3)齐次矩阵本身的规范也是可能的。此外,还支持笛卡尔坐标到柱坐标或球坐标的转换,反之亦然。此外,重新采样为另一个像素大小也是可行的。

xfig6-15-cow

Cow at Swiss alps (left), its wavelet decomposition at decomposition level 2 by using the Haar wavelet when providing a nice view (top center) and a reconstructible format (bottom center), and finally, its reconstruction (right).

二维小波

该程序提供二维图像的小波分解和重建。分解的小波集可以选择为可重构的或不可重构的,即仅用于视觉呈现。如果选择可重构,则图像质量对于演示目的而言可能在感知上并不真正理想。因此,为了创建更具吸引力的小波图像,选择不可重构的小波可能是首选。术语“不可重构”意味着小波集在边界处被归一化和裁剪,因此丢失了用于正确重构的信息。对于彩色图像,由于颜色分辨率有限(每通道仅 8 位),重建可能是可行的,但结果通常远远超出可接受的质量。因此,对于彩色图像,如果需要可重构性,我们建议分成 R、G、B 通道并分别处理每个通道,以实现浮点而不是 8 位分辨率。

小波分解后,小波规范(例如 Daubechies 2 小波的“db2”)与归一化参数(边界处理、输出归一化)一起作为附加信息存储到图像中。因此,如果将小波分解保存为 TIFF 图像文件格式,则该附加图像信息将存储到图像文件头中。因此,当小波插件启动到此类图像时,相应的小波设置将自动恢复。

右侧的示例显示了图像的 Haar 小波分解。呈现了图形上漂亮的版本(顶部中心)以及可重构版本(底部中心)。重建(右)只能从可重建版本中进行。由于彩色图像通常仅使用每个 R、G、B 通道 8 位进行解析,因此重建并不完美,但对于本例来说仍然可以接受。相反,灰度图像导致浮点格式的小波分解,因此允许完美的重建。

重建

本节的插件支持根据 CT 成像的投影数据对图像进行预处理和重建。

本节中的另一类方法是从 2D 图像估计 3D 数据,其思想是仅从 2D 切片估计请求 3D 连接性的参数。

滤波反投影

该插件提供一组图像投影的卷积/反投影。它支持不同的重建滤波器(Shepp & Logan、Parzen、Hamming、Hann、矩形)。角度的顺序以及投影的顺序可以改变。

投影正弦图

该插件将投影集转换为正弦图堆栈,反之亦然。它还支持平场和暗场校正、散斑过滤、朗伯反演、旋转中心调整、投影重新排序、值范围调整等。

从 2D 重建 3D

该插件提供从 2D 相位图像重建虚拟 3D 相位体积。目标是保留 2D 图像中给出的结构特征并将其外推到 3D。

该算法假设相似结构的 2 点自相关函数被保留。其基本思想是通过应用 Wiener-Khinchin 定理在傅立叶空间中高效地解决 3D 重建问题。基本上,2D 图像的自相关函数被扩展到 3D 和傅立叶变换。在傅里叶空间中,复数值的参数是随机选择的,同时保持幅度。然后傅里叶逆变换产生新估计的 3D 体积。

xfig7-3-1

Segmented masks from cement paste (top left, OPC CEM 1, 42.5, w/c 0.35, 28 days hydration) and from the contact zone of the anode membrane of a solid oxide fuel cell (bottom left). A virtual 3D reconstrucion was applied to the original structures (center). A single slice from the 3D image stack is displayed for both cases (right), showing different structures than the original ones, with however closely resembling characteristics.

上图中给出了水泥浆结构(左上)和固体氧化物燃料电池结构(左下)的 2D 到 3D 重建示例。原始灰度图像是通过 SEM(扫描电子显微镜)以 20nm 的像素分辨率获得的。分割是通过阈值实现的。重建 3D 堆栈后,将显示重建体积的单个切片(右),显示出与原始结构“相似”的结构外观。水泥(左)和燃料电池(右)的重建 3D 掩模的阴影表面如下图所示。

xfig7-3-2

Shaded 3D representation of the reconstructed 3D stacks from the reconstructed volume of the cement paste (left) and the anode membrane (right).

评价

本节的插件实现了对图像值和结构的定量评估。这是不同科学领域图像处理的一个重要课题。定量评估的结果不是过滤后的图像,而是代表某些结构特征的数字。

粒径分布

该插件根据包含已分割和标记颗粒的图像堆栈计算颗粒尺寸分布(PSD)[Münch2006]。可以处理包含 2D 粒子的单个图像,也可以处理表示 3D 体积的图像堆栈。

可以计算以下特征:

  • 粒子ID
  • 颗粒体积
  • 累积颗粒体积
  • 颗粒表面积
  • 累积颗粒表面积
  • 平均颗粒半径
  • 粒子边界的数量
  • 粒子计数
  • 累积颗粒计数
  • 根据边界数量加权的粒子计数
  • 根据边界数量加权的累积粒子计数
  • 聚类情况下的边界值
  • 聚类情况下的聚类平均值

还可以校正在边界处被剪切的粒子。校正仅应用于所得的孔隙半径(即不适用于孔隙体积)。该插件允许从小颗粒或大颗粒开始对颗粒体积和表面进行累积积分。程序绘制出结果参数字段。

默认情况下,该函数单独绘制每个粒子的参数集。此外,该程序允许对参数集进行不同类型的聚类。聚类意味着对间隔内的参数进行求和或平均,生成直方图。

下图给出了 2D 粒子图像、其掩模和一些粒子评估的示例。

xfig8-1

Grainy structure (top left), segmented mask of the grains (top right), and the evaluation of its particle size distribution (center and bottom).

相位图像评估

该插件提供了包含标记相位的相位图像 [Leemann2006, Leemann2010] 的评估。例如,可以在插件“Segment Phases 3D”的帮助下交互式创建标记图像,甚至可以使用插件“Cluster Image”自动创建。

相图评估计算所有相的一些参数,包括相含量百分比和相面积。另外,如果提供了与当前相位图像相关联的一个或多个灰度值图像,则可以提供每个相位的平均图像值。

此外,该插件支持剥离评估。剥离从特定定义的相开始到其周围,并且需要一组定义起始相周围的环形区域的剥离半径。剥离评估在每个剥离半径处产生一条数据线,包括剥离距离、像素数、平均值和每个相的百分比相含量。对于图像堆栈,可以执行真正的 3D 评估。

xfig8-2

Phase image (top, left) and the parameters provided for the phase image evaluation (top, right). The resulting plots and the list of parameters are displayed below.

上图(左上)给出了定义某些阶段的图像。青色的中心颗粒应该充当剥离开始的位置。 “毛孔”、“物质”、“人工”和“未指定”阶段的百分比面积绘制如下。从调用参数可以明显看出(参见上图,顶部,右侧),提供了与孔掩模相关的两个灰度数据图像(中心场)。它们的平均值取决于剥离半径,显示在底部的图表中。这些参数也在文本文件中提供(底部)。

孔径分布

该插件计算孔隙结构的孔径分布(PSD)[Münch2008],即孔隙半径的分布。如果程序在图像堆栈上运行,则可以以 2D 或 3D 方式计算 PSD。必须预先准备好孔掩模,以便简单的阈值处理程序能够将孔的位置与材料分开。 PSD 计算将在孔隙相上运行。 PDS 可以用不同的方式定义,并且必须根据具体要求进行选择 [Münch2008]。可以计算以下 PSD 类型:

  • 离散 PSD:图像数据中常用的 PSD 定义。孔隙被视为离散对象。对于每个单个孔隙,计算其孔隙面积或孔隙体积,并给出其等效圆或球体的半径。
  • 连续 PSD:孔隙空间被分为不同半径的区域,因为这些区域可以填充不同半径的球。然后将这些半径的大小附加到相应的位置。然后半径直方图充当连续 PSD。
  • 带 MIP 模拟的连续 PSD:与连续 PSD 相同的 PSD 定义。然而,不同半径的球分别从图像立方体的面之一(3D)或从图像的边缘之一(2D)侵入孔隙体积。 PSD 的这个定义对应于通过压汞孔隙率测定法 (MIP) 检索的孔径数据。
xfig8-3

3D volume of cement paste (OPC CEM 1, 42.5, w/c 0.35, 28 days hydration) acquired by FIB-nanotomography (top) and its pore size distributions of varying definition (bottom, see referenced paper).

上图(顶部)显示了通过 FIB 纳米断层扫描以 14.84 x 18.84 x 30.0 nm^3 的像素尺寸测量的水泥浆的 3D 体积图片。毛孔已通过阈值分割,并且已在切片 2D 和真实 3D 中计算了 PSD 的不同定义(下图,包含由 MATLAB 可视化的 PSD 计算结果)。

本部分包含专为 2D 切片和 3D 体积上的用户交互可视化和数据处理而设计的插件。因此,它们不仅支持某些图像数据的独特交互,而且还提供支持计算机之间和用户之间交互对话的引擎。

显示音量

该插件为卷提供了正交切片器。卷的顶视图 (xy)、前视图 (xz) 和侧视图 (yz) 在特定点(图像启动时的中心点)显示。然后可以通过其中一个视图中的鼠标交互来移动该点,而其余视图则跟踪更改。因此,3D 体积中的任何 x、y、z 位置都可以轻松聚焦和显示。当前位置的图像值始终接近于 ImageJ 窗口。

一旦激活插件,相应的图像堆栈就会消失。很可能,当方形切片器窗口关闭时,相应的图像堆栈再次出现并选择当前切片位置。

当插件被激活时,原始切片器的作用类似于一个公共图像堆栈,因此,任何过滤器操作或插件都可以调整单个切片或整个体积。限制是该插件无法处理覆盖,因此不支持 ROI 的选择(即使用选择工具)。

提示:如果您添加“显示体积”插件的快捷方式,则可以轻松地从传统图像存储到切片器来回切换,反之亦然。

xfig8-3

3D volume of cement paste (OPC CEM 1, 42.5, w/c 0.35, 28 days hydration) acquired by FIB-nanotomography (top) and its pore size distributions of varying definition (bottom, see referenced paper).

作为示例,上图显示了应用于 “Pore Size Distribution” 部分(顶部)中显示的 3D 体积的正交切片器的视图。切片器的红色十字线显示当前 3D 光标位置,允许以交互方式聚焦 3D 空间中的任何点。位置向量和关联的图像值绘制到 ImageJ 窗口(顶部)。

编辑标签区域

xfig9-2

该插件提供了一个用于交互式编辑标签图像或标签卷(即图像堆栈)的引擎。标签图像是在每个区域具有特定灰度级或颜色的一组区域的图像(示例参见右图“Disconnect Particles”)。支持手动选择的 3D 对象的删除、连接、腐蚀、膨胀、打开或关闭等操作。还有一种删除小于一定尺寸的对象的操作。对于图像堆栈,所有操作都可以在切片 2D 中执行,也可以在 3D 中真正按体积执行。引擎的界面如右图所示。

xfig9-3

Engine for 3D segmentation (top right) which is currently operating on two gray level images (left). The image at the bottom right is the interactively segmented phase image which is currently containing four different phases (see top left figure for the plugin “Phase Image Evaluation”).

3D 阶段分段

该插件提供了一个用于多个阶段交互式分段的引擎。该程序适用于单个图像和图像堆栈。对于图像堆栈,可以在切片 2D 或 3D 中执行操作。当前在 ImageJ 会话中打开的所有图像或图像堆栈可以用作输入图像或图像卷。能够使用多个输入图像的优势使得可以从同一 2D 或 3D 场景的多个重合或多个滤波版本创建相位掩模。该插件专为交互式使用而设计,但它提供了一种脚本语言,可以在非交互式模式下运行脚本。因此,甚至可以从命令行启动自动分割过程。

该程序的输出是 2D 相位图像或 3D 相位图像堆栈,其中可能包含最多 24 个不同的相位。通过对任何输入图像使用不同类型的操作来定义位掩码来创建阶段。构建相的可能操作包括手动绘图(通过使用 ImageJ 主工具栏上的选择按钮)、阈值处理、规则或约束区域生长、侵蚀、膨胀和去除小区域。

智能工作流程允许逐步细化由位掩码表示的每个单相。通过对 a) 已存在的位掩码和 b) 由上面列出的一项或多项操作创建的临时掩码使用逻辑算术(即布尔 AND、OR、XOR、NOT)来交互修改位掩码。例如,如果选择了阈值操作,则可以通过运行“OR”操作将其临时掩码添加到当前选择的阶段。操作期间的临时掩码始终以红色来区分,而操作完成后当前有效的掩码以蓝色表示。

为每个阶段评估阶段名称和 ID 以供后续处理。在某些阶段可能相互重叠的情况下,ID 很重要,以便定义优先级。

生成的图像可以是当前所选相位的简单二进制 2D 或 3D 掩模(按钮“显示掩模”),也可以是相位图像或由包含多个相位的 32 位彩色 TIFF 图像组成的图像堆栈(按钮“显示相位”)。在相位图像包含多个相位的情况下,每个相位由 32 位整数中的单个位表示。因此,所有阶段名称和 ID 都另外存储到 TIFF 文件头中。因此,由此创建的 TIFF 相位图像可以稍后重新加载,以便连同其所有固有相位名称一起进行进一步处理。

为了了解工作的基本原理,请考虑以下示例步骤:

  • 通过单击鼠标选择所需的图像,然后返回“Segment Phases 3D”工具并单击 GUI。这样,所请求的图像就被激活了。或者,可以使用组合框“输入图像”选择当前活动图像
  • 为了对图像进行阈值处理,从而通过定义二元掩模,通过调整阈值下限和上限来选择值范围。这可以通过移动滑块或在右侧的文本框中键入值(并使用进行确认)来实现。红色临时蒙版显示为覆盖层。
  • 同样,也可以使用 ImageJ 工具“矩形”、“椭圆形”、“多边形”或“徒手”选择来创建临时蒙版(在 3D 模式下,仅适用于切片)。
  • 按请求的位操作按钮,将临时掩码应用到当前有效掩码。例如,如果在开始新会话或定义新阶段时当前有效掩码一如既往地为空,则“OR”操作将临时掩码添加到当前空掩码。出现蓝色结果蒙版。
  • 一旦当前掩码(蓝色)不是空的,就可以通过将当前蓝色掩码与新生成的红色临时掩码组合来类似地应用位运算“AND”、“XOR”或“NOT”。
  • 对于图像堆栈,此(或任何其他)操作以 2D 或 3D 形式执行,具体取决于是否选中“体积”复选框。
  • 当前和临时蒙版都可以通过应用区域生长、腐蚀、膨胀或小颗粒去除操作(按钮“删除克鲁夫特”)来进一步细化。因此,这些操作中的任何操作都可以在应用位操作之前应用于红色掩模,或者应用于当前有效的蓝色掩模。 -“增长区域”和“删除区域”操作需要一个或多个初始点,可以使用 ImageJ 的“点”或“多点”工具定义这些初始点。此外,“生长区域”过程可以受到由滑块和文本字段“约束”定义的像素邻域的最小尺寸的约束。
  • “腐蚀”和“膨胀”操作工具都需要通过“大小”文本框定义腐蚀或膨胀大小。
  • 用于去除小颗粒的“Delete Cruft”工具需要应删除的颗粒的最大尺寸。这是通过使用“大小”文本框定义数字来实现的。
  • 按“显示掩码”按钮可以检索当前所选阶段的简单二进制掩码。
  • 大多数编辑步骤可以通过使用“撤消”按钮轻松取消。使用“重做”按钮也可以恢复已取消的编辑步骤。这样最多可以恢复32个编辑步骤。
  • 如果要定义多个阶段,则可以通过按“新类”按钮单独创建每个阶段。新类获得一个可以手动覆盖的初始名称(编辑后按键)。现在,每个类图层在通过“类 ID”组合框选择后都可以单独编辑。通过按“删除类”可以删除当前类。
  • 默认情况下,阶段类按照右侧“类 ID”组合框固有的层次降序顺序相互重叠。可以通过更改左侧组合框中的数字来更改此层次结构顺序(将新数字写入文本字段,然后按)。或者,通过选中“重叠”复选框,可以将相类指定为彼此独立地重叠。如果指定了重叠模式,则阶段层次顺序无关。
  • 相位图像被编码为 RGB 彩色图像。已经存在的相位图像可以通过使用 ImageJ 打开它们来加载,然后通过组合框“相位图像”中的相应条目定义它们,然后按“加载”按钮。或者,可以通过使用“阶段路径”按钮选择文件路径来打开和加载它们。如果尚不存在并按“显示相位”,则会创建相位图像。如果打开并显示,它们会在每次修改它们所包含的任何类后更新。通过按“保存”按钮,当前版本的相位图像将被保存,默认情况下保存到“相位图像”中选择的路径。
  • 由于额外的事件侦听器,打开的“Segment Phases 3D”实例会增加浏览图像堆栈切片时所需的时间。这种阻塞效果可能会很烦人。为了绕过听众并从而提高速度,可以暂时选中“断开连接”复选框(如果再次使用“Segment Phases 3D”,则取消选中)。
  • 通过选中“记录脚本”复选框,将打开一个文本编辑器并记录每个执行的操作。创建的文本文件稍后可以调整、存储到文件、重新加载并通过按“运行脚本”按钮运行。

右图显示了分割引擎对在相同位置但不同显微镜设置下获取的水泥浆 (OPC CEM 1) 的两张 SEM 图像进行操作时的可视化情况。右下角的彩色图像显示了当前构建的由 4 个不同重叠相位组成的相位图像。非重叠模式下的相同图像显示在左上角的 “Phase Image Evaluation” 插件部分中。目前,名为“Grain”的阶段处于活动状态,并以透明蓝色覆盖到左上角的灰度图像。像这样,任何当前的操作现在都将达到“Grain”阶段。矩形和心形是使用选择工具手动绘制的。

xfig9-4

Triangulated and shaded visualization of the 3D volume in the plugin for “Pore Size Distribution” and “Display Volume”.

查看 3D 蒙版

该插件提供了图像和骨架蒙版的 3D 查看器。原始数据库应该是一堆图像。图像蒙版可以包含任意对象的蒙版,而骨架蒙版应包含先前在 3D 中骨架化的对象。可以通过预先调用“Skeletonization 2D 3D”插件来执行3D骨架化。

对于 3D 着色,图像蒙版可以进行三角测量或体素化。三角测量是通过使用众所周知的行进立方体算法 [Lorensen1987] 来执行的,而体素化是通过 Artzy 等人的技术来执行的(参见下面的参考资料)。

查看器可调整大小。 3D 场景可以旋转、平移或缩放。使用鼠标左键可以实现旋转。通过鼠标右键可以实现x、y方向的平移。如果观察者距离场景太近,z 方向的平移有时会很有用。可以通过鼠标中键来实现。通过同时按下键和鼠标左键来实现缩放。

当前变换矩阵始终存储到位于启动 ImageJ 的文件夹中的文本文件中。每次旋转、平移或缩放发生变化后都会更新。像这样,似乎对进一步可视化有用的场景的当前设置可以存储到文件中。

3D 查看器底部还包含一个名为“将画布另存为 JPEG”的按钮。按下该按钮,可以将当前视图存储为 JPG 图像。该图像的分辨率对应于 3D 窗口的当前分辨率,即其窗口大小。

例如,右侧图像中显示了分段 3D 体积的三角视图(请参见水泥浆的纳米断层 3D 样本、插件图像 “Pore Size Distribution”(上图)和“Display Volume”)。 “Reconstruct 3D from 2D”“Skeletonization 2D 3D” 的插件描述中给出了其他示例,显示了原始 3D 场景、其骨架以及将其元素大小调整为由距离变换值确定的尺寸后的骨架(请参阅“Distance Transform” 插件)。