繁体   English   中英

ImageJ在一堆图像上的亮度和对比度

[英]ImageJ Brightness & Contrast over a stack of images

我正在查看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%饱和像素。 正如您所指出的,这个问题是,这会调整整个堆栈的最小值和最大值,而不仅仅是该切片。 但是,您可以运行Enhance Contrast通过运行带有不同的选择Process > Enhance Contrast ImageJ文档维基上有关该选项的部分解释了如果要更改像素值而不是设置堆栈的最小值和最大值,则需要选择“标准化”选项。 如果我选择这样做,宏记录器记录:

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");
}

(如果您使用斐济,那么脚本编辑器(例如通过File > New > Script )是一种简单的方法来试验这些脚本。)

当然,使用normalize选项会导致像素值被更改,这意味着在这种情况下您将丢失信息,因此我不会将结果堆栈用于定量结果。

我希望有一些用处。

您也可以考虑使用CellProfiler来处理图像。 即使CP无法直接执行您要执行的操作,您实际上也可以从CP运行ImageJ命令,插件和宏。

最简单的方法是,您可以创建一个只有LoadImages和RunImageJ的CP管道。

对于OP的问题,接受的答案是最好的,但如果您想根据特定数据的切片更改亮度/对比度,则可以使用一个小变体。

在我的情况下,我希望有一个阈值效果,但阈值在堆栈的每个切片中都在变化。 我去了几个不同的切片并手动找到了阈值。 然后,我发现阈值(Tv)的近似函数作为切片的函数,如下所示:

Tv=4000/s-17

因此,然后我的脚本变成:

importClass(Packages.ij.IJ);

var imp = IJ.getImage();
var n = imp.getStackSize();
var miny,maxy;

for( var i = 1; i < n+1; ++i) {
    imp.setSlice(i);
    miny=parseInt(4000/i-17);
    maxy=miny+5;
    IJ.setMinAndMax(imp, miny, maxy);
    IJ.run(imp, "Apply LUT", "slice");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM