Jeffrey Cross
Jeffrey Cross

使用Science Software ImageJ转换您的照片和视频

编者注:这是对Bob于2011年7月第27卷“Make”杂志撰写的文章的2018年更新

ImageJ是一个可自由使用的程序,用于处理图像和视频。它是由科学家为显微镜制作的图像制作的,但任何人都可以使用。任何人都可以自由地为程序添加新功能。因此,它通过其用户中更精通编程的贡献而不断改进。从这个意义上说,ImageJ是图像和视频的绝佳资源,就像开源浏览器Firefox用于网页浏览一样,或者实际上维基百科用于信息:每个都可以在任何计算机上运行,​​任何人都可以使它们更好。但ImageJ在科学之外尚不为人所知。

作为一名科学家和创造性修补的粉丝,我认为如果将Make读者介绍给ImageJ可以执行的一些技巧,那么看看会有什么结果会很有趣。如果您在数码相机或网络摄像头上制作了一些图像或短视频,您可以按照大约20分钟内的示例进行转换。

ImageJ来自哪里

ImageJ是由美国国立卫生研究院的一名员工Wayne Rasband为生物医学研究人员编写的。它是基于Java的,因此适用于PC,Mac和Linux计算机。 Rasband设计了具有开放架构的ImageJ:任何人都可以编写插件来为程序添加新的技巧。

ImageJ于1997年首次发布,在古老的谷歌之前的计算机时代。这种开放式架构使其成为一种越来越有价值的科学工具,而不是多年来失去知名度。我很想知道Rasband是否预见到1997年开放架构的潜力,所以我给他发了电子邮件。 “我总是喜欢看到其他人使用我写的软件”,Rasband写道,“我总是免费提供源代码。我发现如果我创建了易于扩展的软件,并且我放弃了源代码,那么我将从用户社区获得代码贡献。“

它能做什么

ImageJ对于使用类似于Photoshop等程序中的滤镜处理图像非常有用。有数百个可用的插件,有数百种技巧可供尝试。我最喜欢的技巧是可以通过在单个图像上显示来自视频的动作来转换您制作的视频。我也喜欢使用ImageJ对图像进行数学运算 - 例如,通过简单地添加像素强度来组合两个图像。

开始吧

您将首先下载ImageJ应用程序并添加几个有用的插件:

  1. 下载ImageJ首先从斐济站点下载ImageJ。斐济只是ImageJ的一个版本,其中包含一组插件并具有自动更新功能,因此您的ImageJ副本将保持最新的有用更改。如果您使用的是Mac,请将斐济放入“应用程序”文件夹中。
  2. 添加一些额外的插件你可以添加许多插件,包括Point Picker,Spectrum Extractor和Lipschitz Filter等令人眼花缭乱的名字。现在,我建议只添加一组有用的插件,其中一些你将使用在接下来几页的例子中。这个集合被称为“Cookbook”,可以使用这些说明轻松上传.Cookbook插件将显示在名为“Cookbook”的新下拉菜单(位于屏幕顶部)下。

请继续使用您自己的图片尝试以下示例

在接下来的几页中,我展示了我使用ImageJ制作的一些图像,以及每个图像的简短描述,以便您可以了解每个图像是如何制作的。

在每个示例下面的斜体字中,您可以为每个示例找到详细的,逐步的“点击内容”协议,以便您可以尝试使用自己的照片和视频执行类似的操作。您可能希望首先使用小图像和非常短的视频来尝试这些示例,并且可能使用灰度图像和视频(或在提示时将它们转换为灰度或8位RGB),因为文件越大,每个步骤的时间越长采取。

1.图像计算器

图像计算器工具可以使用简单的数学以各种方式组合图像,例如通过对每个像素的颜色进行加,减或平均。为了说明,在上面显示的图像中,雪花图像左下角的像素具有RGB中编码为12,6,10的颜色,这意味着它将红色设置为12,绿色设置为6,并且蓝色设置为10.这些数字超出255,0为暗,255为亮。因此,像素颜色为12,6,10 - 所有低数字的255 - 意味着它是一个非常暗的像素。林肯照片中相应位置的像素为70,54,42。平均这两个的结果?颜色为41,30,26的像素:恰好是两组数字之间的平均值。图像计算器以这种方式处理每个像素。

这可以是以可预测的方式组合图像的强大工具。如果您显示两张几乎相同的照片之间的差异,会发生什么?

您会在尝试使用图像计算器时看到,添加,减去和平均的几种方法只是组合图像的几种方法中的一小部分。

单击文件/打开并选择计算机上的图像,然后重复打开第二个图像。然后单击PROCESS / IMAGE CALCULATOR,选择每个图像名称,然后选择ADD,AVERAGE或DIFFERENCE等操作来组合图像。

2.投射堆栈

