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