标签: imagej

R/ImageJ:测量点和曲线之间的最短距离

我有一些R作为统计平台的经验,但在基于图像的数学方面缺乏经验.我有一系列照片(tiff格式,px /μm已知),有孔和不规则曲线.我想测量一个洞和那个特定洞的最近曲线之间的最短距离.我想为照片中的每个洞做这个.这些孔也不规则,所以也许我需要告诉程序什么是孔和什么是曲线(ImageJ有一个点和分段线函数).

任何想法如何做到这一点?我应该在R中使用哪个包?你会为这种任务推荐另一个程序吗?

示例图片

geometry r photo imagej

5
推荐指数
1
解决办法
3309
查看次数

如何使用 R 调用/执行 imageJ 宏?

我在 imageJ 中编写了一个宏,它会输出一个数据框,然后在 R 中进行分析。我希望能够在 R 中运行整个过程,而不必先在 imageJ 中手动运行宏。目前宏提示用户输入和输出目录,然后做它的事情。我在想 R 中必须有一个函数可以让我指定宏以及输入和输出目录(然后我可以在宏中重新编码这些变量以某种方式通过 R 脚本获取这些参数?)

我认为我可以使用 system() 命令,并从网络上的其他地方找到了这个诱人的线索:

system("./JavaApplicationStub  directory file[i] -batch zmacro") 
Run Code Online (Sandbox Code Playgroud)

但我不确定如何实现这一点(我的宏已经使用了批处理,因此该部分是不必要的)。

macros r imagej

5
推荐指数
1
解决办法
3325
查看次数

如何在 DICOM 研究中找到图像数量?

是否可以通过读取该研究中文件的 DICOM 头来找到 DICOM 研究中的图像数量?

我正在开发一个 Java 应用程序,它接收来自不同来源的 DICOM 研究。我只想检查一份研究是否已经完全收到。

不幸的是,我不能依赖阅读 DICOMDIR,因为在许多情况下,研究没有该文件。我也熟悉 dcm4che 和 imageJ 库。

干杯,阿拉什

dicom imagej dcm4che

5
推荐指数
2
解决办法
5909
查看次数

检测灰度或二值图像中的六边形形状

对于我的学士论文,我需要分析在海洋中拍摄的图像来计算和测量水粒子的大小.

我的问题:除了想要的水粒子外,图像在整个图像中都显示出六边形斑块: - 不同尺寸 - 不规则形状 - 不同的灰度值

(下面的示例图片!)

很明显,这些补丁将伪造我关于粒子大小和数量的图像分析.因此,需要以某种方式检测和删除此修补程序.

因为它只是我论文中工作的一小部分,所以我不想花太多时间在它上面,并且已经尝试过经典方法,如:(imageJ)

  • 玩阈值(导致也删除想要的水颗粒)
  • 分析图像,包括六边形斑块,然后分类出最大的区域(六边形斑块有相当大的区域,但你仍然会有很多haxagons)
  • 使用滤镜:在复制的图像上使用高斯滤镜并从原始图像中减去副本会删除许多色块(减少灰度值),但也会删除很少的水粒子,因此会再次伪造结果

更复杂和耗时的解决方案是使用例如matlab或opencv中的实现库来检测描述形状的点.但到目前为止,我找不到适合我任务的代码.

你们有没有人创造过我可以用于我的任务或任何其他想法的代码?

歪曲的图像版本

你也可以看到很多不同深度的六边形斑块.具有更大像素值的小点是想要的粒子!

matlab opencv image imagej

5
推荐指数
1
解决办法
737
查看次数

SimpleITK.Show() 在 Linux 上的 ImageJ 中生成错误

编辑注意:这个问题最初的措辞是

如何在 Linux 中将 SimpleITK.Show() 链接到 imageJ?

