Jaya Shankar,Mathworks
获取图像并执行图像分析以查找小对象,计算它们,并通过颜色区分它们。
你好,欢迎光临。在此视频中,我们将使用图像采集工具箱™将图像捕获到MATLAB中®。然后,我们将使用图像处理工具箱™执行图像分析和其他操作。作为一个例子,我已经设置了我的相机来捕捉不同颜色的糖果图像。我们将确定图像中的糖果总数,并计算某种颜色的糖果数量。
在该示例中,我将执行各种图像处理算法,例如所获取的图像上的阈值,形态操作和颜色分割。第一步是将我的相机连接到MATLAB。要查看MATLAB是否认识到我的相机可用,我使用imaqhwinfo命令获取计算机上可用的硬件适配器和特定设备的列表。我目前已连接的相机可通过WinVideo适配器访问。所以我使用imaqhwinfo命令获取其设备ID。
使用此信息,我可以使用视频输入命令创建可以从相机获取视频的图像采集对象的实例。使用此视频输入对象,我可以为我的捕获视频带来预览窗口。然后,我使用getsnapshot命令从所获取的视频中捕获一个图像帧。我可以使用MATLAB中的IMSHOW命令显示此图像框。让我在这里停靠这个图像框架。
让我们首先使用阈值化识别图像中的所有对象。因此,我将R,G和B Compents分开了我的图像,并使用TryThresh命令单独计算每个阈值。然后,我使用im2bw命令单独阈值,然后将它们组合在一起以具有明确识别的对象的二进制图像。
要删除图像中的任何伪影,我使用形态操作,例如IMFILL以删除任何孔和酰上的孔,以删除躺在边框上的任何无关的对象。现在很容易明确计算图像中的对象数量。我使用bwlabel命令唯一地标记每个对象,并计算图像中的对象的总数。
为了强大地选择某些颜色的糖果,我们需要考虑因由非均匀照明条件和摄像机噪声等问题而引起的对象的颜色值的变化。因此,我需要构造一个替换每个糖果的中位颜色的实际RGB值的图像。
为此,我使用逻辑索引只能只能获得我想要的那些像素,然后计算它们的中位数。例如,我可以在逻辑上索引到图像标签矩阵中,并仅提取标签的标签的那些像素。让我在这里展示一个例子。
然后,我可以计算属于该分段区域的提取像素的中值。因此,在这对于循环中,我已经计算了每个标签的所有三个颜色平面的中值值。并且在循环的末尾,我重组颜色组件以了解每个糖果的中色值。
使用从图像处理工具箱中的ImpixelInfo命令,我可以看到我刚刚为每个糖果计算的中位数R,G和B值。我现在想选择所需的颜色,并计算特定颜色的糖果数量。由于我已经有每个标记区域的中位数,因此我需要简单地找到具有靠近所选颜色的中位颜色的区域。
对于基于颜色的选择,最好使用实验室颜色空间,因为它将发光信息与颜色信息分开。在该空间中颜色值之间的欧几里德距离是比RGB颜色空间中的颜色相似性更有效的度量。所以我已经使用MakeCForm和ApplyCForm注释将我的图像和所选颜色从RGB转换为实验室空间。
根据此,我可以保留A和B个组件,因为我真的不需要这里的任何发光信息。要找到具有相同颜色的区域,我首先使用具有A和B分量的斜面命令计算颜色值之间的欧几里德距离。然后,我使用适当的阈值保持值来选择靠近所选颜色的那些区域。然后,我可以使用bwlabel命令获取所选区域的帐户。
因此,该演示说明了如何将图像处理工具箱和图像采集工具箱组合以对图像的实时馈送执行图像分析操作。进一步拍摄此示例,您可以添加带指南的GUI,甚至可以使用Matlab Compiler™构建独立执行的独立可执行文件。有关更多图像采集和处理演示,请访问我们的网站上的产品页面。谢谢你。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。