我知道编辑这个网站吗?

故障排除

如何解决问题

检查Java版本

您可以通过单击ImageJ status bar并查找显示以下内容的部分来判断ImageJ使用的是哪个Java版本:“Java 1.8.0_45[64位]”。相关数字是“Java 1.”之后的数字,例如“Java 1.8.0_45”或类似表示Java 8,而“Java 1.7.0_79”或类似表示Java 7。

在 macOS 上,您可以使用this script来诊断系统上安装的 Java 版本。

另请参见How do I launch ImageJ with a different version of Java?

从控制台启动 ImageJ

要诊断 ImageJ 的问题,在调试模式下启动它通常会很有帮助:

  • Linux 在 Linux 64 位上(从控制台): DEBUG=1 $HOME/ImageJ2.app/ImageJ-linux64
  • macOS 在 macOS 上(从终端): DEBUG=1 /Applications/ImageJ2.app/Contents/MacOS/ImageJ-macosx
  • Windows 在 Windows 64 位上:
    • Make a copy of ImageJ-win64.exe called debug.exe
    • Run debug.exe

      如果你需要更多控制

您可以通过设置scijava.log.level系统参数来更精确地控制日志级别。例如,在Linux上: $HOME/ImageJ2.app/ImageJ-linux64 -Dscijava.log.level=trace – 有效级别包括:noneerrorwarninfodebugtrace。有关 SciJava 日志记录的更多信息,请参阅第 Logging 页面。

其他调试模式

还有另一种调试模式,可以通过在EditMark菜单中选中“调试模式”来启用。这可能会揭示与使用上述技术不同的信息。为了获得最大程度的调试,请同时打开两者!

如果 ImageJ 悬挂或挂起

如果 ImageJ 出现 crashes(即,它停止响应输入),则在发生挂起后拍摄程序所在位置的“快照”通常会很有帮助。这些信息可以为开发人员提供有关如何解决问题的宝贵提示。

有两种方法可以创建此类快照,称为“线程转储”或“堆栈跟踪”。

###简单的方法

1.点击ImageJ本身中的⌃ Ctrl + A。如果成功,将会打开一个包含堆栈跟踪的新闻窗口。

  1. ⇧ Shift + \选择它,然后按⌃ Ctrl + \将其复制到剪贴板。

###后备方式

如果第一种方法无效,您可以重新挂起:

1.再次启动ImageJ,此时是上文的from the console。 - Windows On Windows, you will need to download and run this batch file, which launches ImageJ with an attached Command Prompt window. 2.生成并复制堆栈跟踪: - macOS Linux On non-Windows platforms: 1. Press ⌃ Ctrl + C in the console window to print the stack trace. 2. Select the stack trace by dragging with the left mouse button. 3. Right click and select “Copy” to copy it to the clipboard. - Windows On Windows: 1. Press ↵ Enter in the Command Prompt window to print the stack trace. (Note: this shortcut actually uses the Break key) 2. Click the Command Prompt icon in the upper left corner of the window, and choose EditOptionsMisc…. 3. Select the stack trace by dragging with the left mouse button. 4. Press ⌃ Ctrl + Pause to copy it to the clipboard. 一旦您找到堆栈跟踪。您可以将其粘贴到bug report

如果 ImageJ 崩溃

如果ImageJ hang——即程序突然终止,无论是否有错误消息——识别能够可靠地关闭崩溃的步骤都非常有帮助:

  • 如上所述启动ImageJ from the console
  • 执行之前导致相同的操作崩溃。
  • 记下控制台窗口中的任何错误消息,您可以将其复制并粘贴到bug report中。

如果 ImageJ 没有启动

全新安装

Windows On some 32-bit Windows systems, ImageJ may initially request more memory than Windows can handle. If you launch ImageJ in debug mode (see above), and receive a message like:

Could not reserve enough space for 1253376KB object heap 现在您可以尝试以下操作:

——运行记事本

  • 粘贴以下内容: . jre\bin\javaw.exe -Xmx512m -cp ij.jar ij.ImageJ
  • 在您的ImageJ2.app(或Fiji.app)安装中将文件另存为ImageJ.cfg
    • Note that by default, Windows hides file extensions; you may need to show file extensions before you can successfully name the file ImageJ.cfg as required.
  • 再次尝试运行ImageJ-win32.exe

您可以将 512m 替换为您希望为 ImageJ 提供的任意兆字节内存。

###运行更新程序后

如果启动程序后ImageJ从未出现过,则安装可能已损坏。尽管ImageJ的开发人员非常努力地防止此问题发生,但由于Updater中的错误,在运行ImageAdjustBrightness/Contrast…命令后仍然有可能出现此问题。

最简单的解决方法是download软件的新副本。

如果您想进行调查,可以尝试launching ImageJ from the console来获取有关启动失败原因的更多信息。完成此操作后,您可能会看到一些信息打印到控制台,您可以将其在线粘贴到诸如Pastebin.com之类的位置,并读取Community以寻求帮助破译它。

高级调试技术