通过将 SimpleITK 1.0.0 升级到 1.0.1,我能够从 SimpleITK.Show() 启动 ImageJ。但是,ImageJ 无法打开“sample_mri.hdr”。ImageJ 生成以下错误消息。

文件格式不支持,请阅读器

插件不可用,或者未找到。

根/本地/linux/ImageJ/open(“/temp/TempFile-7131-2.nii”);

root/local/linux/ImageJ/rename("/temp/TempFile-7131-2.nii");

我已经为 ImageJ 安装了适当的插件来读取 hdr/img (分析格式)。我可以通过转到 file>open 直接从 ImageJ 打开“sample_mri.hdr”

调试消息:

sitk.Show(img, 'sample image', debugOn=True)
Run Code Online (Sandbox Code Playgroud)

FindApplication 搜索路径:[ ./Fiji.app、/cis/home/vwang/bin/Fiji.app、~/bin/Fiji.app、/opt/Fiji.app、/usr/local/Fiji.app ]

结果:

FindApplication 搜索路径:[ ./Fiji.app、/cis/home/vwang/bin/Fiji.app、~/bin/Fiji.app、/opt/Fiji.app、/usr/local/Fiji.app ]

结果:

FindApplication 搜索路径:[ ./ImageJ、/cis/home/vwang/bin/ImageJ、~/bin/ImageJ、/opt/ImageJ、/usr/local/ImageJ ]

结果:

FindApplication 搜索路径:[ ./, /cis/home/vwang/bin/, ~/bin/, /opt/, /usr/local/ ]

结果:/usr/local/bin/ImageJ

显示命令: '/usr/local/bin/ImageJ' '-e' 'open("/tmp/sample-4434-0.nii"); 重命名(“样本”);'

插件:

如何在 Linux 中将 SimpleITK.Show() 链接到 imageJ?

我已经下载了ImageJ,可以直接运行ImageJ来查看图像。过去曾提出并回答过类似的问题(Can not "link"SimpleITK::Show() with FIJI),但解决方案适用于 …

python unix ubuntu imagej simpleitk

5
推荐指数
1
解决办法
5414
查看次数

将 32 位 TIFF 转换为 8 位 TIFF,同时保留 python 中的元数据和标签?

我想将多个具有 32 位像素深度的 TIFF 文件转换为 8 位像素深度 TIFF,同时保留元数据和 TIFF 标签

32 位 TIFF 是具有 TZYX 轴(即时间、z 深度、y 坐标、x 坐标)和 [0, 1] 范围内的值的四维 ImageJ 超级堆栈。

我可以转换为 8 位并复制元数据(使用在 ImageJ 中创建的非常小的示例图像):

import numpy as np
import tifffile

infile32 = "test.tif"

with tifffile.TiffFile(infile32) as tif:
    imagej_metadata = tif.imagej_metadata

a = tifffile.imread(infile32)
print(a.shape)

a = np.round(255 * a)
a = a.astype(np.uint8)

tifffile.imwrite("test_py-8bit.tif", a, imagej=True, metadata = imagej_metadata)
Run Code Online (Sandbox Code Playgroud)
>>> (4, 3, 10, 11)
Run Code Online (Sandbox Code Playgroud)

但是,像素分辨率(1 个像素有多少微米)错误,“z”轴 ( a.shape[1]) 被错误地识别为颜色通道,“时间”轴 (a.shape[0] ) 被错误地识别为 …

python tiff imagej imagej-hyperstack

5
推荐指数
1
解决办法
1067
查看次数

ImageJ Maven依赖于maven中心吗?

我打算将ImageJ用于webapp,但似乎ImageJ maven依赖项不在中央maven存储库中.

  • 我对吗?
  • 当ImageJ 2.x发布时,这会改变吗?

dependencies imagej maven

4
推荐指数
1
解决办法
2892
查看次数

imageJ 插件参数

您好,我正在尝试将参数传递给我的 ImageJ 插件。但是,无论我通过什么,程序都会将参数字符串视为空。我在互联网上找不到关于该问题的任何文档。

