- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在查看 ImageJ 中的图像数据集(一堆 .tif 图像,大约 130 帧),我对数据集有疑问。这是一系列显微镜图像,每一帧都是一个平面,比前一帧高/低 3-4 微米。随着我深入研究数据集,光散射使背景更亮,因此标本的主要特征变得更暗。
但是,ImageJ 的亮度和对比度功能使用直方图表示整个图像堆栈。当我在堆栈深处的图像上单击“自动”和“重置”时,产生的对比度非常完美:所有功能都非常亮。然而,回到堆栈的开始,大多数特征已经饱和。
我已经尝试从堆栈中的不同点手动提取一些图像,并分别对每个图像执行自动 -> 亮度和对比度重置,然后将它们重新转换为堆栈,它看起来非常可靠。我如何以编程方式(例如使用插件)为整个堆栈执行此操作?相关的 API 调用是什么?
最佳答案
开始编写此类脚本的一个好方法是使用 ImageJ 的宏记录器 - 您可以从 Plugins > Macros > Record ...
开始。对于此示例,我假设您已将 Record:
选项框切换为 JavaScript
,但如果您更熟悉 ImageJ 宏语言或编写插件在 Java 中,其中一个可能是更好的选择。如果您随后打开图像并使用 Image > Stacks > Set Slice ...
并选择(比如)切片 20,您应该会看到:
imp.setSlice(20);
...出现在记录器中。现在,如果您运行 Image > Adjust > Brightness/Contrast...
并选择 Auto
,您应该会在记录器中看到这等同于运行 Enhance Contrast
保持 0.35% 饱和像素。正如您所指出的,这样做的问题在于,这会调整整个堆栈的最小值和最大值,而不仅仅是那个切片。但是,您可以通过运行 Process > Enhance Contrast
以不同的选项运行 Enhance Contrast
。 ImageJ documentation wiki 上有关该选项的部分解释说,如果您想更改像素值而不是设置堆栈的最小值和最大值,则需要选择“标准化”选项。如果我选择这样做,宏记录器会记录:
imp.setSlice(20);
IJ.run(imp, "Enhance Contrast", "saturated=0.35 normalize");
...您应该会看到只有切片 20 被更改了。然后,您可以将其包装在一个循环中,该循环在每个切片上运行相同的增强功能:
var imp = IJ.getImage();
var n = imp.getStackSize();
for( var i = 0; i < n; ++i) {
imp.setSlice(i+1);
IJ.run(imp, "Enhance Contrast", "saturated=4 normalize");
}
(如果您使用的是 Fiji,那么脚本编辑器(例如通过 File > New > Script
)是试验此类脚本的简单方法。)
当然,使用归一化选项确实会导致像素值发生变化,这意味着在这种情况下您会丢失信息,因此我不会将生成的堆栈用于定量结果。
希望对你有用。
关于java - 一堆图像的 ImageJ 亮度和对比度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4473768/
我在 fiji/imagej 中制作了一个宏,我想通过终端在 shell 脚本中激活它。就目前而言,宏不需要任何输入,我只想让斐济在从终端激活时运行宏,并将其输出保存在输出文件夹中。宏的脚本如下所示:
我在使用 ImageJ 宏时遇到问题。函数 selectImage(id) 和 selectWindow(name) 导致 ImageJ 完全崩溃,甚至我必须完全重置 Unity(我使用的是 Ubun
在我的代码中使用外部库时,我非常新手。我一直在寻找如何将这个特定的库实际添加到我的构建路径中,这令人尴尬。 我的主要问题是我找不到 .jar 文件,或者我不知道如何从克隆的 git 存储库转到 jar
问题的逆向是: 如何从 ImageJ 宏调用/执行 java 程序? 每当我写 imagej 时,我指的是斐济。 当然,一个简单的解决方案是从 java 字符串创建一个 .ijm 并使用以 .ijm
我在 ImageJ 中编写了一个宏来在 BMP 图像文件列表上运行批量“测量”。我正在使用 headless.jar 以 headless 模式在远程 linux 机器上运行代码。 每当 ImageJ
在我正在编写的宏中,我尝试使用以下结构从插件导出结果: savePath = newfolder+"\\"+fileid; run("Export results", "filepath=savePa
问题:稳定一堆图像 问题:如何在没有关键点检测的情况下执行图像稳定?有什么办法吗? 我试过这个: http://www.cs.cmu.edu/~kangli/code/Image_Stabilizer
我正在开发一个用于压缩图像的插件。在“奇迹发生”之前,用户应该决定是否要使用具有三个或四个邻居的方法。为此,我创建了一个带有 RadioButtonGroup 的通用对话框。 这工作正常,我的问题是如
我在 Windows 上使用 Fiji/ImageJ 并遇到以下问题:当我关闭文件时,为该文件分配的内存未释放。 ImageJ 保留分配的内存,并在打开其他文件时重用它。 所以这并不是严格意义上的内存
我正在 Java 中使用 IJ 库。我打开了几张图像,我想保存最后一张 Activity 图像。但是,我只保存最后打开的图像而不是最后一个 Activity 图像。有什么解决办法吗? ImagePlu
我希望能够将图像校准到物理距离,以便我可以将图像裁剪到物理距离,而不是给出要裁剪的像素数。我已经在 ImageJ API 中看到了 Calibration 类,我可以设置校准来设置像素尺寸并通过设置
请问,怎样才能使图像透明? 实际上,我尝试从 IndexColorModel 读取 RGB 值 ImageProcessor ip1 = img1.getProcessor(); IndexColor
当我尝试使用 ImageJ 运行图片分析并尝试计算孔隙率时,出现了问题。 我记录了宏并在 java 中运行相同的过程。这两次执行的结果不同,我不知道为什么。你能帮忙吗? 我尝试使用 ImageJ AP
我正在使用 ImageJ 进行类(class)的图像处理,并且我已经创建小插件几个星期了。这让我很沮丧,因为我从未见过任何 java 错误消息,例如第 3 行的语法错误等等。当我的插件无法编译(由于某
我正在尝试构建一个简单的java应用程序,它可以对粒子进行计数,然后显示它们的数量。我正在使用 imagej (ij.jar) 库,一切都很完美,直到应该显示带有结果的小框。有人可以向我解释一下我该如
我的程序遇到了一个小问题,因为它似乎无法找到直方图中的最高值来计算直方图应该的比例,所以现在整个直方图超出了范围 我真的希望有人能帮助我,因为这让我发疯 import ij.*; import ij.
所以我想我问了一个新问题,这是我的旧问题的延伸。因此,我能够将 ImageJ 窗口中的内容放入桌面 Pane 内的 JInternal 框架中。但图像不会随着帧尺寸的放大而缩放。我发现了几种主要使用
我已经下载了ImageJ源代码并编译并运行了ImageJ源代码。我按照签名制作了 ij.jar。但是,当我尝试在网页中嵌入 ImageJ 小程序时,图像窗口将作为弹出窗口出现,而不是粘在浏览器上。 非
我正在 ImageJ 插件中使用“减去背景”操作,并且尝试使用 BackgroundSubtracter 类来执行此操作,但结果与使用宏语句时的结果不同。例如: IJ.run(img, "Subtra
给定两个 ImagePlus 或 BufferedImages(我不在乎)我如何匹配第一个与第二个的直方图? 我所说的匹配是指: 匹配一个的累积分布函数(CDF)图像到另一个的 CDF。 最佳答案 您
我是一名优秀的程序员,十分优秀!