主要内容

追踪绿球

这个例子向您展示了如何使用MATLAB处理从树莓派相机板模块捕获的图像来跟踪一个绿色的球。

介绍

树莓派相机板是一个定制设计的附加模块的树莓派硬件。树莓派硬件的MATLA金宝appB支持包允许您从树莓派摄像机板捕获图像,并将这些图像带入MATLAB进行处理。利用这种能力,我们将开发一个球跟踪算法。

先决条件

所需的硬件

要运行此示例,您将需要以下硬件:

  • 覆盆子π硬件

  • 一种至少具有1A输出的电源

  • 一个相机板

创建一个Camera Board对象

在MATLAB提示符下执行以下命令创建一个摄像机板对象。

清晰的凸轮清晰的零售物价指数零售物价指数= raspi ();凸轮= cameraboard(零售物价指数,“决议”“640 x480”);

凸轮是载镜对象的手柄。让我们在MATLAB中显示从树莓派相机板捕获的图像。

I = 1:100 img = snapshot(cam);图像(img);drawnow;结束

请注意你也可以用the网络摄像头API来创建一个摄像头对象。

提取颜色组件

我们将从3D图像数据中提取三个二维矩阵,分别对应于图像的红、绿、蓝分量。在继续示例的其余部分之前,我们将加载一个已保存的映像。我们将确保我们的算法在测试图像上工作,然后再继续现场数据。

img = imread (“tennis_ball.jpg”);图像(img);r = img (:,: 1);g = img (:,:, 2);b = img (:,:, 3);

绿色计算

接下来我们估算绿色分量的强度

justGreen = g - r/2 - b/2;

绿色图像阈值

我们对图像进行阈值,以找到我们认为足够绿色的图像区域。

bw = justGreen > 40;图像(bw);

发现中心

找到图像的中心,用红点标记它。

[x, y] = find(bw);如果~isempty(x) && ~isempty(y) xm = round(mean(x));ym =圆(平均(y));Xx = max(1, xm-5):min(xm+5, size(bw, 1));Yy = max(1, Yy -5):min(ym+5, size(bw, 2));bwbw = 0(大小(bw),“uint8”);Bwbw (xx, yy) = 255;结束图像(justGreen + bwbw);

对实时数据运行检测算法

我们可以创建一个MATLAB函数,trackball。m的MATLAB代码,我们在本示例的前几节中开发的。在编辑器中查看MATLAB函数。

编辑(“trackball.m”);

函数trackball()获取绿色检测的图像和阈值,返回绿色检测算法的结果。我们将在循环中捕获的图像上调用这个函数。在运行下面的MATLAB代码片段之前,获得一个网球,并将它放在树莓派摄像机板的视图中。当MATLAB代码运行时,移动球。

图(1);I = 1:200 [img, bw] = trackball(snapshot(cam), 40);次要情节(211);图像(img);次要情节(212);图像(bw);drawnow;结束

总结

本示例介绍了一个应用示例,其中对来自树莓派相机板的图像进行了简单的绿色检测算法处理。这种算法后来被用于追踪网球。