这部分介绍了ImageJ的一些基本知识,以便用户更有效地使用该软件。它还介绍了本手册中使用的一些重要术语和概念。如果您已经有效地使用了该程序,并且熟悉诸如Virtual Stacks, Hyperstacks, Pseudocolor Images, Color Composite Images or Composite Selections。
当你使用ImageJ时,你会学到越来越多的快捷键,因为(几乎)所有的快捷键都列在ImageJ菜单中。同样,在本指南中,每个命令的名称上都列出了快捷键(两边用方括号括起来)。
请注意,这些键绑定的表示法是区分大小写的,即没有明确提及时便使用Shift修饰符(例如大写A表示Shift+a),并默认选中“编辑>选项>其他”中的快捷键需要Ctrl键。
修饰符有Shift、Ctrl和Alt三种。
浏览ImageJ命令、宏和插件的大量列表可能相当麻烦。通过其内置的命令查找器/启动器,ImageJ提供了一种快速替代方案,使您能够极其快速地检索命令:Plugins>Utilities>Find Commands. . .。
此外,ImageJ还提供了一个查找功能,用于查找计算机上的宏指令、脚本和插件源文件:Plugins>Utilities>Search. . .。由于大多数IJ源文件都包含间接注释,因此您可以使用此实用程序来检索不仅与图像处理例程相关的文件,还与实际上下文(如放射图、细胞或组织学)相关的文件。事实上,ImageJ源文件包含详细的注释,这些注释对想要了解更多ImageJ例程和算法的开发人员和普通用户都很有用。
您可能会注意到的第一件事:ImageJ没有大的undo/redo缓冲区。撤消(编辑>撤消)当前仅限于最近的图像编辑/过滤操作。随着时间的推移,您会意识到这对于最大限度地减少内存开销是必要的。尽管如此,对于IJ 1.45及更高版本,在大多数情况下,Undo是可撤消的,并且如果在Edit>Options>Memory & Threads. . . 选中“Keep multiple undo buffers(保留多个撤消缓冲区)”,则可以应用于多个图像。
如果您无法从错误中恢复,您可以始终使用 File>Revert 将图像重置为其上次保存的状态。对于选择,Edit>Selection>Restore Selection 可用于恢复任何错误选择。
在ImageJ中,相当于“redo”的是 Process>Repeat 命令,它会重新运行以前使用的命令。
数字图像是像素强度值的二维网格,图像的宽度和高度由x(行)和y(列)方向上的像素数量定义。因此,像素(图片元素)是图像中最小的单一成分,具有介于黑色和白色之间的数值——像素强度。该范围的特征,即图像中可能存在的唯一强度(亮度)值的数量,被定义为图像的位深度,并指定强度编码的精度水平。例如:2位图像有2的2次方=4个色调:00(黑色)、01(灰色)、10(灰色)和11(白色)。4位图像具有2的4次方=16个色调,范围从0000(0)到1111(16)等。就每像素比特数(bpp)而言,ImageJ处理的最常见的图像类型(图像>类型)有:
ImageJ以本地方式(即不需要第三方插件)打开以下格式:TIFF, GIF, JPEG, PNG, DICOM, BMP, PGM 和 FITS。
打开文件时,ImageJ首先检查它是否可以以原生方式处理该格式。如果ImageJ无法识别文件的类型,它会使用HandleExtraFileTypes(与ImageJ捆绑的插件)调用适当的读取器插件。如果失败,它会尝试使用 OME Bio-Formats library(如果存在)打开文件,这是一个出色的插件,支持显微镜中使用的一百多种最常见的文件格式。如果仍然无法打开文件,则会显示一条错误消息。
因为这两个插件都在积极开发中,所以保持它们的更新是很重要的。
此外,ImageJ网站列出了60多个插件,这些插件可以识别更“奇异”的文件格式。ImageJ文档门户还维护ImageJ支持的文件格式列表(有些过时)。
ImageJ可以在单个窗口中显示多个空间或时间相关的图像。这些图像集被称为堆栈。构成堆栈的图像称为切片。在堆栈中,像素(表示位图图像中的2D图像数据)变为体素(体积像素),即在三维空间中的规则网格上的强度值。
堆栈中的所有切片必须具有相同的大小和位深度。滚动条提供了在切片中移动的能力,滑块前面有一个播放/暂停图标,可用于启动/停止堆栈动画。右键单击此图标将运行“动画选项”对话框。
作为一种选择,大多数ImageJ过滤器将处理堆栈中的所有切片。ImageJ将多图像TIFF文件作为堆栈打开,并将堆栈保存为多图像TIFF。File>Import>Raw. . .命令打开其他多图像、未压缩的文件。图像文件夹可以作为堆栈打开,方法是将文件夹拖放到“ImageJ”窗口,或选择 File>Import>Image Sequence. . .。要创建新堆栈,只需选择 File>New>Image. . . 并将切片字段设置为大于1的值。Image>Stacks>submenu 包含用于常见堆栈操作的命令。
虚拟堆栈驻留在磁盘上(而不是驻留在RAM上),是加载不适合RAM的图像序列的唯一方法。在使用虚拟堆栈时,需要记住以下几点:
ImageJ将“(V)”附加到虚拟堆栈和超堆栈的窗口标题。File>Import>submenu 中的几个内置ImageJ命令能够打开虚拟堆栈,即: TIFF Virtual Stack. . . , Image Sequence. . . , Raw. . . , Stack From List. . . , AVI. . .。此外,TIFF堆栈可以通过拖放作为虚拟堆栈打开。
Hyperstacks是多维图像,将图像堆栈扩展到四(4D)或五(5D)维度:x(宽度)、y(高度)、z(切片)、c(通道或波长)和t(时间帧)。Hyperstacks显示在一个带有三个标记滚动条的窗口中。与Stacks中的滚动条类似,帧滑块(t)有一个播放/暂停图标。
ImageJ主要通过三种方式处理颜色:伪彩色图像、RGB图像、RGB/HSB堆栈和合成图像。
伪彩色(或索引彩色)图像是通过查找表或LUT分配颜色的单通道灰度图像(8、16或32位)。LUT实际上是一个预定义的灰色值表,具有匹配的红色、绿色和蓝色值,因此灰色阴影显示为彩色像素。因此,伪彩色图像中的颜色差异反映了物体的强度差异,而不是已经成像的样本的颜色差异。
8位索引彩色图像(如GIF)是伪彩色图像的一种特殊情况,因为它们的查找表与图像一起存储在文件中。这些图像被限制为256种颜色(24位RGB图像允许1670万种颜色),同时文件大小也较小。通过颜色量化算法将真实颜色值减少到256调色板。ImageJ使用Heckbert的中值剪切颜色量化算法,在大多数情况下,该算法允许索引的彩色图像看起来与24位原始图像几乎相同。
如图像类型和格式中所述,诸如RGB图像之类的真彩色图像反映真实的颜色,即,RGB图像中的绿色反映样本中的绿色。彩色图像通常由彩色CCD相机产生,其中滤色器阵列(贝尔蒙版)放置在图像传感器上。
颜色空间描述图像处理设备处理的色域。因为人类的视觉是三色的,所以大多数颜色模型用三个值来表示颜色。从数学上讲,这些值(颜色分量)形成了一个三维空间,如RGB、HSB、CIE Lab或YUV颜色空间。
RGB(红、绿、蓝)是最常用的颜色空间。然而,在处理颜色信息时,诸如HSB(色调、饱和度、亮度)之类的其他替代方案提供了显著的优势。在HSB颜色空间中,Hue描述了纯色的属性,因此可以区分颜色。饱和度(有时称为“纯度”或“活力”)是颜色阴影的特征,即在纯色中添加了多少白色。亮度(也称为Value–HSV系统)描述颜色的整体亮度。在数字成像处理方面,使用HSB系统而不是传统的RGB通常是有利的:例如,由于HSB图像的亮度分量对应于该图像的灰度版本,因此在需要灰度图像的例程中仅处理亮度通道是一个显著的计算增益。
在ImageJ中,使用 Image>Type>submenu 执行图像类型之间的转换。HSB、RGB、CIE Lab和YUV颜色空间的分割可以通过Image>Adjust>Color Threshold. . .命令。使用Gabriel Landini的颜色反卷积插件也可以分离颜色成分(特别适用于组织化学染色的定量)。此外,还可以从ImageJ网站上获得其他几个与颜色处理相关的插件。
人们看到的颜色变化很大。事实上,流行的短语“一幅画抵万字”可能不适用于某些彩色图像,特别是那些不遵循彩色通用设计基本原则的图像。引用Okabe和Kei Ito的话:
色盲的人可以识别各种各样的颜色。但某些颜色范围很难区分。色盲的发生频率相当高。每12名高加索人中就有1人(8%)、每20名亚洲人中就有一人(5%)和每25名非洲人中就有1%(4%)是所谓的“红-绿”色盲。
观众和读者中总是有色盲。一个有250人的房间里应该有10个以上的色盲(假设50%的男性和50%的女性)。
你提交的论文很有可能会交给色盲评审员。假设你的论文将由三名白人男性进行审查(考虑到目前的科学人口,这是不太可能的),他们中至少有一人是色盲的概率高达22%!
彩色通用设计定义的一个实用点是在红-绿覆盖层中使用品红色。品红色是红色和蓝色的相等混合物。难以识别红色成分的色盲者可以很容易地识别蓝色色调。双阳性区域变为白色,这对于色盲来说很容易区分。在ImageJ中,使用Image>Color>Merge Channels. . . 可以很容易地实现这一点,或使用ImageJ宏指令。
在合成图像中,颜色是通过通道处理的。与普通RGB图像相比,这种类型的图像的优势在于:
选区(感兴趣的区域,ROI)通常使用工具栏工具创建。尽管ImageJ可以同时显示多个ROI,但一次只能激活一个选择。在区域选择的情况下,可以测量(Analyze>Measure…)、绘制(Edit>Draw)、填充(Edit>Fill)或过滤(Process>Filters>submenu)选择。此外,还可以保存多个ROI作为非破坏性覆盖层。
选区最初可以用九种ImageJ默认颜色(红色、绿色、蓝色、品红色、青色、黄色、橙色、黑色和白色)中的一种勾勒出来。创建后,可以使用 Edit>Selection>Properties. . . 对选择进行轮廓绘制或使用任何其他颜色绘制。选区颜色可以在Edit>Options>Colors. . .中更改,通过双击“点工具”,或使用热键
在定义或绘制选区时有用的大多数命令都可以在Edit>Selection>submenu中使用,并在ROI操作中进行汇总。下面列出了涉及选区的最常见操作:
复合选区是包含一个以上像素簇的非连续ROI和/或包含内部空穴的ROI。复合ROI通常由“笔刷选区工具”(Brush Selection Tool)创建,但也可以使用任何其他使用关键点修改器的选区工具来定义。以下修改器键可用于创建组合选区:
请注意,某些操作可能无法在复杂的ROI上正确执行。在这些情况下,使用Edit>Selection>Enlarge. . .将复合ROI转换为多边形可能很有用。
在ImageJ 1.46,可以以亚像素精度定义选区,超出图像的标称像素分辨率:浮点选区。如果Edit>Options>Profile Plot Options中的“亚像素分辨率”复选框处于激活状态,则会使用浮点坐标创建线条选区。可以使用Edit>Selection>Interpolate命令对预先存在的选区的亚像素坐标进行插值。插值点在放大1200%或更大的图像上创建的小选区上很容易被注意到。
以(左)或不以(中)亚像素精度绘制的ROI。对于线条选区(请参见线条选区工具),可以通过激活亚像素分辨率复选框,在Edit>Options>Profile Plot Options 中启用此选项。可以使用Edit>Selection>Interpolate对区域选择的像素坐标进行插值。
套印是在图像叠加上“覆盖”像素数据的非结构选区,是ImageJ中无损图像处理的核心。在某种程度上,您可以将图像覆盖视为一个不可见的ROI管理器,在其中添加选区,从而使ROI处于“保留”状态。ImageJ2中对多个不同选区的概念进行了显著改进,因此如果多个ROI在您的工作流程中很重要,我们敦促您下载IJ2。
重要的是,图层选区是由数学定义的路径组成的矢量图形(而不是由像素定义对象的光栅图形),并且不受缩放的影响,即不变得像素化。大多数与涂层相关的命令都列在Image>Overlay和ROI管理器窗口(Analyze>Tools>ROI Manager)中。涂层选区的外观可以使用Image>Overlay>Overlay Options/Labels进行调整。
涂层保存在tif图像的标题中,使用ImageJ的默认文件格式TIFF时不需要外部保存。涂层的主要优点总结如下:
目前,ImageJ中对3D ROI(包含连续体素簇的选区)的支持有些有限。ImageJ2和几个IJ1插件已经解决了这个限制。下面的列表总结了一些有效处理多维对象的ImageJ插件。请注意,鉴于这些工具的特殊依赖性,将其作为独立的ImageJ插件手动安装是一项具有挑战性的任务,这也是为什么它们都作为Fiji的一部分捆绑在一起的原因。
可以安装专门的3D filters,如Process>Filters>Gaussian Blur 3D,以执行3D操作。
3D Object Counter (3D-OC) 对堆栈中的3D对象进行计数和限定,类似于Analyze>Analyze Particles执行的2D分析。
3D Viewer为ImageJ带来了强大的硬件加速3D可视化功能,扩展了Image>Stacks>3D Project的有限功能。在ImageJ 3D Viewer中,堆栈可以显示为基于纹理的体积渲染、曲面或正体。它是宏可记录的,可以被其他插件用作3D可视化的高级编程库。
Simple Neurite Tracer可实现管状结构的3D半自动分割。
如前所述,TrakEM2为感兴趣的多维区域提供了强大的工具。
ImageJ首选项会自动保存在首选项文件IJ_prefs.txt文本文件中。一些宏和插件也会将参数写入该文件。如果使用Edit>Options>Reset擦除IJ_prefs.txt,ImageJ将在下次打开时创建一个新的,将所有参数重置为默认值。有时,覆盖(或恢复)在工作会话期间可能已更改的某些设置可能会很有用。
setOption()宏函数可用于设置此选项和其他几个ImageJ选项。从StartupMacros.txt文件中的“AutoRun”宏调用此函数可确保每次启动ImageJ时都设置首选项。宏“Ensuring Specific Settings at Launch”举例说明了这种方法,确保在启动时强制执行以下设置: