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

我在 imageJ 中编写了一个宏,它会输出一个数据框,然后在 R 中进行分析。我希望能够在 R 中运行整个过程,而不必先在 imageJ 中手动运行宏。目前宏提示用户输入和输出目录,然后做它的事情。我在想 R 中必须有一个函数可以让我指定宏以及输入和输出目录(然后我可以在宏中重新编码这些变量以某种方式通过 R 脚本获取这些参数?)
我认为我可以使用 system() 命令,并从网络上的其他地方找到了这个诱人的线索:
system("./JavaApplicationStub directory file[i] -batch zmacro")
Run Code Online (Sandbox Code Playgroud)
但我不确定如何实现这一点(我的宏已经使用了批处理,因此该部分是不必要的)。
是否可以通过读取该研究中文件的 DICOM 头来找到 DICOM 研究中的图像数量?
我正在开发一个 Java 应用程序,它接收来自不同来源的 DICOM 研究。我只想检查一份研究是否已经完全收到。
不幸的是,我不能依赖阅读 DICOMDIR,因为在许多情况下,研究没有该文件。我也熟悉 dcm4che 和 imageJ 库。
干杯,阿拉什
对于我的学士论文,我需要分析在海洋中拍摄的图像来计算和测量水粒子的大小.
我的问题:除了想要的水粒子外,图像在整个图像中都显示出六边形斑块: - 不同尺寸 - 不规则形状 - 不同的灰度值
(下面的示例图片!)
很明显,这些补丁将伪造我关于粒子大小和数量的图像分析.因此,需要以某种方式检测和删除此修补程序.
因为它只是我论文中工作的一小部分,所以我不想花太多时间在它上面,并且已经尝试过经典方法,如:(imageJ)
更复杂和耗时的解决方案是使用例如matlab或opencv中的实现库来检测描述形状的点.但到目前为止,我找不到适合我任务的代码.
你们有没有人创造过我可以用于我的任务或任何其他想法的代码?

你也可以看到很多不同深度的六边形斑块.具有更大像素值的小点是想要的粒子!
编辑注意:这个问题最初的措辞是
如何在 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),但解决方案适用于 …
我想将多个具有 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] ) 被错误地识别为 …
我打算将ImageJ用于webapp,但似乎ImageJ maven依赖项不在中央maven存储库中.
您好,我正在尝试将参数传递给我的 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() :此方法将检索传递给插件的参数的字符串。但是,我仍然找不到传递超过 …
我在Windows上使用Fiji/ImageJ并遇到以下问题:当我关闭文件时,不会释放为该文件分配的内存.ImageJ保留分配的内存,并在打开其他文件时重用它.
所以这不是严格意义上的内存泄漏,但仍然非常烦人,尤其是在处理大文件时.图像关闭后是否有手动或(最好)自动方式触发垃圾收集?
编辑:
示例:我使用大文件和Windows任务管理器来检查内存分配.
我的问题是我通常会用一些文件和窗口打开斐济.然后我打开一些大文件并最终关闭它们,但ImageJ仍保留我的记忆.然后我开始执行一个内存饥饿的工作,我很快耗尽内存,当Windows开始交换东西时整个系统挂起.
我正在使用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)

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