在这里,我在一场闪电风暴期间拍了一段短片。这闪电大约需要一秒钟才能穿过天空。在视频中,可以在视频的不同帧中看到闪光灯的不同部分(下图中顶部的10帧)。为了看整个闪光灯的样子,我将第1帧中的灯光添加到第2帧,第3帧等的灯光中。为此,我在ImageJ中打开视频并使用名为Z Project的工具制作单个图像。

在短暂的视频中,相机完全静止不动,坐在椅子上,而不是在我动手的手中。事实证明这很重要:图像在最终投影图像中很好地对齐,但如果相机移动则不会。

您将看到许多方法在FILE / IMPORT下打开不同格式的文件,但有一种更简单的方法:只需将它们拖放到工具图标行上即可打开大多数文件。但是,在打开视频文件之前,您可能希望使用视频编辑程序将视频剪裁为较短的长度。 ImageJ可以处理具有几百个图像的视频,但是在较长的视频中填充可能会使程序变慢或崩溃。当您打开视频时,您将获得将其转换为8位灰度或RGB的选项,并使用“虚拟堆栈”而不是将整个视频加载到内存中。做这些事情会使后续步骤更快。

不幸的是,iPhone以ImageJ无法使用的格式保存电影,因此您需要先使用Video 2 Photo iPhone应用程序或Quicktime Pro等工具将这些照片转换为单张照片的序列。然后,您可以通过单击FILE / IMPORT / IMAGE SEQUENCE打开您的照片文件夹。

在ImageJ中打开视频后,单击它以选择它。您可以使用<和>键滚动浏览它。然后单击IMAGE / STACKS / Z PROJECT并选择MAX INTENSITY将每帧中最亮的像素加到单个图像上。

这个例子顶部的蒙太奇也是用ImageJ工具制作的。再次单击您的视频,然后单击图像/堆栈/制作蒙太奇以制作蒙太奇。

3.投射具有黑暗主题的堆栈

该图像以与最后一个相似的方式制作,除了此处主体比背景更暗。这里用作视频源的视频取自静止的相机,当鸟儿飞过时指向天空。然后在ImageJ中投射了一段约30帧的短视频片段。

通过将视频拖动到ImageJ / Fiji工具栏上或使用FILE / IMPORT / IMAGE SEQUENCE打开图像序列来打开视频。然后单击视频窗口将其选中,单击IMAGE / STACKS / Z PROJECT并选择MIN INTENSITY(此时不是MAX)以添加每帧中最暗的像素。

4.突出显示移动的对象

我们制作了墨西哥跳豆移动的时间推移视频,然后试图突出移动豆子的路径。显示路径的几种方法如下图所示。右上角的图像显示了我们在前面的例子中使用的相同技巧。在左下方是相同的技巧,但选择“标准偏差”代替“最小强度”。这个技巧导致移动的物体长时间暂停,看起来最亮。使用图像计算器(如上面的示例1)组合所得到的图像也可以产生有趣的效果。

下面,我将介绍如何简单地从每个帧中减去前一帧中的所有内容,以便不随时间变化的像素显示为黑色,而随时间变化的像素显示为较浅的色调(右下图像) 。

关闭您在斐济开设的所有窗户。然后通过将视频拖动到ImageJ / Fiji工具栏上或使用FILE / IMPORT / IMAGE SEQUENCE打开图像序列来打开视频。当弹出“转换为8位灰度”选项时,单击该框即可接受此选项。我建议这次不要选择虚拟堆栈选项。然后单击视频将其选中,并通过单击COOKBOOK / T-FUNCTIONS / DELTA F UP制作第二个仅显示移动对象的视频(“Cookbook”是您按照中的说明安装到斐济的插件集。 “开始使用”部分)。

5.颜色编码时间

我和我的孩子们制作了一张延时的电影,上面的星星从黄昏到黎明经过我们的院子。 (为了制作这部电影,我们使用佳能傻瓜相机拍摄了开源CHDK软件进行长时间曝光延时录制。使用智能手机时,NightCap iPhone应用也可以。)然后我们使用ImageJ制作仅有移动物体的黑白胶片。然后电影用颜色进行时间编码。最后,所有彩色帧都在彼此之上投影到单个图像上。颜色等于最终图像中的时间:紫色在日落之后,橙色/黄色在日出之前。例如,云在日出之前出现,所以它们看起来是橙色的。星星整夜都在进行,所以它们有多种颜色。

这个例子使用了多个插件,但在ImageJ中只需要点击几下。通过将视频拖动到ImageJ / Fiji工具栏上或使用FILE / IMPORT / IMAGE SEQUENCE打开图像序列来打开视频。当弹出“转换为8位灰度”选项时,单击该框即可接受此选项。然后单击视频将其选中,并通过单击COOKBOOK / T-FUNCTIONS / DELTA F UP制作第二个视频,仅显示移动的对象。然后,要为颜色代码时间,请单击COOKBOOK / Z-FUNCTIONS / Z CODE STACK。您可以从多种配色方案中进行选择。现在单击IMAGE / STACKS / Z PROJECT ...并选择MAX INTENSITY以添加每帧中最亮的像素。