我的 Java 插件看起来像这样,并且编译得很好。

import ij.plugin.PlugIn;

public class Test implements PlugIn {
    public void run(String args) {

        IJ.log("Starting plugin Test");
        IJ.log("args: ." + args + ".");

    }
 }
Run Code Online (Sandbox Code Playgroud)

我编译,制作一个 .jar 文件并将其放入 ImageJ 插件文件夹中。我可以使用 ImageJ userInterface (Plugin>Segmentation>Test) 调用它,宏记录器将使用以下命令:

run("Test");
Run Code Online (Sandbox Code Playgroud)

然后执行我的代码,按预期弹出日志窗口:

Starting plugin Test
args: ..
Run Code Online (Sandbox Code Playgroud)

我可以在 .ijm 文件中手动运行相同的命令,并获得相同的结果。但是,当我运行以下宏命令时:

run("Test", "my_string");
Run Code Online (Sandbox Code Playgroud)

我在日志窗口中得到相同的结果:

Starting plugin Test
args: ..  //  <- I would like to get "my_string" passed there 
Run Code Online (Sandbox Code Playgroud)

它应该显示在哪里(至少我期望它做什么)

Starting plugin Test
args: .my_string. 
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:如何将参数传递给 PlugIn,尤其是如何访问它们?非常感谢


编辑


嘿,我找到了一种绕过方法:

使用 Macro.getOptions() :此方法将检索传递给插件的参数的字符串。但是,我仍然找不到传递超过 …

java macros plugins imagej

4
推荐指数
1
解决办法
1859
查看次数

在ImageJ/Fiji中自动释放未使用的内存

我在Windows上使用Fiji/ImageJ并遇到以下问题:当我关闭文件时,不会释放为该文件分配的内存.ImageJ保留分配的内存,并在打开其他文件时重用它.

所以这不是严格意义上的内存泄漏,但仍然非常烦人,尤其是在处理大文件时.图像关闭后是否有手动或(最好)自动方式触发垃圾收集?

编辑:

示例:我使用大文件和Windows任务管理器来检查内存分配.

  1. 干净启动:ImageJ中12123MB为9278K,任务管理器中使用3.56GB/16GB.
  2. 打开大型原始文件:5928MB的12123MB,9.41/16GB的任务管理器
  3. 关闭大文件:12253MB的9253K,任务管理器中的9.43/16GB GB.Fiji-win64.exe仍在任务管理器中使用6419188K内存.
  4. 关闭斐济:任务经理3.28 GB/16GB.

我的问题是我通常会用一些文件和窗口打开斐济.然后我打开一些大文件并最终关闭它们,但ImageJ仍保留我的记忆.然后我开始执行一个内存饥饿的工作,我很快耗尽内存,当Windows开始交换东西时整个系统挂起.

imagej

3
推荐指数
1
解决办法
8074
查看次数

Dicom:Matlab与ImageJ灰度级

我正在使用ImageJ和Matlab处理一组DICOM图像.为了进行处理,我需要在8位深度版本的图像中找到灰度级在110和120之间的斑点.

问题是:Matlab和ImageJ显示的图像是不同的,使用相同的源文件.我假设其中一个在读取时或显示之前在其灰度级执行某种转换.但是其中哪一个呢?在这种情况下,我如何校准,以便它们显示相同的图像?

下图显示了读取的图像的比较.在imageJ的情况下,我刚刚打开了应用程序并打开了DICOM图像.

在第二种情况下,我使用了以下MATLAB脚本:

[image] = dicomread('I1400001');

figure (1)
imshow(image,[]);
title('Original DICOM image');
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

那么哪一个正在改变原始图像,如果是这种情况,我该如何修改以使两个版本看起来都一样?

matlab image-processing dicom imagej

3
推荐指数
1
解决办法
2791
查看次数