贾亚·尚卡尔,马修斯
获取图像并进行图像分析,找到小物体,计数它们,并通过颜色区分它们。
您好,欢迎。在本视频中,我们将使用图像采集工具箱™ 将图像捕获到MATLAB中®。然后,我们将使用图像处理工具箱执行图像分析和其他操作™. 举个例子,我已经设置了我的相机来捕捉不同颜色的糖果的图像。我们将确定图像中糖果的总数,并计算特定颜色的糖果的数量。
在本例中,我将对获取的图像执行各种图像处理算法,如阈值化、形态操作和颜色分割。第一步是将我的相机连接到MATLAB。为了查看MATLAB是否识别出我的摄像机可用,我使用imaqhwinfo命令获取我的计算机上可用的硬件适配器和特定设备的列表。我目前连接的相机可以通过winvideo适配器访问。因此,我使用imaqhwinfo命令获取设备ID。
有了这些信息,我就可以使用视频输入命令创建一个图像采集对象的实例,该对象可以从我的相机中获取视频。使用这个视频输入对象,我可以为我捕获的视频打开一个预览窗口。然后使用getsnapshot命令从获取的视频中捕获一个图像帧。我可以在MATLAB中使用imshow命令显示这个图像帧。我把这个图像框停靠在这里。
让我们首先使用阈值识别图像中的所有对象。因此,我分离图像中的R、G和B分量,并使用GraySthresh命令分别计算每个分量的阈值。然后使用im2bw命令分别对这些分量设置阈值,然后将它们组合在一起,得到一个清晰的二值图像识别不清的物体。
为了去除图像中的伪影,我使用形态学操作,如imfill来去除任何洞,模糊的边界来去除边界上的任何无关物体。现在很容易清楚地数出图像中物体的数量。我使用bwlabel命令来唯一地标记每个对象,并计算图像中对象的总数。
为了可靠地选择某种颜色的糖果,我们需要考虑到由于不均匀的照明条件和相机噪声等问题而导致的对象颜色值的变化。因此,我需要构建一个图像,用每个糖果的中间颜色替换实际的RGB值。
为此,我使用逻辑索引仅获取我想要的像素,然后计算它们的中值。例如,我可以逻辑索引到图像标签矩阵中,并仅提取标签为1的像素。让我在这里显示一个示例。
然后我可以计算出属于这个分割区域的提取像素的中值。在这个for循环中,我计算了每个标签的所有三个彩色平面的中值。在循环的最后,我重新组合颜色组件,以了解每个糖果的中间颜色值。
使用图像处理工具箱中的impixelinfo命令,我可以看到我刚刚为每个糖果计算的中值R、G和B值。现在我想选择所需的颜色,并计算该特定颜色的糖果数量。因为我已经有了每个标记区域的中值颜色,我只需要找到具有中间颜色的区域颜色接近所选颜色。
对于基于颜色的选择,最好使用LAB颜色空间,因为它将发光信息从颜色信息中分离出来。该空间中颜色值之间的欧氏距离是比RGB颜色空间中更有效的颜色相似性度量。因此,我已经使用makecform和applycform注释将我的图像和选定的颜色从RGB空间转换到LAB空间。
从这里,我可以保留A和B分量,因为我真的不需要任何发光信息。为了找到具有相同颜色的区域,我首先使用带有A和B分量的hypot命令计算颜色值之间的欧氏距离。然后我使用一个适当的阈值,只选择那些接近所选颜色的区域。然后,我可以使用bwlabel命令获取所选区域的帐户。
因此,本演示演示了如何将图像处理工具箱和图像采集工具箱结合起来,对实时图像源执行图像分析操作。进一步来看,您可以使用向导添加GUI,甚至使用MATLAB编译器构建独立的可执行文件™. 有关更多图像采集和处理演示,请访问我们网站上的产品页面。谢谢。
您还可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。