6. Kymographs

我的儿子和我在我们的房子里找到了一个知更鸟的巢,我们很着迷看到了。所以我们设置了一个网络摄像头并观看了它。有一天,我们进行了全天延时录音。母亲整天坐在鸡蛋上,定期离开食物。我们很好奇她的出行时间是否有任何模式,所以我们制作了一个kymograph - 一张显示特定位置的图表。在这里,选择的位置是在一条穿过鸡蛋的细线下面。

在底部的kymograph中,时间沿着顶部标记,从左边的早晨到右边的晚上。当在垂直条纹中可以看到蓝色的蛋时,母鸟已经离开了巢穴。我们在网上看到,知更鸟一次不会超过10-15分钟,但看起来好像她在中午11点40分左右吃了很长时间的午餐。它在晚上7点之前变暗了。

通过将视频拖动到ImageJ / Fiji工具栏上或使用FILE / IMPORT / IMAGE SEQUENCE打开图像序列来打开视频。然后从工具图标行中选择直线工具,并单击并拖动以在视频中感兴趣的区域上绘制线条。单击IMAGE / STACKS / RESLICE以查看该行下的情况。如果您想要采样的不仅仅是细线,那么不要使用直线工具,而是从工具图标行中选择矩形工具,然后单击并拖动以在视频中感兴趣的区域上绘制矩形。单击IMAGE / STACKS / RESLICE,然后单击IMAGE / STACK / Z-PROJECT。您的kymograph将垂直显示,时间从上到下。

7.将你的像素从ImageJ中取出并按照自己的数学处理

您可以从图像中提取像素值,并尝试使用Microsoft Excel等电子表格程序自行转换它们。有趣的是,可以通过这种方式突出显示局部对比度等功能。为了说明这一点,我使用了下面(A)的橡子的50×50像素图像,使用Excel中的简单公式生成原始图像的多个版本。 B是A的灰度版本。在C中,通过将每个像素的值与其邻居的值进行平均来模糊图像。在D中,在将每个像素的值与其邻居进行比较之后突出显示高对比度的区域。在E中,仅显示高对比度区域。在F中,每个区域的对比度被转换为连续灰度。在G中,使用ImageJ中的查找表将F中的灰度转换为颜色。

我建议您在一个约50×50像素的小图像上尝试此操作,因为下面的某些步骤在Excel或其他电子表格程序中的较大图像上的工作速度非常慢。然后单击图像/类型/ 8_BIT将图像转换为灰度。然后使用FILE / SAVE AS / TEXT IMAGE保存图像。这将生成一个文本文件,然后您可以使用Microsoft Excel等电子表格程序打开该文件。

在电子表格中,您将看到一个数字数组,每个数字代表图像灰度版本中单个像素的像素值。我在下面的例子中使用了橡子(A)的50×50像素图像。我如上所述在Excel中打开它,尝试了一些改变数字数组的东西,然后看看新数字会产生什么图像,我将这些单元格复制回文本编辑器(我使用TextWrangler for Mac,但加载其他人可用)。我用文件名后跟.txt保存了该文件,并通过单击FILE / IMPORT / TEXT IMAGE在ImageJ中打开该文件。得到了橡子的灰度图像(B)。然后我回到Excel文件,尝试使用这组数字。此处提供了包含C-F中每个转换的Excel文件。如果您想为灰度图像着色,可以在ImageJ中打开它,然后单击图像/查找表并选择颜色方案。

图7:以几种不同方式转化的橡子的图像

尝试并享受一些乐趣

下载完该程序后,打开照片或导入您拍摄的视频并开始点击以查看各种按钮的功能会很有趣。对于那些喜欢更系统的开始的人,这里或这里有指南。

如果你想尝试更多的插件,这里有一大堆插件的链接。我特别喜欢的一个插件是“Running Z projector”。

要添加任何这些插件,请先将其下载到您的计算机上。如果您使用的是Mac并且它告诉您文件无法打开,因为它们来自未知的开发人员,您可以通过打开Mac的系统偏好设置,然后打开安全和隐私来绕过这个,你会看到一个“无论如何打开”按钮。然后打开Fiji,单击PLUGINS,然后单击安装...并选择您下载的文件。

自己贡献科学!

制造商和科学家都形成了创造性的社区,以及可能相互学习一两件事的社区。如果你可以编程,并且你看到一种有趣的方式来显示没有现有插件可以做的图像,那么为什么不写一个新的插件呢?已经存在数百个插件,但是每年都会出现很好的新插件,最好的插件可能还没有编写。以下是创建新插件的概述。

谁将利用您的插件,以及它可能有助于推动哪些科学发现?生物医学研究文章越来越多地在网上找到,所以在提交插件后的几个月到几年内,在线搜索插件的名称,以了解它如何为科学做出贡献。

分享

发表评论