安迪,MathWorks公司
本次会议将介绍MATLAB®,一个高层次的语言和数值计算,可视化和编程互动的环境。
MATLAB包括内置解决工程和科学问题,以及互动的环境非常适合反复勘查,设计,和解决问题的基本的数学函数。图像处理例如用于向您展示如何开始使用MATLAB开始。
亮点包括:
记录:2014年3月26日
大家好,欢迎来到MATLAB入门。我叫Andy The,是MathWorks的产品营销经理。在这节课中,我们将通过一个图像处理的例子来介绍MATLAB。在开始之前,我们先来讨论一下MATLAB。
MATLAB本质上是一个高层次的语言。但更重要的是,它也是一个完整的交互式开发环境。这允许你做脚本,做数值计算,要做到可视化就像你看到的右侧,用情节和很多不同类型的绘图工具的能力。而且,它可以让你做算法的开发和编程,并最终应用程序部署。
因此,让我们了解一个典型的技术计算工作流程一步一回头来谈。传统上,你会与访问数据启动。这样就可以进来的文件的形式,从第三方软件,甚至硬件也许输出。一旦你获得的数据,你会再在我们所说的探索和发现阶段进入。这就是你要去的地方做了很多算法开发的,做事情喜欢绘图,发现趋势,并开发应用程序。然后终于,去分享。你会分享您的想法。你会在报告和文件的形式与任何同事分享你的算法,或许在输出,如C文件,库的东西,可以通过其他第三方应用程序使用的形式。
所以,虽然我已经证明这是一个直线路径,实际上这是一个反复的路径。你通常这些不同的阶段之间的移动,增加你的数据集的大小,做更多的开发,炼油的算法和应用程序,共享成果,获得反馈,然后再次做更多的细化。那么我要告诉你在这个会议是MATLAB使其非常适合这项样的工作流程。
这个示范今天的目标是建立一个入侵检测系统。使用MATLAB和图像处理工具箱,我们就来探讨一下图像创建和共享此应用程序。我们要与静态图像工作第一。我们将发布帮助分担报告的算法。然后终于,我们将视频直播工作。
让我先给你们预览一下我们要做什么。如果你看这里,这实际上是一个运行着良好用户界面的应用程序。我们让算法运行。这是我们没有入侵者的参考图像。在右边,你可以看到入侵者用红色高亮显示。最后,我们会看到如何把整个应用放在一起。
下面我们就以MATLAB。而对于那些谁是新的环境,我会不同的特点,我们在整个演示遇到他们走了过来。所以,让我们开始吧。在这里,在命令窗口中,这是一个伟大的地方,你可以开始与环境交互。例如,你可以开始分配一些变量,如等于3,B等于5,我们可以创建另一个变量c和一套等于次数b。所以没有什么很复杂的,我们找到了答案,15。
但我想指出的是MATLAB在工作空间中存储了所有这些变量。如果我双击打开,你会看到我创建的变量,a = 3 b,等等。这是你可以储存它们的地方;您可以对它们进行操作。但更重要的是,如果我双击这个,你会看到一些有趣的东西。MATLAB基本上把所有变量当作矩阵或二维数组来处理。在这种情况下,变量a是一个值3,但它是一个1乘1矩阵。所以当你做线性代数的时候,这是非常有用的,或者在我们的例子中,图像处理,每个图像本质上都是一个矩阵。
我们再做一些数学运算,看看能做什么。我创建了这个快捷键来清除工作区中的环境。顺便说一下,你可以创造你喜欢的捷径。你可以在这里创建一个标签。您可以输入您可能输入的任何常用输入命令。这只会帮助你提高工作效率。
现在,我要创建一个矩阵。让我们继续前进,并称之为矩阵1,我们要创建一个三乘三矩阵。因此,对于时间的缘故,我只是在这里做一些自动完成。好了,现在,如果我按回车,你会看到它是一个简单的三乘三矩阵。你会看到它的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。 All the surrounding pixels are black, because they're 0.
所以,现在你可以看到我一直在MATLAB交互不少。我在很多命令的输入。不过,虽然这首先是伟大的,这可以得到一种费力。当你的命令得到更加激烈,你希望做更多的互动,你可能想要移动到一些所谓的脚本。因此,让我告诉你如何获取或如何过渡到一种方式。
如果我们打开命令历史记录,你可以看到我在命令窗口中输入的所有东西自从我打开这个MATLAB会话以来。你可以说,好吧,我想要捕捉这个。我按住Control键,开始高亮显示所有我想要的命令。我们看一下,我在这里创建了一些矩阵,叫做imtool。我可以右键点击这里。我可以求出这部分的值。这样我就可以重播历史上的一切。或者我可以点击右键创建脚本。
所以它打开了这个编辑器窗口。在这里,你可以看到所有我在进入我的命令。我可以节省这一点。例如,我可以保存并创建一个测试脚本。然后所有的脚本标记为.M MATLAB。这是我的脚本。我基本上可以清除我的工作区。而我只能通过转到编辑器选项卡在这里,打运行重新运行我的脚本。而实际上,这里有我所有的变量。他们都被填充,我的矩阵创建,并且还发射了imtool。这是我的小像,我其实可以放大查看。
所以这是到现在为止,你可以遍历移动与脚本的环境中工作的好方法。你可以用它进行调试。您可以保存,真正让自己更具生产力。因此,命令窗口是巨大的。但是,当你想成为一个更大量的自动化,并且保存这些东西,迭代,我建议对脚本移动。
因此,让我们继续前进,并移动到我们的图像处理示例。让我继续前进,清除环境。现在,我们的图像处理例子,如果你看看这里的左侧,我还没有表现出这个给你。但这里是我们的文件夹的浏览器,我们的文件浏览器。所以,这里的地方,我们可以看到不同的文件。我们可以导航到我们想要的文件系统的任何文件夹。这里是我们的两个测试图像。让我们继续前进,现在将它们导入到工作区。
因此,如果我们双击的测试图像之一,我们将看到导入向导走了过来。因此,这里是一个JPEG图像。所以,实际上很简单。它所做的就是告诉我的名字。它告诉我,这是一个266按484 pixeled图像。而且这三个层次。为什么它是三层的原因,它说有一个R,一个G,和B-红色,蓝色,绿色层。我们会继续前进,通过单击完成导入工作空间这一点。但我要指出,这个导入向导将定制本身取决于你的数据类型。举例来说,如果你有表格数据或其他类型的数据格式,你会看到的选项,这将有助于你控制的,什么是被导入到工作区。 So just remember the import wizard will customize based on your data type.
让我们继续前进,然后单击Finish这里。然后你会看到我们有我们的测试图像填充有,在第二图像测试图像1.让我们继续前进和进口。在这里,它是。我们将点击完成。所以在这里我们有两个图像。让我们继续前进,并预览它们,以确保他们得到了导入到环境中正常。如果我们点击其中一个,去图选项卡,你会看到任何相关的情节将在这里长大的表面。我们可以做一个简单的imshow。而这,再次,就像一个printf的等效。我们只是在寻找这个变量。
看,没有什么有趣的。这是我的办公室。正如你所看到的,今天相对比较干净。但你看,没什么有趣的。这里没有入侵者。看起来一切都很好。但是如果我们测试图像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的一个有趣的方面,也是如此。您可以创建这些双百分号这些代码段。所以,如果我去一个百分号,这是一个简单的评论。但是,如果我去双百分号,我创建的代码段。
这实际上是一个复杂的断点。所以黄色区域内的所有东西都是一个执行点。如果我运行这个section,它会运行里面的所有代码。我可以不按顺序移动。所以我可以回来运行前面的部分。这是一种非常好的迭代和快速收敛的方法。你不需要运行整个文件或整个应用程序你不需要运行整个文件或整个应用程序你不需要运行整个文件或整个应用程序你不需要运行整个文件或整个应用程序你不需要运行整个文件或整个应用程序你不需要运行整个文件或整个应用程序。
因此,让我们继续前进,一步通过这个脚本。所以在这里我们有第一个部分。我会去我的编辑选项卡这里,点击运行进展。让我们继续前进并运行。在这里,我们填充我们的两个彩色图像的工作空间。现在我要做的对他们两人的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在图形比较看这里。让我们继续前进,并运行此部分。我可以只打控制 - 输入运行这部分代码。在这里,我们有我们的形象。让我们继续前进,在一点点缩小。
如果我们点击我们的检查像素按钮就在这里,这里的强度。我可以继续拖动这个局面。我们可以看看样的在这里。我们可以看到,没关系,在黑色区域,当然,这是接近零。对人本身,你可以看到有40间趴趴走一路攀升至150。所以,你可以看到实物的强度在哪里。他们是那种低,其中的一些。但有些高达150,256左右的最高福祉,这我们是从很远。
因此,我们要在这里做什么是运行这段代码。所以你看到我的订单不多了这里。让我们继续前进,并找到最大的区别位置。如果我们运行这个,你会看到这里,这里是我的形象。我们画了一个可爱的小星星,我们有最高强度。我相信,我们看到,使用imtool。我们看到,为大约155所以这本质上,被标记如心或质量这里此对象的中心。因此,让我们继续前进,我们imtool使用了。让我们继续前进,并移动到这个阈值区域。
所以阈值是另一个简单但功能强大的图像处理技术。从本质上讲,我要做的是这个灰度图像转换成二进制图像的地方只有1和0。而我这样做的方式是我要创建这个新的可变图像脱粒。而且我要带图像差分L与我会说,具有强度值大于8的一切,我想改变这种状况低于8 1.一切,我要设置为0。如此反复,这是门槛,如果你愿意,在这里我们要剪的。如果你还记得一些强度,其中大多数是在20或40以上。然后,这是一切的背景是接近黑色。因此,我们应该有这样的好成绩。让我们继续前进并运行此部分。再次,我只是会打控制输入。
你可以看到,嗯,现在更明显了。这里我们有对象,入侵者,高亮显示。这是我们的质心,以确保我们找到了正确的物体。然而,我们确实有一些随机噪声泄漏通过。所以这可能是由于相机的移动或者当背景被删除后留下了一些残留物。所以我们要清理一下。因为一旦我们进入下一步,我们想要这个图像非常清晰。因为做区域分析或物体分析时,所有这些小点,本质上,都是小物体。这真的会影响我们的一些计算。
因此,让我们继续前进,工作形象多了几分。我们打算在这个充满区部分用在这里,我们将使用一个名为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,他们可以运行并测试它。但是另一种很好的分享方式是如果你点击你的代码——这里我们在编辑器窗口。您可以看到我们有一个新的编辑器选项卡。这是同一个,我控制所有的步进,通过不同的部分。但有趣的是,旁边还有Publish标签。
所以在这里你会看到你其实可以做的事情一样的亮点,并提出一些更注重的代码。因为你真正把MATLAB的文件里这里,.m文件,会在您的最终报告中显示出来。所以,你可以做很多的补充意见,真正提供时,这实际上是产生了一些说明和背景。
所以在这里,如果我们去发布,让我们继续前进并发布图像检测。而实际上,当你做到这一点,它会运行整个算法。因此,让我们继续前进,并运行它。现在你已经是一个非常好的HTML文件。而这个文件现在可以与他人分享。如果你还记得以前,我们创建的代码,这些部分与双百分号,每有一个评论,现在成为该表的内容的导航点内。因此,这里的所谓的图像读取部分。你会看到它代表了这里。下面是在该部分的代码。因此,这里的显示彩色图像。 And you can see the output from that section of code, and so on.
因此,这是记录您工作的好方法。你可以很容易表现出你的同事,你怎么逻辑来到您的解决方案或聚集在你的结果。而在一个非常好的形式,不仅只是为了分享,同时也为自己的笔记来帮助这只是礼物你记录你的工作,所以真正的共享一个伟大的方式。
现在让我们转向视频直播。虽然这很有趣,我们用了一些静态图像。我们认为,这个算法的关键是什么。现在,我们想进一步扩展我们的入侵检测系统。其中最重要的是使用实时视频。所以我们将使用一些低成本的硬件,比如一个简单的网络摄像头。要做到这一点,我们需要验证我们有正确的硬件连接。
如果我们去主页选项卡就在这里,然后点击附加组件,你可以看到,有一个选择在这里,得到的硬件支持包。金宝app如果我们点击这里,您可以看到它带来了这个漂亮的精灵。在这里,你可以看到我们有选择。我会从互联网上安装。点击下一步。这里有不同的选择。
因此,这里有各种不同类型的硬件目标,你可以直接从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.
这就是全部了。我在引用我的算法。我把它变成了一个函数。我在这个nice for循环中运行。实际上我也在这里做了这个安全函数。我可以转到我的命令行,输入这个。如果我输入security_cam并点击回车,这里我有我的实时视频在运行。
你可以看到我的手被切得很好。用红色突出显示。你可以在我的命令窗口中看到一些东西被检测到。但是如果我把我的手移开,你可以看到它回到了图中没有任何东西。所以这是有效的。我大大增加了我的数据集。现在我用的是实时视频。
我要做的最后一件事是我要在我的算法上面放一个漂亮的用户界面。我创建了它。我用真实的视频验证了它。现在我要创建一个漂亮的用户界面。为了做到这一点,我实际上使用了一种叫做指南的东西。向导,如果你进入我们的搜索,你会看到我在说什么。所以在帮助里面,你会看到打开一个GUI布局编辑器。所以图形用户界面是GUI的简称。你会看到这里有不同的方法来建立这些用户界面。
有很多方法可以建立对话框。您可以创建一些非常复杂的ui。所以有一个很好的方法来建立好的接口让你与算法进行接口并调整它。它还可以让你轻松地分享这些。当你构建这些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的国家网站都没有从您的位置访问进行了优化。
本网站使用Cookies来改善您的用户体验,个性化的内容和广告,并分析网站流量。通过继续使用本网站,您同意我们使用Cookie。请参阅我们的隐私政策要了解更多关于cookie和如何更改设置。