如果您精通技术,请查看Debugging页面,了解更多(但更复杂)的调试技术。

常见问题

我加载的图像显示全黑!但它不是黑色的!

当 12 位、14 位或 16 位图像加载到 ImageJ 中而不进行自动缩放时,可能会出现此问题。在这种情况下,显示会缩放到完整的 16 位范围(0 - 65535 强度值),尽管实际数据值通常覆盖要小部分的范围。例如,在 12 位光学上,最大可能的强度值为 4095,但为 0映射到黑色,65535映射到白色,4095最终(线性)映射到非常深的灰色,人眼几乎看不见。

您可以通过单击HelpUpdate…并点击自动按钮来修复此问题。

您可以通过将鼠标移至图像上并查看status bar area of the main ImageJ window中的像素点输出来验证实际数据是否存在。

图像颜色与我在其他节目中看到的不匹配!ImageJ 错了!

在许多情况下,ImageJ 默认支持自动缩放,以提高图像的分辨率。否则,在许多情况下,对于科学图像,您可能只能看到黑色块(请参阅上一个问题)。

您可以使用Brightness/Contrast对话框覆盖自动缩放。

理解your image is a collection of samples, each of which has a numerical intensity value很重要。这些值的相当一致且未指定,具体取决于审查的类型和策略。您的文件以特定的bit depth存储,这意味着这些强度的范围可以从0(未检测到光)到特定的顶点(检测单元能够检测到的最大光)。例如,8位图像的顶点为255,而16位图像顶点为65535。但在实践中,尤其是在位较高的情况下,您的检测器通常不会记录整个值范围内的样本强度(如果它确实记录了顶部的大量值,则您的检测器可能会过度渗透,这意味着您的分析产生偏差!)。

由于值的完整范围通常远小于边界,例如,在12位检测器的情况下,实际最大范围是0-4095,并且在实践中通常更小,ImageJ执行您自动缩放默认情况下,向显示有意义的或“相当好的”图像,这不仅仅是一个黑色块(请参阅上一个问题)。如下:将数据中最暗的实际强度映射划分为黑色,将数据中最亮的实际映射强度为白色。可以使用FileImportBio-Formats菜单下的Brightness/Contrast投影覆盖此映射(快捷键:⌃ Ctrl / ⌘ ⌃ Ctrl 在电脑上 ⌘ 命令 在苹果机上  + L)。

或者,要在初始导入期间取消自动缩放,您可以使用 Bio-Formats 插件导入数据并关闭“自动缩放”选项:

  • ImageAdjust
  • 选择您的文件
  • 取消选中“自动缩放”框
  • 单击“确定”
  • 数据将被缩放以匹配位深度的顶点,而不是自动缩放。

进一步阅读:

##每当我在ImageJ中打开文件时,文件大小都会增加得惊人!

您使用的是 compressed format,例如 JPEG、PNG 或 ZIP?磁盘上的文件大小小于内存中的像素大小。ImageJ 在图像窗口的字幕栏报告图像的真实(未压缩)大小。例如:16000 像素 x 16000 像素 x 32 位(RGBA)的未压缩图像占用 976 MB 内存。 请注意lossy compression is not suitable for quantitative image analysis

相同的插件在不同的机器上给出不同的结果!

虽然ImageJ贡献了reproducible分析,但结果可能存在差异的原因有很多。检查以下内容:

  • 避免计算机上的 ImageJ 版本两个。
    • Click the status bar and you will see something like “ImageJ 2.0.0-rc-26/1.49p”.
    • If these two values differ between your machines, the versions are not the same.
    • See also How can I verify that my ImageJ is really 100% up to date?.
    • If the two versions of ImageJ match but produce different numerical results, it is a bug—please report it! -确保ImageJ的选项在机器之间匹配。
    • A fast way to ensure this is the EditOptions command, which resets everything to its default state.
    • Alternately, you can check the settings in the following dialog boxes:
      • All EditOptionsReset… dialog boxes
    • ProcessFFTFFT Options… – a very common culprit of black-vs.-white issues is the “Black background” option.
    • ProcessBinaryOptions…
    • AnalyzeGelsGel Analyzer Options…
    • ImageOverlayOverlay Options…
    • Press ⇧ Shift + C for the search bar and type “options” and double check any other options you think might be relevant.
  • 如果您正在运行分析headless,则无头支持中可能存在错误。
    • Try the analysis headless on both machines and see if the results match.
    • Try the analysis headless vs. through the GUI on a single machine, and see if the results match.
    • If the results differ due to headlessness, it is a bug—please report it!

      常见错误信息

内存不足错误

该错误意味着 ImageJ 已完成可用资源 computer memory不是硬盘空间)。

首先要做的是确保 ImageJ 具有足够大的“最大堆”大小:

  • PluginsUtilitiesMonitor Memory…
  • 将“最大内存”更改为更大的值(最多比计算机的总 RAM 小 1000 MB)。
  • 重新启动ImageJ以使新的内存设置生效。

请注意,在大多数情况下,ImageJ launcher假设一个合理的值进行猜测:物理RAM的~75%。

