随着成像技术的进步,我们捕获图像的数据量也在迅速增加。
面对海量图像数据,如何加快处理速度是一个重要问题。 GPU通常用于深度学习和图像处理中以加速图像处理。
CLIJ2,此插件在ImageJ和GPU之间架起了一座桥梁。 CLIJ2支持数百种图像处理操作,例如:滤波,二值化,投影,转换和图像数学运算[1]。对于这些操作,可以在ImageJ中直接实现GPU加速处理。
如图所示,即使您使用笔记本电脑随附的GPU,也可以显着提高图像处理速度:


官方网站:
CLIJ2clij.github.io
本文将介绍如何安装和使用CLIJ2。在决定使用CLIJ2之前,请确保:
1、计算机具有GPU(基本上每台计算机都具有);
2、最好具有一定的编程基础,只需了解ImageJ宏即可。
如果您不了解ImageJ宏,则可以参考开发教程:
ImageJ开发教程

一、插件安装
([1)打开更新页面(Help-> Update ...)
过一会儿,将显示以下页面,单击“管理更新站点”。


([2)检查clij,clij2,clijx辅助,clijx辅助扩展


然后单击“关闭”。

([3)点击“应用更改”以安装该插件


安装完成后,重新启动ImageJ,您可以在GPU(CLIJ 2)上的Plugins> ImageJ中找到该插件。
二、插件使用
首先,我们需要建立图像处理的整个过程,并了解图像处理涉及哪些步骤。
然后,检查此插件支持哪些图像操作以加快这些步骤。
插件-> GPU上的ImageJ(CLIJ 2):


或在官方网站上查看应用程序演示:

clij / clij2
clij / clij2



以及相应的函数库:
clij.github.io/clij2-docs/reference
有两种使用CLIJ2的方法:
1、点击直接执行
例如,在处理图像的过程中,高斯模糊3D是非常耗时的步骤:
处理->滤镜->高斯模糊3D:


您可以将此步骤放到GPU中进行处理
插件-> GPU上的ImageJ(CLIJ 2)->过滤器-> GPU上的高斯模糊3D


速度比较:


仅处理图片,再加上将数据传入和传出GPU所花费的时间,GPU仍然比CPU快3倍。
如果要处理多张图像,它将节省更多时间。
Macro Recorder可以记录这种直接点击:
// gaussian blur
image = "t1-head.tif";
Ext.CLIJ2_push(image);
blurred = "gaussian_blur-1745963302";
sigma_x = 2.0;
sigma_y = 2.0;
sigma_z = 2.0;
Ext.CLIJ2_gaussianBlur3D(image, blurred, sigma_x, sigma_y, sigma_z);
Ext.CLIJ2_pull(blurred);Treasure Chen:ImageJ实用技巧-宏记录器(徒手操作)

2、使用宏调用
官方网站提供了宏代码来测试插件安装是否成功。建议运行:
/clij/clij2-docs/blob/master/src/main/macro/benchmarking.ijm
使用宏调用GPU需要三个步骤:
([1) GPU初始化
run("CLIJ2 Macro Extensions", "cl_device=");
Ext.CLIJ2_clear();
此步骤是调用GPU的必要步骤。默认情况下,将选择一个GPU,同时清除GPU中的内存。
([2)将图像导入(推送)GPU内存
input = getTitle();
Ext.CLIJ2_push(input);([3)调用GPU处理命令
这部分编写主要的图像处理代码,这里以高斯模糊3D为例:
Ext.CLIJ2_gaussianBlur3D(input, output, 2, 2, 2);([4)从GPU导出图像(拉动)
Ext.CLIJ2_pull(output);只有从GPU提取处理过的图像后,才能显示该图像。
最后,提供了一个完整的演示来展示调用GPU的整个过程:
// import sample data
run("T1 Head (2.4M, 16-bits)");
input = getTitle();
//Initialization of the GPU
run("CLIJ2 Macro Extensions", "cl_device=");
Ext.CLIJ2_clear();
//Main process
time = getTime();
Ext.CLIJ2_push(input);
Ext.CLIJ2_gaussianBlur3D(input, output, 2, 2, 2);
Ext.CLIJ2_pull(output);
print("CLIJ2 GPU Gaussian blur 3D took " + (getTime() - time) + " msec");
//GPU properties
Ext.CLIJ2_getGPUProperties(gpu, memory, opencl_version);
print("GPU: " + gpu);
print("Memory in GB: " + (memory / 1024 / 1024 / 1024) );
print("OpenCL version: " + opencl_version);
// Clear in the end
Ext.CLIJ2_clear();宏调用,强烈建议下载此备忘单,您可以清楚地了解CLIJ2支持的命令和输出:
clij.github.io/clij2-docs/CLIJ2-cheatsheet_V 3. pdf
参考文献:
[1]。 Haase,R.,Royer,L.A.,Steinbach,P.et al。 CLIJ:每个人都可以使用GPU加速图像处理。自然方法17,5–6(202 0)。
如果对ImageJ的使用有任何疑问,可以发送电子邮件以获取指导:
陈宝:ImageJ指导说明

更多的教程可以关注我的专栏文章:
ImageJ实用教程

ImageJ开发教程

希望对大家有帮助〜
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-378320-1.html
向美囯佬开炮
狭路相逢勇者胜