安迪,MathWorks公司
相机到处都是,甚至在你的手机上。也许你有在工程和科学应用使用相机新的想法,但不知道从哪里开始。虽然图像处理似乎是一个黑色的艺术,有几个关键的工作流程,以学习,将让你开始。
在这个研讨会,我们使用MATLAB探索图像处理的基本知识。通过几个例子中,我们会检讨典型的工作流程:
不需要MATLAB的以前的知识。
关于主讲人:安迪在”持有学士学位来自佐治亚理工学院和学士学位电气工程在企业从肯尼索州立大学。在加入MathWorks公司之前,安迪花了12年的现场应用工程师专注于德州仪器嵌入式处理器,以及3年的产品营销经理的IntervalZero实时软件。
记录:二○一四年十月一十五日
大家好,欢迎来到图像处理制作简易网络研讨会。我叫Andy The,是MathWorks的技术营销经理。图像和视频处理是一个非常流行的领域,你可以看到它被集成到许多不同的应用领域——从医学到机器人技术、汽车、机器视觉。这样的例子数不胜数。
不幸的是,这一切整合而来的,是很多挑战。很多人是新的图像处理,因此,我们得到了很多的问题,比如:如何处理所有这些不同的文件格式?如何创建和实际测试我的算法?如何想象,也许找到问题的原因是什么?然后终于,我该如何处理大量的图像和加快我的算法的执行?
因此,在这个研讨会,我们将在第一四个主题你看到这里走了过来。因此,此次研讨会的目的,真的,我们希望你装备一些常见的策略,你可以应用到非常典型的图像和视频处理工作流程。有了这样的,如果你看到下面这张图片,你认为这只是一些简单的玩具和一些糖果。我们要在这里使用整个我们的很多例子这一形象。我会大概有三个不同的主要例子来引导您完成。
但是使用这个简单的图像,我们将使用多种处理技术。并通过它的结束,你就可以看到,在右手边,我们怎么可以大大简化图像,真正段,并能够做到的,也许,一些统计分析,得到一些细节出来的图片。
所以今天的日程安排是我们要花一些时间来复习一个介绍。我们会讲到图像增强。我们会做一些图像分割。然后我们会做图像配准,然后我们会做一个简短的总结。让我们来看看一个典型的图像和视频处理工作流。
当然,在开始的时候,你会想要获取的数据。这就是我们所说的访问。因此,这可以进来的文件的形式,如JPEG图像。能进来从其它软件输出的形式。,当然,从硬件,如照相机。所以这是很常见的,如果您希望处理那些在飞行中捕获实时图像和视频。
一旦你获得你的数据,当然,你会想探索它,也做了一些探索,找出你需要做的创建算法是什么。所以很多的时间将是在这里度过的,实际上,使您的应用程序和算法。最后,你要分享。
因此,您将以文档的形式与同事共享。也许这是他们将要消费的一种图书馆形式。它可以用于第三方软件,你可能会使用这些软件来设计一个最终产品,例如,摄像机,或者一些汽车视觉应用程序。
所以,虽然我展示了一个单一的流线型路径,但现实是,这是一个真正的迭代路径。所以,一旦你获得的数据,你可能会开发的算法,然后你要回来,并获得更多一些,增加你的数据集,真正巩固和验证算法。
一旦发达,你要分享,当然,得到的反馈。你可能打算来上回和迭代优化您的应用程序。因此,这确实需要实现自动化。有了MATLAB,你会发现,MATLAB不仅是语言,但它也是一种脚本语言,所以你就可以自动完成整个过程。
我们将使用整个除了MATLAB所有的这些示威活动是什么图像处理工具箱。所以有很多的功能。有在您的处置200的功能。但在较高的水平,你就可以做的事情一样显示和探索的图像。我们会做一些增强,一些图像分析,形态学算-这是基于形状基于形状的处理,或过滤的图像配准,几何变换,并且基于区域的处理。
在这些演示中,以及我们在这个网络研讨会上要做的,我们会涵盖很多用蓝色标出的主题。这就引出了我们的第一个话题。什么是图像增强?简单地说,这就是调整图像的过程,使结果不仅更适合显示,而且更适合进一步处理。正如你看到下面的摄像师图像,你可以做一些事情,比如深度模糊,或者你可以做一些过滤,也就是预处理。这可以是您进行更多增强处理或更高级处理的初步步骤。
这样把我们带到我们的第一个示范,我们实际上是要采取陆地卫星图像。因此,这是巴黎的卫星图像。而你在左边看到有肯定这里的一些问题。我们看到很多紫色的,而不是大量的对比。在右边的是我们想开车朝。
因此我们的目标,真的,是导入该地图巴黎。我们要纠正穷人对比度和色彩平衡,使图像,希望有更多可用。因此,这里的MATLAB。而刚所以它不是压倒性的,我只打算支付MATLAB的方面,或功能,如我遇到他们。因此,让我们继续前进。在我进入图像增强示范,我只是要告诉你一些基本的功能。
这里,我们有玩具和糖果的图像。它是一个JPEG文件。我可以将它导入到环境中,就像简单的I = imread,然后这个模型就完成了。你会看到我创建了这个变量I,我导入了图像。你可以看到,它在工作区里面。这就是所有变量的存储位置。
你会看到它是一个2400乘2800像素的图像,有三层。有三个图层的原因是有一个红,一个蓝,一个绿的图层,三种颜色。我们可以看看这张图,来验证一下。如果我们点击它,你可以去绘图,这是你可以使用的不同的绘图工具。
因此,我们可以简单地做一个IM表演。而在这里,我们有图像。因此,这里有玩具,还有糖果。您也可以在输入了什么命令行看到。所以,如果你喜欢在一个命令行操作的事情,你有这样的选择也是如此。
另一个工具,让我关闭这个窗口,使用IM工具函数。使用相同的变量,我点击IM工具。你会看到,它在IM工具中输入了变量i,它看起来像一个类似的窗口,除了这是一个在图像处理工具箱中的不错的应用程序。
什么是让你访问是一样的东西,比方说我们要测量距离。因此,我可以点击这个标尺,我可以简单地连接并绘制这些距离线。因此,约700个像素长,那车,约266个七个像素宽说的。有多大,这些块糖?因此,这类型的像素信息和测量是非常有帮助的,后来我们就玩一点点这个,因为我们做了一些,也许,基于形状的处理。所以只是一种给你的东西,我们会在后面做一个小小的伏笔。
你还可以做一些更详细的分析。这是检查像素值的按钮。如果我点击它,你会看到,让我把它移开,这个小准星出现了。这是十字瞄准的放大图。我们可以在这个十六进制的小虫子上看到像素值,这显示的是RGB值,也就是强度值。
所以我要继续前进并放大这里,所以你可以看到,或多或少,这是怎么回事。你会看到,我围绕这些十字拖,我可以检查在十字丝照准的像素。所以在这里,你可以看到RGB值都非常低,因为这一块糖果的接近,实质上,黑色。
所以当你移动到桌面,这里更接近白色。这就是为什么RGB值要高得多。然后十六进制的虫子是蓝绿色的。这里是那个颜色的RGB值。再一次,这是一种很好的方式来探索图像并给你一些你以后可能想要处理的策略基于一些基于形状的处理,你可以看到这里的颜色。我们也会做一些基于颜色的处理。
所以,如果我们去我们的第一个,这是一个例子,你会发现其实里面的产品。而实际上我们在这里处理的是多光谱数据。所以这是一个陆地卫星图像。如果我向下滚动一点点,你会看到我是如何会阅读的想象,因为这是多波段数据,我们要使用的功能,而不是imread,称为多带读。
并拉起帮助任何东西,你可能里面MATLAB的希望,你可以打F1,并且简单地说,它会弹出帮助窗口。你可以看到这是从二进制文件中读取带状联盟间的数据。所以在这里,它会告诉你不同的参数,描述,展示你在这里不同的乐队,一个漂亮的图形。然后这里是语法和告诉你什么是不同的参数,甚至给你一个例子。所以很多不同的方式来获得帮助。一个是刚刚通过点击F1。当然,你可以点击里面的文档,或在这里搜索栏为好。好的。
但让我们继续运行这段代码。我们就在这里。我要运行,这里我们说,在下一层之前运行。这里是Advance按钮。这也是MATLAB很好的地方,我可以运行所谓的代码段。所以每次你看到这些双百分号,那表示另一个部分。一个百分号是评论。MATLAB的优点在于,你可以在不同的部分中随意地运行代码。
我们现在在这个区域内。我将继续运行,继续下一个。这是地球资源卫星的影像。这是我们之前展示的图像。这不是一个很好的形象。所有东西看起来都是紫色的。这很难处理。让我们来关闭它,让我们试着分析一下图像的情况。
我将使用一个iamhist函数。我把它打开它会给我图像数据的直方图。让我们运行这个部分,advance。然后我们会看到,这告诉我们问题是从哪里来的。我们看到,所有的数据都聚集在一起,大约50个。这是红色的带子。这让我们的对比很差。
为了更详细地看数据,我们还会做一些别的事情。我们将运行一个散点图。这就是红蓝绿三色的三维图。这是所有的数据点。你可以看到,这并不难。这也意味着要找出问题所在。在这三个平面中,我们看到所有的东西都聚集在这条线上。再一次,也不是很好。你可能想看看,这里的分布,得到一些更动态的范围,看到不同的颜色。
让我们来看看如何修正它。如果我们往下滚动,这就是我们要做的,所谓的对比度拉伸的地方。这使用了函数调用imadjust,或图像调整。你会看到,按F1,我要调整颜色贴图的强度值。
你只需要把它传过来,然后向下滚动。这是另一个例子。我要传入true颜色,然后你会看到我要做一个拉伸限制器。你会看到这个函数的拉伸极限是什么。它发现图像的对比度拉伸的限制。
因此,我们要继续前进,并通过在和我们要运行它。你可以看到,即时,我们有一个更加美好的形象。我们竟有些阴影尽可能甚至暗,暗绿色,一路的白色色调一些。因此,这是一个相当不错的图像。因此,我们可以种其实做一些这方面的处理。我们真的可以使用它。
但是,我们甚至可以远一点采取这样的。如果你看看,虽然有一些很好的对比,还有,至于颜色,都相当静音。让我们看看我们是否能够真正使色彩多了几分动感。因此,这是向前迈出的只是使用对比度拉伸了一大步。让我们继续前进,并检查为什么这实际工作柱状图。所以你在这里看到,之前,请记住,一切都被集中在一个窄带约为50现在,我们看到了直方图是相当均匀分布,并且这就是为什么我们能够看到这么多的细节。
因此,要进一步走一步,也许固定的颜色,我们要做些什么,什么叫做去相关拉伸。所以这是要加强整个高度相关渠道分色。记得早些时候,散点图,一切都在一行带状,或相关的,紧实。
所以用这个去相关拉伸就在这里,让我们继续并运行此,去色的下一部分 - 你看,再一次,我们不仅有对比度差的一个很好的一点,现在我们有一个漂亮的动态范围,一切从这些漂亮的动态果岭蓝色到红色的色调。因此,我们有更多的实实在在的数据,我们可以应对。真的,你可以使用图片作为是或继续向下的路径,并做一些更多的图像处理。
让我们从绘图的角度最后看一下这些数据。看这里,这是散点图。你可以立刻看到,我们有一个很好的颜色分布,这就是为什么我们有这样一个动态图像。
所以刚才总结我们的图像增强例子,你看到我们能够想象,不仅图像,但我们能够在直方图和散点图寻找帮助分析图像中的问题。再此基础上,我们能够做一些性能增强,像对比度拉伸,以及去相关拉伸。因此,我们本质上,从这个说明这里不良形象,是全紫与丰富的色彩深浅,以及正确的对比这个漂亮的动态图像的举动。
这就引出了下一个话题。我们将要讨论,什么是图像分割?图像分割就是将图像分割成多个部分的过程。通常,这是前景也是背景。这个过程通常用于帮助识别和隔离对象,以便您可以使用其他函数从图像中提取有意义的信息。
所以在这里下面,你在这里看到密密麻麻的图像。而我们使用分水岭分割基本上分离,并开始在此创造的形象在这里计数的一些对象。你可以看到,我们分割它,我们有一个很好的二进制图像在这里,我们实际上可以做分析,以甚至这里算多少钱根据大小。
因此,让我们继续前进,进入示范这里。所以,我们要对付我们的玩具汽车和糖果和十六进制的错误形象。而且我们要段和图像分析。我们打算把它变成这个二进制映像这里的一切,我们关心的,然后我们会从中提取一些统计信息。
我们将继续并打开我之前编写的脚本。这里,你可以看到我做的和你之前看到的一样。我要读玩具和糖果的形象。好吧。停靠一下,这样更容易看。我要最小化这个工具条,让这里有更多空间。
所以,我现在要做的下一件事就是我打算将其转换为灰度。因此,让我们继续前进,并将其转换。而你看到这里,我删除了所有的颜色。如果我在我的工作区看过来,你可以看到我从三个层移动到一个。所以我没有红,蓝,绿层了,只是刚刚单一强度为每个像素的灰度图像。
然后我会做的最后一件事是im2bw功能。所以这是一个阈值函数。因此,这是可能的分割的最简单的形式之一,但它也相当强大。如果我们看一下这个function--,让我们继续前进,去我们的文档,im2bw。我会做这种方式。
我就在这里,在帮助的范围内。如果我看一下这个函数,你可以看到它将灰度图像转换成二值图像并使用了一个电平。所以这个水平值,实际上,设置了临界值。它在0和1之间。不管截线在哪,截线以上的都是白色的,值都是1,截线以下的都是0。这就是形成二值图像的原因。
而且,在我走之前,我就告诉你这里,如果你到文档这种方式,这是导航尽可能为您可能关心的功能的另一个伟大的方式;例如,图像增强。我们在这里,对比度调节。这些都是我们处理与早期的功能。如此反复,而只是另一种方式去帮助,并得到一些实际的指导,只要你实际上可以做。
因此,让我们继续前进,做到这一点。所以我要开始设置这个级别的数值为0.5。我只是在中间点。而我们要做的im2bw创造这一宝贵ithresh。因此,让我们继续前进,并运行此部分。所以,我只是打控制输入,只需运行该部分。
你可以看到,让我继续前进,这个失败了,在这里,我们有我们的原始图像。在这里,我们有我们的阈值图像。所以我们做了很好的工作,你可以看到,也可以放到4.5的水平。我们有一些糖果,其中一些相当不错分割。我们有车。然后,他们中的一些,你可以看到,我们开始失去它。因此,这些较浅的颜色没有门槛为好。我们没有选择正确的值。但至少我们得到的边缘。
但是有一个问题。你可以看到糖果。他们中的大多数分割,除了你看到这些黄色的。你可能已经猜到这是为什么,那是因为汽车,以及这些糖果的,黄色的非常接近,这里的桌面。所以当你有非常接近这样的颜色,阈值可能有点挑战和棘手。当你有高层次的对比,基本阈值是非常简单的事情。但同样,当你有一个接近的颜色,这可能只由几个不同强度等级不同而不同。所以这就是它可以是非常具有挑战性的。
让我们进一步思考一下。在此之前,我们还可以进行实验。看看这个水平值。我们可以右键单击它,然后说,increment value和run section。这里有一个小窗口弹出。我可以说,我要把它加0。1,所以是十分位。然后我们来增加它。
你可以看到,当我点击它,你看到正在发生的变化。现在我让一些更黑在这里。你可以看到,这个问题是我得到了很多更多的噪音。然而,有些事情被分割得很好。但我还是不能让这些黄色的块糖展现出来更好。所以肯定有一些问题。但好处是我可以迭代很快,看看什么是工作,什么不是。所以你看0.6还不错,但是,它仍然是不够好。我还是不能让这些黄色的块糖。
这实际上给我们带来了一个问题。我们真的需要,也许退一步,并尝试也许想想,有没有关于这个图像的任何独特的属性或特征,也许我们可以利用我们的优势?所以,如果你看它,都有些什么东西,你跳出来?
所以一个,当然,该物体的大小。我们已经得到了汽车的质量相当大的比糖果。十六进制错误是一种在中间。所以,我们有大小,我们可以一起工作。我们还可以做基于形状的一些图像处理,对不对?我们已经与玩具车和十六进制的错误在这里得到了这些非常矩形物体,但糖果实际上是圆的。所以我们实际上可以打几分与基于形状的处理,可能与形态。
然后最后,还有一点我们可以看看是颜色。有相当多的被这里所代表的颜色。所以这是一个前处理技术,很多人忽视,但它实际上是相当有利的。因此,让我们用实际颜色开始。所以,如果我回来这里,我居然写了这个功能早了,这就是所谓的色彩空间点米
如果我打开这件事,让我继续前进,最小化,你可以看到我将刚才读我的糖果想象。但是,这是要做的事情就是我们要打印出色彩空间的每一个。请记住,我说,这是在这里三层。好了,我们要打印出的红色,绿色和蓝色。您可以看到,这里是我在做,以及该地块。
我们来运行这个部分。你可以更容易地看到这些。这是我的原始图像,但是现在,这是每个彩色平面的每个灰度图像。我要对颜色进行预处理,然后我要对不同的颜色平面进行阈值。
所以在这里回来我们的帮助,你可以看到,如果我们去图像处理工具箱,你可以看到有颜色上的一整节。你可以处理像的ICC色彩配置文件,该LAP色彩空间。你甚至可以对付HSV的色调。因此,有很多不同的方式,你实际上可以做只是根据色彩处理。
因此,让我们继续前进,返回到MATLAB在这里。所以我要打开另一个文件。因此,这是类似的。它的色彩处理文件或脚本的组合,我之前写的,还有一个阈值之一。除了这里,我们只是在图像中读取。我们要做的,当我们绘制了我们的三个色彩空间是我们以前那样。
然后现在,我们究竟要在门槛层的每一个。所以在这里,让我们继续前进,打开这个了,你可以看到我做了一个IM为黑色和白色,im2bw,红色飞机,绿色平面,蓝色平面。我们挑选会得到正确隔离对象,而在背景带来太多的噪音值。而我们所做的是我们总结并添加所有的飞机一起。因此,我们有一个正确,尽量剔出的影像。我的意思是,仍然有一些噪音在这里,但我们会在一分钟内面对这一切。
如果您在我们这里的脚本回头看,你可以看到发生了什么。从本质上讲,再阈限每个不同颜色的平面。这里是红色,绿色和蓝色,然后我总结他们在一起。所以,我只是简单地做了,并把它们放在一起,然后我们绘制出来。
我在这里这一步做到了,如果你看这里,这是伟大的,但它更直观地工作,用黑色的背景和白色的前景。所以我只是要补充图像。所以这是什么正在这里完成。而且我会打电话给一个叫imfilled功能。所以imfilled是一种形态的功能。所以请记住,我所提到的形态形状的研究。
所以这是一个形状基筛选器。而这样做是要填补漏洞。因此,所有这些孔,你在这里的图片中看到将要被填满,并迈出了坚实的。因此,让我们继续前进,做到这一点。你可以看到,它填补了所有的漏洞非常漂亮,但我们仍然有一些随机噪声。我们有这些磨损的边缘。我们必须围绕这些小点。因此,我们要处理一些形态学算,或者基于形状的过滤。
而之前,我成,我其实告诉你的功能,我们会谈论它实际上做。如果我们看这里,下一节就在这里使用一个名为IMOPEN形态算子。所以这是要打开的图像。而且什么都形态学运营商倾向于使用一种叫做结构元素。
所以,如果我打了F1,你可以看到这个结构元素本质上是你要选择的帮助做你的加工形状。所以你看这个结构元素。你可以选择的东西像一个球。你可以挑选钻石,磁盘,线,八边形等。我们要处理的磁盘。
因此,让我们继续前进,并运行此。所以在这里,我要做到的开口。你可以看到,如果我回到我的形象在这里,你可以看到它清理了不少。所有的小点都没有了。所有磨损的边缘被清理。并且你已经有了一个很好分段的图像就在这里。你可以看到,让我去这个停靠一分钟,我可以与结构元素多一点发挥。
因此,让我继续前进,炸毁这件事,所以你可以稍微看得更清楚。因此,我可以再次对磁盘的大小,单击鼠标右键。这是半径。你可以说增量值节还有。我可以说5,现在如果我点击,我可以使30,35,40,最终,你会看到,硬盘的容量实际上是会得到太大,糖果,在这些作品中放不下吃喝玩乐。
所以你会看到,65,70,75,现在你看到它可能不适合在任何糖果的,所以它不会重新绘制的像素。而现在,它只能适合在十六进制错误和汽车,所以这是我的方式可以处理基于形状或像素密度,尽可能过滤,我可以不断递增,直到所有的十六进制的错误都没有了。
因此,您可以看到二进制文件中的形态运算符是多么强大。你可以做一些很好的清理,以及一些基于形状的过滤。让我们把它移回原来的位置。我真的想要所有的糖果,还有海克斯虫子。我要把这个改为25,然后运行那个section。所有的东西都回来了。
然后最后一步,就是我要做的就是我要提取一些细节。所以我要利用函数被调用区域的道具,或区域属性。这是一个非常强大的功能。所以打F1。你可以看到什么使得它如此强大是事实,你可以从一个二进制图像中提取出大量的细节。
所以你可以得到的东西,例如,如面积,多少像素有特定的对象。你可以找到的东西,如心,中心,偏心率,直径,实际象素的亮度。所以,有很多的东西,你可以从它拉,二值图像中实际物体的连号。所以很多整齐的统计数据可以用这个区域属性函数中提取。
所以我们要继续前进,运行此。然后在这里就结束了,最后一步是我们真正要去画一些漂亮的边框和标签所有的人,也算多少的对象也有。所以你可以看到,我画了漂亮的边框周围的一切物体的谁可以很容易地识别用户。而且,我们数了数,有我们看到的图像中,有18级的对象。
你们可以看到,通过使用玩具和汽车的图像以及MATLAB中的很多特性,我们能够识别出一些独特的属性。首先,我们做了一些基本的阈值设定。我推荐这样做,因为这是一种非常简单的分割图像的方法。嗯,你看到我们在颜色上有一些问题,尤其是这些黄色的糖果。他们制造了问题,因为没有足够的对比。
所以,我们所做的是一些预处理,如果你愿意。我们做了一些基于颜色的处理。我们分开的色彩空间为红色,蓝色和绿色。而我们现在所做的不同平面中的每一个阈值。而作为一个结果,我们可以总结他们在一起,并得到我们想要的一切隔离一个完整的分割图像。
然后终于,我们做了一些区域属性功能来收集一些统计数据,计算对象,并用漂亮的边框为用户提供易于识别包围他们。然后最后我有点谈到形态学算。这对预处理和后处理的非常强大的工具,但你也看到了我如何真正段的图像基于不同的结构元素的大小。因此,我可以根据形状基本上过滤。
现在,这给我们带来了一些额外的东西,其他实用工具和工具可以帮助你。你看过我和imtool玩。在MATLAB中心有很多很棒的应用。这是我们的在线社区,在这里你可以看到很多人在做贡献。例如,这里有很多工具。你可以使用,例如,分割工具,变形工具,发挥形态学,图像注册应用。
因此,这些都是美妙的实用工具,不仅帮助您探索,但也确实收敛的解决方案。你可以用不同的参数发挥。而很多的这些工具实际输出的MATLAB代码,这样你就可以直接集成到应用程序。所以,我建议你看看这些,你会发现他们对MATLAB中央的文件交换。
所以这给我们带来了我们的最后一个话题,那就是图像配准。那么,什么是图像配准?如此简单,这是比对来自不同数据集的图像或者用于视觉比较或计算分析的过程。你可以在这里看到,从下面的图片,你可以使用地图图像配准,从多个卫星收集的可能。也许是同一颗卫星。在右边,我们有三维医学成像,在那里你要注册多个图像,给你一个更全面的数据,所以你可以做一些更强大的处理为好。
因此,当涉及到图像自动配准的话题,实际上是两大类。一是强度为主。这正是它的声音。实际上,你会根据强度要对准两个图像。在这种情况下,它可能对准头骨。你可以在这里看到,强度非常明亮,也许具有高强度存在以及另一幅图像。然后在地图上,这正是回事了。它对准之类的东西街道,房屋,任何形式的图像特性,其中的强度去排队的。
其他类型的注册是基于特征的。因此,与基于特征的,这也正是它听起来像。你提取不同的特征;例如,角部。这可能是边缘。可能是在它特定的独特功能。和这两者之间的差是基于强度的配准算法在图像处理工具箱找到。基于特征的,因为功能是计算机视觉的重要组成部分,在计算机视觉系统工具箱中找到。所以,我对例子来说明您是基于强度的自动注册,并从图像处理工具箱的。
在这个演示中,我要向你们展示的是如何使用,在这个例子中,一个网络摄像头图像和一个红外图像。这个例子的目的是把两幅图像放在一起因为我们想测量体温。因为眼睛的内心角落的位置是测量体温最准确的地方,我们想要注册这些图片然后我可以在摄像头图像上运行一个算法,找出眼睛的位置在哪里,然后我就可以关联确切位置的红外图像读取正确的体温。
让我们回到MATLAB。这是我们的脚本。你会看到我所做的是将这两张图片导入到我的工作区中。我要把红外图像看成是固定的图像。所以它是静止不动的。然后我将读取摄像头图像。这是一个移动的图像这是一个试图移动并在固定的图像上对齐的图像。
因此,让我们继续前进,读那些。然后我什么都迅速做的是imshowpair。所以在这里,向您展示的两幅图像彼此相邻。同样,我们想注册这两个。所以,我们要做的配置是我们要调用这个函数调用imregconfig。
所以这是真正的投入。如果我打了F1,你可以看到它的唯一希望,真的,一个输入参数。您可以看到,这里的形态。因此,所有这意味着,在您的图片来自一台摄像机,或单个设备拍摄的?如果是这样,那么你使用的输入参数单峰。如果它是从不同的设备拍摄的,像我们这里,一个摄像头和红外线相机,那么我们要输入多模态。所以这是我们的输入参数,是多模态。您可以继续运行此。
然后我们要做第一次注册。我们将使用imregister函数。可以看到它会进行基于强度的图像配准。第一件事,我们首先要选择的转换类型,是简单的平移。这意味着,它将在xy方向移动移动的图像看看它是否能使两者对齐。
因此,让我们继续前进,并运行。你可以在这里看到,这是我们的结果。所以在这里,我们正在做什么叫做伪色的imshowpair。因此,我们覆盖它们。而这种给你,至少,一些漂亮的颜色,看看发生了什么事情。你看它做了右手边一个相当不错的工作,但肯定有一些问题。你看这个鬼影这里,甚至连肩部错位。
让我们这样做的另一个观点。让我们做一个融合,而不是伪色的。这给了我们一个好一点的观点。所以,你可以在这里看到,有实际缩放回事的问题。因此,它对准正确右侧在这里,但在左侧,可以看到其中一张图片显然比其他的大。
因此,简单的翻译,默认转换,是行不通的。因此,让我们继续前进,改变的东西。因此,我们要改变转换类型仿射。如果你在这里向下滚动,只是提醒你那是什么。所以我们用翻译。没有工作。
仿射更先进。这将轮换使用,以及将要变化的规模和一些纯粹的为好。因此,让我们继续前进,运行,看看会发生什么。所以你在这里看到,哦,它得到更好一点。因此,我们有没有头部周围的很多重影,但我们仍然在这里有在脖子和耳朵的问题。就连肩膀似乎断了不少。但是你看到的图像旋转。所以这部分工作。
我们越来越近了,但让我们试试别的。让我们来看看,如果我们可以尝试不同的变换。我们要试试这个相似变换。和一切仅仅是一个额外的变化。这将处理不反光的相似性。但它仍然会做平移,旋转和缩放,但它不会与纯粹的玩。这是稍微简单一些。
因此,让我们真正尝试这一个。而这里的结果。您可以立即看到,这其实是一个很不错的注册。所以,你看到头对准得非常好。你看肩上。你的差距一点点在这里,但说实话,这真的是我们所追求,是我们想要的目光对准相当准确。因为我们想检测,再次,这里的眼睛,所以我们可以准确读出体温。
所以这里的最后一步是我们将使用一个来自计算机视觉系统工具箱的函数,那是一个级联物体检测器。如果你看这里,如果我按F1,你会看到它使用的是维奥拉-琼斯算法,这是一个很好的算法对于处理人脸。它不仅可以检测面部的位置,还可以帮助检测面部特征,比如眼睛,鼻子,嘴巴,上半身。
你可以在这里看到,我们会尝试去寻找一双眼睛。因此,如果我们继续前进,运行的部分,然后我们要计算眼睛附近的温度。因此,这是它会转换。而我们将在这里做的是我们要嵌入的温度,做一个文本插入,并把它写在屏幕上,因此很容易让用户看到。所以,如果我们回到我们的形象,我们在这里有我们的美好注册图像,我们有眼睛周围一个很好的边框。而你看到这里的温度读取为98华氏度,这完全是正常的。而这个人没有发烧。
总结演示,你看到我们是如何获得的图像,红外线和摄像头的标准图像。我们之前和我们整个算法的过程可视化的数据。我们使用了一个自动图像配准来对齐图像。然后终于,一旦对齐,我们采用特征检测,使用计算机视觉系统工具箱中的维奥拉 - 琼斯探测器。然后终于,我们找到了相对温度,我们写了用户的图像上。
想了解更多信息,这里有一些很棒的资源。首先,我们有一个产品页面。我们也有史蒂夫的博客,其中史蒂夫埃文斯,我们的技术专家有关图像处理,作者这个博客。有很多有趣的话题。然后是书籍方面,如果你是图像处理新手,数字图像处理利用MATLAB,它也是Steve Evans合著的,是学习图像处理的关键概念以及它们如何在MATLAB中实际执行的一个很好的资源。
最后是产品试用你可以试用今天看到的很多例子,也可以试用你自己的算法。这就是我们网络研讨会的结尾。首先,我想对你们说声谢谢,希望你们觉得这节课对你们有所帮助也许你们学到了一些新的技术或想法可以在你们自己的图像和视频处理流程中实现。再次感谢。
您还可以选择从下面的列表中的网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。
本网站使用cookies改善您的用户体验,个性化内容和广告,并分析网站流量。如您继续使用本网站,即表示您同意我们使用cookies。请参阅我们的隐私政策以了解更多有关cookies及如何更改您的设置。