欢迎!感谢您收看本期节目。今天我主要想介绍如何将图像整合到 JMP 的工作流程中。我将结合使用 JMP 和 JMP Pro 的功能进行演示,如果使用 JMP Pro 的功能,我会特别说明。说到将图像整合到 JMP 的工作流程,其实整个工作流程非常庞大,我们可以在工作流程的任何地方进行图像处理,从将图像用作数据源到将其用于分析,当然,最终将其整合到我们的输出中。
话虽如此,今天我想进行一些案例研究,但首先我想先简单介绍一下,并介绍一下我们将要讨论的内容。我将主要演示如何让 JMP 为我们创建图像,例如,如果我有来自其他来源的图像,如何将它们导入数据表。也许你需要从静态图像中提取信息,并将其导入到动态 JMP 报告中。我们将通过几个示例来实现这一点。同样,从静态图像到我可以实际操作的图像。
然后,我们会稍微转换一下思路,利用这些图像,比如拍摄某个物体的热图,并将其转换成曲线,以便在 JMP 的函数数据探索器中使用。我们还会利用图像构建温度模型。我们会做很多事情,甚至会利用该模型进行实时监控。
话虽如此,我还是要结束这个话题,我们直接开始吧。我觉得最好从案例研究的角度来讨论。这里面有一段故事。不要过度解读,因为大部分内容都是我编的。主要是为了叙述一个故事。
假设我们是 Casey Sparks,一位负责制造一台机器的电气工艺工程师,这台机器对于红三角部件工厂的部件制造流程至关重要。我们已经制造了这台机器的原型,但机器总是过热。我们已经能够追踪到机器上一块特定的内部电路板,内部电路板的意思是这块电路板是我们自己制造的。这太好了,因为这意味着我们可以对其进行修改。真的,公司需要这件事昨天就完成。它需要做好投入生产的准备。生产一直在努力满足这种新产品的需求,而这台机器真的会让每个人的工作都变得轻松得多。它会影响每个人的士气。当然,由于这种变通方法,加班预算受到了影响。
就我个人而言,这位名叫凯西 (Casey) 的人物是红三角 (Red Triangle) 的新成员,她希望有所作为。我们都希望在工作中有所作为。我们将使用图像来演示理解、解决问题以及验证我们是否已解决问题的过程。我们将一起完成理解过程。我们将一起进行实验过程,然后一起进行验证过程,基本上就是整个演示过程。
我们先从数据表开始。这种情况可能经常发生,比如你在做研究时,会画出一组图表。如果能把这些图表放到一个表格里,然后进行一些处理就太好了。这很简单,但它隐藏在“编辑”菜单中。
在 JMP 中,右键单击任意图像,然后转到“编辑”菜单,您会看到下面有一个选项,上面写着“制作如下图表表格”。这真的就完成了。现在,由于这份报告中有多个相同的图表,JMP 已经帮我制作好了这张表格,而且这些图表实际上是以全尺寸、全分辨率显示的。
在讨论这个问题的时候,我们可以开始对每个文件做一些笔记。Casey 发现了这四个潜在问题。她想做一些笔记,并将这个文件保存到她的项目文件夹中,这样以后别人研究这个问题的时候,就能看到这些笔记和图表。这真的太棒了。
再次强调,操作非常简单,只需右键单击图表,进入“编辑”菜单,然后创建一个像这样的图表表格即可。这是一个令人惊叹的功能。稍后我将向您展示如何非常快速地将您自己的图像导入数据表,速度大概就是这样。
也许我们可以稍微改变一下方向。我们已经有这张初始因素的图表了。这大概是Casey正在考虑尝试的四个潜在因素。她还找到了几张需要用来获取数据的图片。
这里稍微绕个弯。本期刊物中有一个链接,即将分享,指向 JMP 市场上一个名为“图像转表格”的扩展程序。坦白说,这个插件是我编写的,所以我认为它很棒。不过,您可以免费下载并安装到 JMP 中,然后就可以导入图像了。我这里有几个示例,我们将以第一个例子为例。
假设凯西发现……她梳理了公司之前的实验资料库,找到了一张10年前某人绘制的图表,上面用某个任意单位的功效对某个X因子进行了统计。这真的很酷。她对此非常兴奋,因为这能帮助她理解其中一个因子。但她很想得到一个估算值,看看它会不会持续上升?尤其是当X等于7时,她真正感兴趣的是这个。
除了画一条线,用某种统计学的严谨方法观察,她难道不能推断出 X 等于 7 吗?答案当然是肯定的。很简单。安装好这个插件后,你只需选择它,它就会问你,你的图片文件在哪里?我们把它指向那里。不好意思。
我们得到了一张图像的图片,下面还有一个小控制台。我只需要推送它,移除白色像素,你就会看到,我们导入的数据从原本需要的 27 万行变成了 5 万行。图像转成表格后,通常会变得很大。只要能节省时间,那就太好了。
不过,按下按钮后,你会得到一个数据表和几张图表。有时黑白图表效果更好,有时彩色图表效果更好。在这种情况下,我认为彩色图表效果更好。我们来看看导入的50000像素的数据表。我要把它移到这里,思考一下接下来需要做什么。为了推断出X等于7的位置,我们需要执行几个步骤。
首先要做的是重新校准 X 轴和 Y 轴。为此,我只需进行选择即可。因为这只是图形生成器,所以交互式选择非常容易。我已经选择了图形上的区域。我将点击重新校准 X 轴和 Y 轴。我选择的 X 轴范围从 0 到 5,Y 轴范围从 0 到 1。我只需要输入这些值即可。0 到 5,0 到 1。
我点击“确定”,然后它告诉我,嘿,我为你创建了这些新列。你可能想用一下。是的,我喜欢这个主意。每次我这样做,我都会惊叹它是多么简单,我多少次希望以前找到一张图片时就能有这个功能。现在这些比例尺对齐了。这真的非常非常酷。
不过,我下一步只需要保留中间这条蓝色轨迹,不需要其他颜色。因为我现在在 JMP 中已经有这些数据了,所以这很简单。我要打开“聚类”菜单,对于像这样的大型数据集,K 均值聚类非常快。
我真正需要做的就是告诉 JMP,我希望你对颜色进行聚类。我希望你把它分成几种颜色。现在我可以看一下图表,用手指数一下。我有黑色、两种灰色和蓝色。所以一共有四种颜色。我可能想在这里输入“4”。
不过,我发现,这是因为计算机在制作图像时会将颜色混合在一起。我发现,将可见的颜色数量翻倍,效果真的非常好。我点击了“go”。同样,这个功能很棒,而且具有交互性,我可以使用键盘上的向下箭头,直接浏览。
这不是簇 1。哦,我想点击一下就到了。这是簇 2。我可以继续。我要做的是,选择除簇 2 之外的所有内容,然后转到我的数据表并删除那些行。好了。现在我有了那条蓝色轨迹,而且它的单位正确。现在我可以很容易地用我校准的单位来拟合那条曲线。
我知道,因为它会上下波动……我要按住 Alt 键并点击它。我知道,随着它上下波动,它可能是双指数函数,但我不知道它是 4 还是 5。我可能应该记住这一点。它是一个双指数 5 参数,因为它位于最上面,所以我要消除它。
现在,我突然有了推断的能力。这是一个非常好的R平方,0.99。我可以看看那个刻画器。我可以看到我们在7的位置。我可以得到这个值。把图像中的信息导入JMP真的非常非常容易。让我先整理一下,然后再举一个例子。我来做一下。
Casey 能推断出 X 等于 7 的情况吗?是的,很容易。只需几个步骤。这是 Casey 找到的另一张图。我们假设它来自学术期刊,你会看到这是两个不同的组,但它只是一个图,或者我不应该说是图,它只是一个图的图像。
她真正想做的可能是为黄点和绿点分别绘制一条拟合线,两条不同的拟合线。她没有数据,这只是从网上找的。她能为每组分别绘制一条拟合线吗?当然可以。我们将再次使用这个插件,并结合这张图到表。我们选择这张示例散点图。
顺便说一句,我忘了说了,如果你下载了这本日记,你就能访问所有文件。你按下那个按钮,它就会创建你需要的所有文件。
我们只需要像之前一样操作即可。首先,移除白色像素。点击“导入”按钮。导入完成后,我们像之前一样重新校准坐标轴,也就是选择已知边界的区域。看起来,X 轴的范围是 50 到 70,Y 轴的范围是 60 到 180。点击“重新校准”,然后从 50 到 70,再从 60 到 180。点击“确定”。现在我有了这些新的坐标轴。太棒了。
接下来,我要根据颜色对这些数据点进行分类。同样,在“图形生成器”中,我只需选择对我来说重要的内容。然后,我会到这里,说“我想进行一些颜色校准”。这里有几个选项。这是一个分类图例,可以是文本或字符。
我要按下这个按钮,JMP 会……我可能应该把那个数据表弄出来。好了。它高亮了这些绿色的。它让我输入与它们相关的文本。这是 A。接下来是 B。它往往会找到一些额外的颜色,就像我们提到的,计算机会进行混合。我会跳过出现的其他颜色。好了。背景中还有三种我们不太在意的额外颜色。
但这里有个很酷的功能。现在,如果我打开数据表,选择 A,它就是绿色;选择 B,它就是黄色/橙色。但也许更重要的是,这里还有所有其他的内容。因为我不关心其他内容,所以我可以删除它们。这样就只剩下图例的残留部分了,我可以删除它。
现在我已经把数据导入了。不过,我目前还没有找到一个单独的点。我有46个点。我担心如果用那条拟合线,可能不太准确,因为每个数据组的点数都不一样。我觉得我们还没准备好。或许我应该做的是找到每个点的中心点。我们将使用和之前一样的工具,K均值聚类。
我不会根据颜色进行聚类(颜色我已经有了,没错),而是根据 X 和 Y 组进行聚类。基本上,我告诉 JMP,我希望你创建一些聚类。现在,我们面临这个问题。有多少个聚类?我不知道。看起来在 30 到 40 个之间。我可以数一下,但如果我直接输入这个范围的聚类,JMP 会告诉我,显然是 38 个聚类。我更喜欢这样,比手动计算好多了。
我要回到38号这里再确认一下。我想把颜色保存到表格里。这会改变“图形生成器”里的颜色。只要我没有看到某个数据点被直接切成两半,我就知道我得到的数值是正确的。我可以把这些簇保存到表格里了。现在我的数据表基本上包含了我需要做的一切。它包含了簇和标签。
我可以很快地总结一下,比如说,我想知道每个聚类属于哪个组,然后我想知道 X 和 Y 的中点或平均值。如果我把这些做成数据表,然后把它拉进图形生成器,最终就能回答这个问题了。最后,也就是说,这总共花了我们大约 2 分钟。太酷了。
现在我可以查找这个,然后求出那个方程。回到我们最初的问题,Casey 能计算出每组的拟合线吗?她完全可以。我们可以很容易地从图像中获取信息。我们可以处理这些信息,并且可以使用 JMP 工具来处理。这真的非常非常酷。对我来说,它能做到这么多,真是令人印象深刻。
清理一下这里,然后我们进入下一个阶段,也就是……在背景信息中,Casey 运用所有这些信息缩小了实验的几个因素范围。我们再次尝试降低某个组件的温度。她将范围缩小到几个因素,并制作了这些测试板,一共有 20 个。
然后,她对每块电路板进行了20分钟的压力测试,但输出结果并不是一个数字。输出的是一张热图像,大概像这样。有没有办法利用这张图像来降低电路板的总温度?也许不仅仅是最热点的温度,而是电路板的总温度?当然,答案是肯定的。我们已经做过类似的测试了,用图像来做表格,所以我在这里走个捷径。
基本上,我们需要对她测试的每一张图像的数据进行一些处理。你可能看不太清楚,但这里有一个浅灰色的小边框。如果我选中它,然后删除它,再选择最热点,也就是这里,然后我选择与最热点相同的 Y 轴,并删除其他点,这样我就可以将这里的 Y 轴从仅显示一条轨迹改为显示温度本身,这样我就可以使用它了。
这看起来可能很复杂,但我也创建了一个工作流程来做这件事。这只是我记录了自己在JMP中操作的过程。我确实稍微作弊了一下,写了一个小脚本,但那只是为了选择。工作流程会问我,嘿,这是第几个运行号?它会保存那个数据表。
生活真美好。用 20 张图片做这件事没什么大不了的。如果你真的不想重复 20 次同样的工作流程,你也可以写个脚本来做。我不会给你演示,但如果你好奇的话,我也附上了。这个过程可以照着做。Casey 可以用这个过程来测量……我们来看看每个 X 位置分别运行一次。
你可以看到,每次运行的实验设计 (DOE) 都被重复了好几次。现在,我们创建了这个包含 20 次运行的实验设计 (DOE),并将图像信息整合到其中。这意味着我们可以使用函数数据探索器 (Functional Data Explorer)。顺便说一下,函数数据探索器是 JMP Pro 的一项功能,但我们可以将其用于所有这些迹线。抱歉,我跳过了一步。这个数据表可能更直观一些。
我拥有所有这些运行数据和所有测试板的所有迹线,以及一个运行零点,这是理想值。我可以告诉 JMP Pro 中的函数数据浏览器:“嘿,这是我所有的迹线。我有一个目标。你能优化这个目标吗?”它会告诉我需要将因子设置到哪里才能实现目标。我还可以进行实验,看看温度迹线会发生什么变化。
能够从电路板及其温度的图像,到 DOE 设置和因子设置,从而最大限度地降低整个表面的整体温度,而不是仅仅改善一个数据点,而这可能会以牺牲其他数据点为代价,这真是太酷了。这真的太酷了。
Casey 完成了那个实验,并制作出了她理想的最佳点电路板,准备将最终的机器投入生产。但她希望对其进行监控,因为运行 DOE 并找到最佳点是一回事,而将这个最佳点投入生产并进行验证,确保其性能良好则是另一回事。
问题在于,测试设备配备了校准过的温度传感器和热像仪。她可以同时使用这两个设备,但生产设备只有一台热像仪,而且这台热像仪已经安装好了,所以她不想更换任何温度传感器。她仍然想知道最高温度是多少。
有几个问题。她能用图片当温度计吗?或许可以更进一步,如果温度过高,她能收到通知吗?我不知道。如果她想知道温度是多少,她能在手机上查看吗?我们先从用这些图片当温度计开始吧。同样,如果你按下那个按钮,它也会为你创建这个文件夹。
通过所有这些 DOE 文件(包括图像),您会发现这里的第 1 次运行比第 2 次运行稍微亮一些,因此温度也稍微高一些。我想要做的是将所有这些图像快速导入 JMP,并用它们创建一个数据集。这非常简单。就在文件“导入多个文件”中。就在那里。我只需要告诉 JMP 在哪里执行此操作。当然,它会记住我上次使用的时间,所以它已经在那里了。
我要按扩展名选择文件,我有一些 PNG 文件,因为我不想导入 JMP 文件,只想导入图片。如果我点击“添加文件名”列,JMP 会自动提示:“哦,你有很多图片?我知道怎么处理。我只需要把它们放到数据表中就可以了。”
我不需要复制粘贴任何东西。基本上,只需点击三下就能搞定。这真的很酷。图像可以直接使用。稍微重新编码一下,我就能把文件名简化成运行编号。
为了便于案例研究,我们假设Casey做了这项工作。她获得了运行次数和实际最高温度,因为她的机器配备了传感器和热像仪。她将用这些来测试,并建立一个模型,看看能否根据图像预测温度。这需要一些计算量。这也是JMP Pro的一项功能。它是JMP Pro的一个插件,但本质上,它是一种使用图像并利用这些图像创建模型的方法。这真的很酷。
在本例中,我们有一个模型正在预测……它对模型中保留的数据的 R 平方约为 0.8。Casey 继续使用该模型并为其生成 Python 代码,然后获取该 Python 代码。当然,我认为她需要在生产机器上安装几个模块。获取这个 Python 代码并将其安装到生产机器上。
然后,生产机器可以使用在 JMP 中创建的模型,但它将使用其 Python 版本。她不必在世界上的每台机器上都安装 JMP。她只需使用 JMP 创建模型,然后机器就可以运行该模型。真的非常酷。她还编写了一些代码,将其输出到数据库,然后使用 JMP Live 自动刷新并查看温度的变化。
她订阅了所有警告。如果温度失控,她会立即知道,或者她也可以在手机上查看。我想我应该展示一下在手机上显示的效果。她可以在手机上看到。是的,一切都很好。问题的答案是,如果温度过高,她能收到通知吗?她能用手机查看温度吗?是的,是的,是的。我认为最酷的是,她使用数据表中的图像创建了一个温度模型,而且这个模型的预测效果非常非常好。
回想一下,我们今天做了什么?嗯,我们从 JMP 获取了一些图像。不好意思。我们用 JMP 生成了一些图像。我们将图像导入表格。我们将其中包含的信息、图表或图像导入 JMP,然后我们就可以对其进行处理和使用。
然后,我们能够利用这些知识进行实验,利用从图像中推断出的曲线,并将图像本身作为构建模型的因素。感谢收看。非常期待看到我们接下来可以用图像做什么。谢谢。