安迪,MathWorks
这节课是MATLAB的介绍®,一个高层次的语言和数值计算,可视化和编程互动的环境。
MATLAB包括内置解决工程和科学问题,以及互动的环境非常适合反复勘查,设计,和解决问题的基本的数学函数。图像处理例如用于向您展示如何开始使用MATLAB开始。
亮点包括:
记录:2014年3月26日
您好,欢迎加入我们的介绍MATLAB。我的名字叫安迪,我在MathWorks公司的产品营销经理。在这个环节,我们将通过使用图像处理例子给你介绍MATLAB。但是,在我们开始之前,让我们继续谈谈MATLAB一点点。
MATLAB本质上是一个高层次的语言。但更重要的是,它也是一个完整的交互式开发环境。这允许你做脚本,做数值计算,要做到可视化就像你看到的右侧,用情节和很多不同类型的绘图工具的能力。而且,它可以让你做算法的开发和编程,并最终应用程序部署。
因此,让我们了解一个典型的技术计算工作流程一步一回头来谈。传统上,你会与访问数据启动。这样就可以进来的文件的形式,从第三方软件,甚至硬件也许输出。一旦你获得的数据,你会再在我们所说的探索和发现阶段进入。这就是你要去的地方做了很多算法开发的,做事情喜欢绘图,发现趋势,并开发应用程序。然后终于,去分享。你会分享您的想法。你会在报告和文件的形式与任何同事分享你的算法,或许在输出,如C文件,库的东西,可以通过其他第三方应用程序使用的形式。
所以,虽然我已经证明这是一个直线路径,实际上这是一个反复的路径。你通常这些不同的阶段之间的移动,增加你的数据集的大小,做更多的开发,炼油的算法和应用程序,共享成果,获得反馈,然后再次做更多的细化。那么我要告诉你在这个会议是MATLAB使其非常适合这项样的工作流程。
今天演示的目标是构建一个入侵者检测系统。使用MATLAB和图像处理工具箱,我们将探索创建和共享这个应用程序的图像。首先是静态图像。我们将发布报告来帮助共享算法。最后是视频直播。
所以让我给你什么,我们会建设一个预览。如果你看这里,这其实是一个不错的用户界面,运行的应用程序。我们算法的运行。这是我们没有入侵者参考图像。而就在右手边,你会看到我们的入侵者以红色突出显示。所以,最后,我们将看到我们如何把这个整个应用程序一起。
下面我们就以MATLAB。而对于那些谁是新的环境,我会不同的特点,我们在整个演示遇到他们走了过来。所以,让我们开始吧。在这里,在命令窗口中,这是一个伟大的地方,你可以开始与环境交互。例如,你可以开始分配一些变量,如等于3,B等于5,我们可以创建另一个变量c和一套等于次数b。所以没有什么很复杂的,我们找到了答案,15。
但我想指出的是MATLAB在工作空间中存储了所有这些变量。如果我双击打开,你会看到我创建的变量,a = 3 b,等等。这是你可以储存它们的地方;您可以对它们进行操作。但更重要的是,如果我双击这个,你会看到一些有趣的东西。MATLAB基本上把所有变量当作矩阵或二维数组来处理。在这种情况下,变量a是一个值3,但它是一个1乘1矩阵。所以当你做线性代数的时候,这是非常有用的,或者在我们的例子中,图像处理,每个图像本质上都是一个矩阵。
因此,让我们做一些更多的数学只是向您展示我们能做些什么。我创造了这个小快捷按钮来清除我的环境中工作区。顺便说一句,你可以创建自己的喜好的快捷方式。你可以在这里创建一个标签。您可以在任何常用输入的命令输入您可以输入。而这只是帮助你与你的工作效率,加快你一起。
现在我要创建一个矩阵。我们称它为矩阵1。我们要创建一个3×3矩阵。为了节省时间,我将在这里做一些自动完成。如果我点击回车,你会看到它是一个简单的3×3矩阵。中间是1和0。我们可以把它画出来。如果我们从工作区往下看——我把它打开。
我之前没有给你们展示这个,但是现在我们有了一些更有趣的数据,你可以点击右键。你可以看到,我可以提出更多的变量,比如标准差,均值,中位数。所以当这个矩阵变得更大更复杂时,你可以在工作区中提供一些有趣的属性。
但是现在我们要绘制此。所以,如果我继续前进,突出显示,并转到图选项卡,你会看到所有与此数据类型相关联的相关情节。在我们的例子中,我们要正确对待这个像的图像。所以,我可以用imshow。这是影像世界一个printf的等价物。您只需在偷看,或者观察值。但我想使用的图像工具,或imtool,因为这是这样一个小小的图像。正如你所看到的,这个图像工具允许我进行放大。
所以在这里我缩放到图像。你会看到什么很有意思。但是你可以做这样的事情,与图像工具,措施。所以在这里你可以看到我可以衡量这个小小的黑色的正方形。这是关于跨越1.39个像素。我可以对比真正发挥。我可以裁剪图像。但是,什么也很有趣,让我继续前进,合适的规模这一点,我可以单击此按钮就在这里检查的像素值。所以,如果我点击的是,这里会向您显示,这是我的矩阵。所有不同的元素,这里的所有1名的是白色的。 And the center is 0, which is black. So that's essentially a picture. It's not a very interesting one. But nonetheless, my little matrix is a picture.
我们开始吧。现在我要做一些运算。记住,我提到过MATLAB把所有东西都看成二维数组或矩阵。可以对整个数组进行操作。这里我们要做一些逻辑运算。例如,我要创建另一个矩阵- 2。我要令这个等于矩阵1中所有小于1的项。
所以,我要在这里做的是,本质上,我创造了逆。现在在这里,这是1,现在一切都为0的一切,是0,现在1.我可以打印这一个了。我要去刚刚经历我的历史上去。我要打印出矩阵2.在这里,让我们继续和放大,是我的形象。你可以看到它的倒数。现在这里的中心是白色的。这是1.所有周围的像素是黑色的,因为他们是0。
所以,现在你可以看到我一直在MATLAB交互不少。我在很多命令的输入。不过,虽然这首先是伟大的,这可以得到一种费力。当你的命令得到更加激烈,你希望做更多的互动,你可能想要移动到一些所谓的脚本。因此,让我告诉你如何获取或如何过渡到一种方式。
如果我们打开命令历史记录,你可以看到我在命令窗口中输入的所有东西自从我打开这个MATLAB会话以来。你可以说,好吧,我想要捕捉这个。我按住Control键,开始高亮显示所有我想要的命令。我们看一下,我在这里创建了一些矩阵,叫做imtool。我可以右键点击这里。我可以求出这部分的值。这样我就可以重播历史上的一切。或者我可以点击右键创建脚本。
它打开了这个编辑器窗口。这里你可以看到我输入的所有命令。我可以保存这个。例如,我可以保存并创建一个测试脚本。在MATLAB中,所有的脚本都标为。m。这是我的剧本。我可以清理我的工作区。我可以重新运行我的脚本只需要进入编辑器标签,点击运行。本质上,这是所有的变量。它们都被填充了,用我的矩阵创建了,也发射了imtool。 And here's my little image where I can actually zoom in and see.
所以这是到现在为止,你可以遍历移动与脚本的环境中工作的好方法。你可以用它进行调试。您可以保存,真正让自己更具生产力。因此,命令窗口是巨大的。但是,当你想成为一个更大量的自动化,并且保存这些东西,迭代,我建议对脚本移动。
因此,让我们继续前进,并移动到我们的图像处理示例。让我继续前进,清除环境。现在,我们的图像处理例子,如果你看看这里的左侧,我还没有表现出这个给你。但这里是我们的文件夹的浏览器,我们的文件浏览器。所以,这里的地方,我们可以看到不同的文件。我们可以导航到我们想要的文件系统的任何文件夹。这里是我们的两个测试图像。让我们继续前进,现在将它们导入到工作区。
因此,如果我们双击的测试图像之一,我们将看到导入向导走了过来。因此,这里是一个JPEG图像。所以,实际上很简单。它所做的就是告诉我的名字。它告诉我,这是一个266按484 pixeled图像。而且这三个层次。为什么它是三层的原因,它说有一个R,一个G,和B-红色,蓝色,绿色层。我们会继续前进,通过单击完成导入工作空间这一点。但我要指出,这个导入向导将定制本身取决于你的数据类型。举例来说,如果你有表格数据或其他类型的数据格式,你会看到的选项,这将有助于你控制的,什么是被导入到工作区。 So just remember the import wizard will customize based on your data type.
让我们在这里点击Finish。然后你会看到我们在这里填充了测试图像,测试图像1。让我们导入第二个图像。就是这个。点击Finish。这里有两幅图。让我们来预览一下,以确保它们正确地导入到环境中。如果我们点击其中一个,转到plot选项卡,你会看到任何相关的绘图都会显示在这里。我们可以做一个简单的演示。这和printf是一样的。 We're just looking at that variable.
见,没有什么是有趣的。这是我的办公室。这是比较干净的,因为你可以看到,今天。但是你看没有什么兴趣。这里没有入侵者。所以,一切看起来不错那里。但是,如果我们去测试图像2 - 然后让我们在这里使用的图像工具。我想告诉你关于一些有趣的东西。下面是我们对我们的办公室的图片。但有它的里面有人。 So we have someone here.
因此,这是一种有趣的。使用图像工具,我们就可以开始做一些预处理或开始分析数据。例如,我们可以在这个小标尺点击这里。我可以衡量有多高这个人吗?哦,这是大约150像素高。因此,这可能是重要的版本。因为我们可能想要做一些基于长度的滤波,也许确保我们检测到人,而不是也许有人的宠物。这就是你如何能做到一些快速测量。让我继续前进,删除距离的工具。
但你也可以做这样的事情裁剪图像。你可以回到这个检查的像素值。在这里,我们看到了像素区域。这一次,让我继续前进,放大,这样你就可以好一点,现在是更有趣一点看到它。正如我在像素区域周围移动这个小观察窗一看,这里的红色,蓝色和绿色的强度水平。因此,为了使这个红包,你可以看到,被要求作出这样的颜色值。如果您在黑看这里,你可以看到这一切都接近零,实质上。然后如果你靠近墙,这一切都非常高的强度,同比增长近200,256,这是最高的,这基本上将是这一形象的纯白内。所以,真正伟大的information--,这是重要的,因为你可能想要的颜色为基础,以做之后的处理,所以只是另一种方式来分析数据,看看也许你可能想在未来做什么类型的处理。
但是对我们来说,这是一个小更简单。所以,如果我回去抢我的其他图像,让我继续前进,接近该像素区域。我要去我之前抢。因此,在我们的例子中,我们试图做的是我们试图弄清楚,当我们在这里有一个入侵者。如果你看一下这两个图像,你会看到有很多一致性的。所有办公室的,除了人几乎不变的是一件事是新的。
所以你必须,基本上,一个背景是这样的背景和前景。所以在这里,这个人,我们要隔离。我们要确定它是一个入侵者。我们要使用在图像处理的技术称为图像分割。所以基本上,我们要尽量段这个人了从图像,所以我们可以做一些分析。我们要忽略所有这一切都不变的东西,因为这是不感兴趣的。
现在让我们一步步来看看如何分割和分析这幅图像。我们来关闭一些窗口。通常分割图像的第一件事就是将图像转换为灰度。你可能会问的第一个问题是,我该怎么做?一种方法是直接到搜索栏。你可以输入灰度。如果我这样做,你会看到一些搜索建议。或者你可以点击回车。你会看到——这里有一些帮助——你会看到你可以根据产品类型来分类,改进。或者你可以向下滚动,开始检查一些函数。 And you'll see here, here's an RGB to gray. So this sounds like what I want. If I click on it, you'll see the description—convert RGB image or color map to grayscale.
这听起来就是我想要的。下面是一个语法示例,您可以看到它的来源,图像处理工具—导入、导出和转换。这是一个图像类型转换。在我回去使用这个函数之前,我只是想在更高的层次上展示给你们,如果我点击这里,这是浏览图像处理工具箱中所有不同类别函数的好方法。这也适用于其他所有的工具箱。如果你去帮助,如果你看看所有不同类型的工具箱,你可以得到一些关于如何使用不同功能的很好的指导。
所以,如果我们回到图像处理工具箱,你看他们是如何分类。你看,有图像增强功能。您可以点击这里。有对比度调整。你可以回来进口,出口,转换,如果你想要一个类型转换。下面是我们想要的,RGB为灰色的功能。因此,帮助是一个很好的资源。您可以使用搜索栏,或者你可以浏览和探索。而且有很多的文档中的伟大的例子,以及。
因此,让我们继续前进,开始使用该功能。所以,我要创建两个新的变量。我要叫它图像灰度,所以imgray1。我将使用RGB。我按下Tab键即可怎样的帮助我,好了,所以它带来了前缀为RGB的常用功能。所以我想RGB灰色。而我会做这个测试图像,按下tab键。我想测试图像1.然后,我想创建另一个,图像的灰度2,和设置此等于RGB灰色,并设置这是测试图像2。
因此,这里有我的两个灰度图像。你看他们现在居住在工作区。我可以继续绘制出那些只是为了验证他们的存在。之前。让我请点击这里。这里的后。因此,我们肯定是对我们的方式。
所以我们在这里。我们基本上是转换为灰度。现在我们要进入下一个步骤。但我这样做之前,再次请记住,如果你在命令窗口中输入,它可以得到的那种费力。我要去进取,不断开拓的脚本的,我已经写时间较早的缘故。所以这里,图像检测。
在这里,你会看到我在读的图像。所以,记得以前我只是在图像文件浏览器中双击了和所使用的导入向导方式来吸引顾客。嗯,你也可以使用在MATLAB这个imread功能。所以,如果我点击F1,这带来了我们的帮助。你可以看到它的读取图像或图形文件的功能。而这里的语法。如果你向下滚动,这里是它的工作原理与不同的文件类型。所以这是在脚本的命令行或内我们的形象只是进口的好方法。
因此,我将继续清理我们的环境,以便从头开始重新运行这个脚本。你可以看到这里我用黄色标出了这部分代码。这实际上是一个代码段。如果我点击一下,你可以看到这个黄色的区域在移动。这也是MATLAB的一个有趣的方面。您可以使用双百分号创建这些代码部分。如果我用一个百分号,那只是一个注释。但如果我使用双百分号,我就会创建一段代码。
这本质上是一个复杂的破发点,如果你愿意。所以这个黄色区域里面的一切是一个单一的执行点。所以,如果我跑这部分,它将运行那里的所有代码内。其实我可以移动的顺序进行。所以,我可以回来和运行一节。所以这是迭代并很快收敛于一个解决方案的一个真正好方法。而且你不必像你在很多其他语言的做运行整个文件或整个应用程序和运行一切顺序或按时间顺序,所以一个真正伟大的方式来与环境的工作。
那么让我们来逐步执行这个脚本。这是第一部分。到编辑器标签,点击运行。我们来运行一下。在这里,我们用两个彩色图像填充工作区。现在我要在它们上面做一个imshow。在这儿。这是我的后像。之前。我们把它们转换成灰色。
这里我们在工作区中有另外两张图片用imshow打印出来。在这儿呢。这就是我们要开始分割图像的地方。回到这两张图,这是灰度图。这是我以前的。这是我的。记住,这里有很多常数,对吧?两个图像中的所有背景都是静态的。唯一改变的是我们想要分离或分割的东西。这就给我们带来了另一个简单而强大的细分方法。 And that's background subtraction.
因此,我们要在这里把我们的参考图像,并从我们的第二图像减去它拿走。并希望我们将只剩下这里有什么不同的权利。所以,如果我们回到MATLAB,你会在这里看到这一节,减的图像,那有这样做的多种方式。单程我没有在这里,这是一个最会跑,我有两个图像,我之前和之后。而且我要减去一个从其他。而我要做的绝对值,以确保我没有任何负数。所以这只是利用基本的数学。请记住,MATLAB对待一切,矩阵。这仅仅是一个简单的数学运算。没有for循环。 There's nothing really tricky. Just by doing a simple subtraction, I'm able to remove the background.
你可能也用imsubtract。所以图像减法是图像处理功能为好。所以这只是显示你有多种方式做同样的事情在MATLAB。而且这是一个非常灵活的环境。
因此,让我们继续前进,减去图像。因此,让我们继续前进,提前运行这部分。现在,你面对的问题,所以这是非常有趣的。所有的背景已经变成了黑色。而且,我想分割的东西,你可以看到他开始出现。他是褪了一点。但是你可以看到它做了不错的工作。其实我有入侵者有所凸显。但是我们将不得不做一些更强大的处理,所以我们真的可以让这个更明确和更容易一些处理。但是,我们肯定是在正确的轨道上。
所以,在这里的这部分代码,我们会发现差异的最大位置。所以,这一切都是真的做的是找到最高强度。这将经历每一个行和列,并寻找最大像素强度。因此,如果我们想看看是这里的代码下一节什么,在这里我们使用imtool在图形比较看这里。让我们继续前进,并运行此部分。我可以只打控制 - 输入运行这部分代码。在这里,我们有我们的形象。让我们继续前进,在一点点缩小。
如果我们点击这里的inspect pixels按钮,这里是强度。我可以拖动这个。我们可以看看这里。我们可以看到,在黑色区域,当然,它接近于零。在人的身上,你可以看到在40到150之间的任何地方。你可以看到强度在哪里。有些是低的。但有些则高达150,最高256左右,离我们还很远。
我们要做的就是运行这段代码。所以你看到我在这里失去了秩序。我们来求一下最大差值位置。如果我们运行这个,你会看到这里,这是我的图像。我们画了一个很漂亮的小星星,它的亮度最高。我相信我们在imtool上看到过。我们看到大约是155。所以,本质上,这个标记就像这个物体的质心。我们继续,我们已经用过imtool了。让我们移动到这个阈值区域。
因此,阈值化是另一种简单但功能强大的图像处理技术。本质上,我要做的是把这个灰度图像转换成只有1和0的二进制图像。我要做的是创建这个新的变量图像thresh。我要取图像的差值l我要把所有强度值大于8的,都换成1。所有小于8的项都设为0。再一次,这是临界值,如果你愿意,我们要在哪里切割它。如果你还记得强度的话,大多数都是在20或40岁以上。所有的背景都是黑色的。所以我们应该有好的结果。让我们继续运行这个部分。 Again, I'm just going to hit Control-Enter.
你可以看到,嗯,有很多比较明显,现在。因此,我们有我们的目标,我们的入侵者,在这里,颇能凸显。这是我们的重心,以确保我们有这个权利对象标识。但是,我们确实有一些随机噪声泄漏通过。所以这可能是由相机移动或东西,当它被减去的背景留下一些残留落后。所以我们要尽量清理它。因为一旦我们去我们的下一个步骤,我们希望这个形象很干净。因为做区域分析或对象的分析,所有这些小点的,基本上都是小物件。这真的可以甩开我们的一些计算。
因此,让我们继续前进,工作形象多了几分。我们打算在这个充满区部分用在这里,我们将使用一个名为bwareaopen功能。所以这个功能实际上是形态算。形态实际上只是基于形状的过滤器看中字。因此,这是一种图像处理技术。如果我打了F1,这是我们可以过滤基于形状的图像。
在这种情况下,它是一个更灵活一点。我们要输入我们的黑白图像在这里。但是,什么字母P或输入值,是什么东西我们要屏幕为对象的大小?什么是区域?所以你要放在一个区域中的像素,你希望它屏幕。在这里,我们想说,这里是我们的二进制图像。我们将通过在作为一个变量。而我们要说的一切,这是15个像素或更大,我们要保持的区域。下面这一切,我们要退学,基本上变成0,所以这样应该可以清理图像相当多。
因此,让我们继续前进,并运行此部分,控制输入。你会看到它的工作相当不错。所有的随机噪声消失。我们有对象,这里的主要原因之一。它看起来像他的手,这可能是他的影子的一部分。但除此之外,它还是很不错的。我们可以肯定这个工作。因此,让我们继续前进,回来这里。
而在本节中,我们将做什么所谓的图像叠加。什么是关于这个功能有趣的是,这个功能是不是从MATLAB。这不是图像处理工具箱的一部分。它实际上是一种实用工具,我们从文件交换下载。因此,这是从我们的用户社区。让我们继续前进,我会告诉你在哪里我得到了这一点。
在这里,我们是在MATLAB中心。所以,这是我们对所有MATLAB的用户群体。在这里,你可以找到很多重要的资源,如代码示例。人们问的问题,有很多的讨论主题。但你也可以得到一些非常不错的实用工具也是如此。这里的图像叠加。如果我点击这个,你会看到一个描述。这仅仅覆盖了另一种形象。你会得到一个非常好的视觉享受。你得到突出的任何感兴趣的。 And in our case, we want to highlight our intruder. So this is a perfect function for our use case.
因此,让我们继续前进,回到MATLAB。因此,这里是我们的图像叠加功能。实际上,你可以看到它。我们下载了它。它的内部当前文件夹的为好。而且我们要通过这两个图像。因此,让我们继续前进,运行这部分代码控制输入。在这里,我们在这里有我们的形象。你可以看到,我们在我们的红色入侵者已经强调。所以这是一个伟大的可视化的方式,现在向用户显示或谁我们用什么真的改变了我们的共享代码和我们的图像识别里面什么。 And here's our intruder.
因此,让我们继续前进,再回到这里。而我们要做的处理又迈进了一步。请记住,我被测量的那个人。而我搞清楚他们是多么高。好了再说,也许我们要筛选出,当一只猫进入视野不存在任何虚假触发,比方说,。那是不是我们真正关心的东西。但是,当一个人进来,我们要明确发出警报声。
所以在这里我们说我们只关心事情的长度以上大于80个像素。所以在这里我们要使用的功能,以帮助提取物的价值。我们将使用一个名为regionprops功能。如果我打了F1,你会看到这是从我们的图像处理工具箱。这是一个非常强大的功能。因为本质上它是能够做的是从图像中的对象提取的统计数据。通过传递图像,你可以得到的东西喜欢的地方。你可以找到的东西,如重心,直径,像素值的强度,偏心距,圆的东西是怎么了,周界。所以很多强大的统计数据可以被提取。甚至在我们的例子中,我们要寻找轴的长度,这个人怎么这么多高。
如果我们调用这个函数,我们会在这里存储一些新的变量。这里我们要遍历并找出所有的主轴长度。我们来比较一下。任何大于80的,我们都会存储它们。如果它大于80,我们会在最后一段做这个检查看看我们是否有什么有趣的东西如果图像中真的有不同的东西。
因此,让我们继续前进,运行这段代码。你会看到这里的工作空间,我们已经填充了一些新的变数。所以在这里,我们有我们的形象统计数据和图片统计决赛。如果我们在这里打开这些阵列,你会看到,我有一大堆的主轴,因此长度的一堆已被发现。然而,只有一个是我们感兴趣的是这样的一个是80:107。而只是为了验证该过滤工作,在这里我们可以看到我们上面80我们发现它的主轴。因此,这里的107。
因此,如果这是正常工作,如果我们在这里执行我们的代码,最后一节,这是说,如果这个矩阵是空的,我们要不要说是不同的。在我们的案例中,有那么点意思。因此,我们应该能够打印出的东西是在图像中。因此,让我们去跑最后一节。如果我去命令窗口中,你可以在这里看到的输出打印出来的主要长度为80以上这是107和出事的形象。
所以我们看到我们的算法现在的工作非常好。这是在一个伟大的阶段,我们就可以开始分享和获得反馈。所以有共享代码许多方面。你绝对可以围绕船舶MATLAB文件。如果你的同事有MATLAB他们可以运行并测试它。但共享的另一伟大的方式是,如果你在你的代码,请点击这里,这里我们在编辑器窗口。你可以看到,我们有一个新的编辑器选项卡。这是同一个地方,我都控制步进通过不同部分。但有趣的旁边,我们已经发布标签为好。
所以在这里你会看到你其实可以做的事情一样的亮点,并提出一些更注重的代码。因为你真正把MATLAB的文件里这里,.m文件,会在您的最终报告中显示出来。所以,你可以做很多的补充意见,真正提供时,这实际上是产生了一些说明和背景。
所以在这里,如果我们去发布,让我们继续前进并发布图像检测。而实际上,当你做到这一点,它会运行整个算法。因此,让我们继续前进,并运行它。现在你已经是一个非常好的HTML文件。而这个文件现在可以与他人分享。如果你还记得以前,我们创建的代码,这些部分与双百分号,每有一个评论,现在成为该表的内容的导航点内。因此,这里的所谓的图像读取部分。你会看到它代表了这里。下面是在该部分的代码。因此,这里的显示彩色图像。 And you can see the output from that section of code, and so on.
因此,这是记录您工作的好方法。你可以很容易表现出你的同事,你怎么逻辑来到您的解决方案或聚集在你的结果。而在一个非常好的形式,不仅只是为了分享,同时也为自己的笔记来帮助这只是礼物你记录你的工作,所以真正的共享一个伟大的方式。
所以,现在让我们看一下视频直播工作。所以,虽然这已经很有趣 - 我们与一些静态图像的工作。我们真正发展起来,我们认为,什么是算法的关键就在这里。现在,我们要扩展更多的一些人对我们的入侵检测系统中移动。因此,最大的一块是正在视频直播。所以我们要工作,一些低成本的硬件是一个简单的网络摄像头。要做到这一点,我们要继续前进,只是验证我们有正确的硬件连接。
如果我们转到Home标签,点击add-ons,你可以看到这里有一个选择- get硬件支持包。金宝app如果我们点击这里,你会看到它弹出了一个漂亮的向导。在这里,你可以看到我们有选择。我要从网上安装。单击Next。这里是不同的选择。
因此,这里有各种不同类型的硬件目标,你可以直接从MATLAB访问,一切从ARM处理器,树莓派,BeagleBoard的,有很多不同类型的输入,如乐高机器人的漂亮机器人。然后甚至向下滚动,你会看到,这里的USB摄像头。如果我强调的是,你会看到我已经安装了。所以它只是问我,如果我想重新安装。它只是告诉我的版本。因此,这是你将如何去,只是选择不同的支持包,以支持您要使用硬件接口的类型。金宝app
因此,让我们继续前进,并开始使用视频。所以,我要打开另一个脚本,我写了前面。因此,让我继续前进,并关闭一个。我们可以看到在这里的左手边我有这样一个所谓的分割下划线FN。因此,所有这是我以前写我的同一图像检测算法。唯一的区别是我评论了所有的imshows的。因为我不需要在这一点上了调试。我几乎知道所有的步骤都相当不错的了。我用imshow很多样的调整和调整我的图片。所以算法是正确的,现在合作得非常好。
我没做什么,如果你顶一下,是使用一种名为function关键字。所以这样做是它本质使得这整个文件只是很多更实用。所以,它的作用是可以让我把这种算法的功能。用同样的方法我打电话像RGB功能为灰色,现在我可以调用这个程序全部为段下划线功能。什么是不错,不仅我可以称呼它,其实我可以传递的输入参数您在图像中传递的方式转换成RGB为灰色相同。你可以通过在,在这种情况下,前,参考图像我的办公室,然后将图像之后,一个我们正在寻找我们的入侵者。
它会运行这个算法。最好的是,你甚至可以有一个返回值。这里我们将传递回突出显示的图像,我使用文件交换中的图像覆盖函数的图像。如果我向下滚动这里,你可以看到我在哪里做的那个赋值。在我执行图像叠加后,我把它传递回这里的变量,突出显示的图像。然后这个函数,或者这个函数被调用的地方,会返回这个突出显示的图像。
如此反复,功能也非常强大,是让你的算法有很多更方便,使用更方便的好方法。在哪里我打电话从这个函数被调用security_cam另一个函数。所以安全下划线凸轮是我的下一个功能在这里。而这一切正在做的是建立,我从网络作为支持包下载的网络摄像头。金宝app我设置这件事。在这里,我以我的参考图像。所以,我以我的办公室的照片前,任何人进入它。所以这是我自己参考或我的背景图片。在这里,我要进入一个for循环。当我经过循环的每一次迭代,我要拍张新照片,以寻找入侵者。 And then I'm going to call my segmentation function. I'm going to pass my reference image as well as my newly taken picture, and I'm going to hopefully come back with nothing. But if it does detect an object, it will return it here and will print that out to the display.
所以,这一切真的是。我引用我的算法。我把它做成一个函数。我在这个漂亮这里运行循环。实际上我做这个安全功能在这里,也是如此。因此,我可以去我的命令行就在这里,如果我继续前进,在security_cam类型,所以进入这个并回车,在这里我有我的直播视频的运行。
你可以看到我的手被分割很好。它以红色突出显示。实际上,你可以看到我的命令窗口正被检测的东西。但是,如果我将我的手的时候,你可以看到,它的回到了没有什么是在图片。所以真的验证。我已经大大增加我的数据集。现在我用视频直播工作。
我要做的最后一件事是我要在我的算法上面放一个漂亮的用户界面。我创建了它。我用真实的视频验证了它。现在我要创建一个漂亮的用户界面。为了做到这一点,我实际上使用了一种叫做指南的东西。向导,如果你进入我们的搜索,你会看到我在说什么。所以在帮助里面,你会看到打开一个GUI布局编辑器。所以图形用户界面是GUI的简称。你会看到这里有不同的方法来建立这些用户界面。
因此,有建筑对话框的方式。你可以做一些非常复杂的用户界面。所以有建筑物尼斯接口,让你的算法和调整它的接口的一个非常好的方式。它也可以让你轻松分享。而当你构建这些图形用户界面,从本质上讲,你要创建一个应用程序。所以当你有这些应用,有各种各样的安装自己的方法。你可以为他们提供的设备谁拥有MATLAB其他人,所以使代码更大量共享,并且使你的代码放到一个完整的应用程序的一个非常好的方式。
即使所有这些小工具,如果我回到这里MATLAB,没事,让我们继续前进,告诉你什么是在这里建立。这里是一个数字窗口。因此,使用指南,如果我开这件事,你会看到,我们实际上用了很多很好的工具来创建这些漂亮的对话框,创建这些图,你会在一分钟内看到填充。你看到了,实际上,在开始的时候。这是所有运行。我们创建这些漂亮的滑动条,启动和停止按钮,即使该按钮取参考图像中,我只是摆出你的接口,这样非常好的方式。
这里,我不会用代码来拖住你们,但本质上,这是连接到用户界面的函数。所有的代码都在这里。最后的结果是,如果我运行这个,你会看到会发生什么我们会得到这个非常漂亮的界面。我可以在这里取我的参考图像。这是我办公室的照片。这是我的开始按钮。点击开始可以看到,效果很好。但这里我有调谐旋钮。所以我可以把它移动到正确分割的地方。这里它并没有选择对象的正确长度。 So let's go ahead and tune this till we get an alert. And now we've essentially tuned it. And we have a really nice working system.
这里我们有一个很好的用户界面。我们的算法在下面运行。我们和它有很好的互动。我们也可以和用户分享一个发布的HTML文件来帮助记录你所做的事情。让我们继续回到我们的演讲。
为了总结我们的演示,我们回到典型的技术计算工作流。你也看到了我们是如何获取数据的。首先,我们处理标准的JPEG图像。我们使用导入向导将它们导入。我们做了一些改进。后来我们甚至使用低成本的网络摄像头集成了一些硬件。我们做了我们的算法开发。我们使用我们的发布功能来共享它。所以我们可以在不同的阶段移动。你也看到了我们如何使用脚本来帮助自动化。 And in doing so we used MATLAB and some of the functions from the Image Processing Toolbox to make our intruder detection system.
所以更多地了解MATLAB,请访问我们的网站www.tatmou.com/matlab。在那里,你会发现很多有用的视频,代码示例,让你开始和创建自己的应用程序的启发。如果您需要任何帮助或援助,我们当然支持。金宝app但也MATLAB中央是一个巨大的资源在那里你会,无论从MathWorks公司,以及在我们的社会正在帮助答题,带来了巨大的话题,以及共享代码只是为了真正激发并找了很多专家的让你开始你的旅程。
并进一步了解图像处理工具箱,请访问我们的www.mathworks.co米/产品/图片网站。下载188bet金宝搏在那里你会发现很多其他的视频和例子,所有相关的图像处理。你会看到有我的照片的右侧为好。所以,如果你有任何问题,也许你是新的领域,只是想讨论一些功能,随时给我发电子邮件。我会尽我所能来回答你。
所以,请坚持。我们来到这个会议结束。希望你已经学到了一些东西,得到了很好的介绍MATLAB,看到了一些的功能,以及准备。并请坚持围绕。我们已经得到了Q&A环节上来。所以,请在您的问题输入。我们将采取一个短暂的休息。然后我们会回来,并回答你的问题。所以,再次感谢,看到你在一分钟内。
你也可以从以下列表中选择一个网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。