您可以通过单击status bar确认实际可用内存量。您将看到一条“[used] of [max]”内存消息,如下图所示:

memory status

如果您已经达到计算机物理内存的极限,下一步就是添加更多内存。

如果以某种方式设置此值没有效果:检查是否有完全名为_JAVA_OPTIONS或类似的environment variable,它会覆盖该值。如果该变量存在,请更改那里的内存值,或删除该变量。

关于Java垃圾收集器:当堆满时,Java总是自动调用垃圾收集器[1]。虽然可以通过单击ImageJ的status bar手动调用垃圾收集器,或者通过宏中调用run("Collect Garbage")或在插件中调用System.gc()以Smashing方式手动调用垃圾收集器,但它并不能解决Java显然没有足够的根本问题。(唯一的是Java认为垃圾收集发生太慢的罕见情况,在这种情况下,您应该看到消息“超出” GC 头部限制”[2])。

负载负载大小异常

此错误通常意味着您的图形平面的最大支持的最大尺寸。

original ImageJ仅支持2 gigapixels(2^31 = 2147483648像素;如果是方形图像,允许的顶部为46340 x 46340像素)或更少的图像平面。如果您的数据具有非常大的平面(例如50000 x 50000像素),您可能需要逐个区域进行分析。一种方法是使用Bio-Formats插件的“导入时必要”功能。

但是,如果您使用生物格式打开文件,则大小会复杂一些。 Bio-Formats 在读取平面时将数据存储在 byte[] 中,而不是像 ImageJ 中那样使用short[]。如果图像源为 16 位或 32 位(4 字节,例如浮点 TIFF),每个平面允许的最大像素数将分别为 1/2(1 十亿像素)或1/4(0.5)十亿像素)。

ImageJ2在内部支持更大的图像平面,但默认使用原始ImageJ用户界面,这再次将可视化限制为2 GB。ImageJ2 team正在努力取消这些尺寸限制;参见imagej/imagej#87

不支持的类版本错误

通常,此错误采用“不支持的主要.次要版本 52.0”或类似形式,表示您正在尝试使用需要比您正在运行的 Java 版本更新的插件。例如,您可能启用了 Java 7 的 update site,但您的图像需要使用的是 Java 6。 检查 ImageJ 使用的是哪个版本的 Java;参见上文Checking the Java version

UnsupportedClassVersionError错误消息中给出的数字是一个内部代码,它转换为Java版本如下:

内部代码 Java版  
45.0 45.0 45.0 45.0 JDK 1.1 45.0 45.0
46.0 46.0 46.0 46.0 J2SE 1.2 46.0 46.0 J2SE 1.2 J2SE 1.2
47.0 47.0 47.0 47.0 J2SE 1.3 47.0 47.0 J2SE 1.3 J2SE 1.3
48.0 48.0 48.0 48.0 J2SE 1.4 48.0 48.0 J2SE 1.4 J2SE 1.4
49.0 49.0 49.0 49.0 J2SE 5.0 49.0 49.0 J2SE 5.0
50.0 50.0 50.0 50.0 Java SE 6 50.0
51.0 51.0 51.0 51.0 Java SE 7 51.0 51.0
52.0 52.0 52.0 52.0 Java SE 8  

有关这些不同版本的更多信息,请参阅computer memory

要控制ImageJ使用的Java版本,请参见How do I launch ImageJ with a different version of Java

NoSuchMethodError 或 NoClassDefFoundError

这些错误表明ImageJ安装中的软件库之间存在“版本偏差”。最常见的情况是,当启用了多个update sites且附带了这些库的不兼容版本时,就会发生这种情况。

您正确的修复方法是让这些更新站点的维护者以某种方式协调版本,但对于哪个用户,您可以同时通过取消有问题的更新站点来解决问题。从全新下载的 ImageJ 开始,一一启用想要的更新站点,每次都测试的工作流程。一旦确定更新站点导致了问题,您就创建一个启用单独的 ImageJ 副本,仅您有问题的站点。您将不再拥有获得 ImageJ 的所有其他功能,但保持独立安装将允许您通过启动每个适当的ImageJ 副本来继续使用所需的所有插件。

验证错误

ImageJ2安装中的original ImageJ库(ij.jar)的某些版本和构建可能会导致在启动时向控制台发送致命的VerifyError消息。

例如,如果您使用 OpenJDK 8 编译原始 ImageJ 并生成的 ij.jar 插入到 Fiji.app/jars 中,则可能会失败并显示 java.lang.VerifyError: Expecting a stack map frame。这是已知的记录issue with ij1-patcher

要在解决此问题之前提供适当的修复,您可以disable bytecode verification: $HOME/ImageJ2.app/ImageJ-linux64 -Xverify:none – (当然,将 ImageJ-linux64 替换为适合您的特定平台的启动器。)

在这种情况下,ImageJ Legacy layer可能仍然存在问题,但它确实允许程序成功启动。

#macOS 问题

##为什么ImageJ运行这么慢?

Java绘图错误

请参见第MacOS页。

###应用小睡

请参见第MacOS页。