本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


使用计算机视觉制作停车助手,让您可以始终如一地将汽车完美对齐地停放在车库中。
间接传感
在传感器领域,为了简化和降低传感成本,进行间接测量是很常见的。例如,为了检测人的存在以发出警报,超声波或热传感设备用于检测运动。然而,人类不是这样工作的。虽然我们可能可以使用声音来检测周围是否有人,但视觉是我们确定周围事物的最佳方式。一般来说,视觉可能是我们最有价值和最有能力的感觉,它使我们能够理解世界。
通过计算机视觉感知
最近,计算机视觉取得了很大进展。与机器学习相结合的新算法使我们能够从视频捕获中确定大量信息。然而,这些解决方案的成本远远高于其他类型的传感,因此其用途仅限于监控和工业应用。成本主要来自捕获和分析视频所需的强大计算机。
廉价的计算机视觉 (CV) 传感器可能会成为传感技术的一项突破,原因有很多:
基于摄像头的停车助手
由于上述原因,我想使用 FRDM-K82F 创建某种基于计算机视觉的传感器。虽然我想到了很多想法,但只有一个是实用的、有用的,并且可以在比赛截止日期前完成。
将汽车始终停在车库内的同一位置是非常困难的。您最终会在侧面过多,或者在前面或后面没有留下足够的空间。或者,也许你非常小心,但你的另一半却不是,如果你像我一样,那会让你发疯。目前有解决方案,从低技术到“伪高科技”。这些是其中的一些:
我的想法是创建对用户更友好的完全不同的东西。这个想法是使用计算机视觉制作一个系统,可以始终指导您正确停车。比现有解决方案更类似于此:
如何运作?
使用视频图像中的运动检测,系统应该能够指示车辆是否需要左移、右移或停止。
对用户的指示必须来自一个非常简单的基于灯光的界面,如下所示:
左右箭头将指示汽车是否必须向左或向右转向。中间的灯会显示三种颜色,绿色表示前进,黄色表示谨慎前进,红色表示停止。
为什么选择带有 FlexIO 的 FRDM-K82F?
像 UV7670 这样的相机之前已经连接到其他类型的微处理器。然而,在大多数这些实现中,微处理器积极参与从图像中捕获数据。这需要微处理器的大量处理能力。一旦图像被获取并在 RAM 中,真正的工作就从图像处理功能开始。
Kinetis FlexIO 允许从 UV7670 传感器中检索图像,几乎无需微处理器进行处理。一旦图像被完全捕获,中断指示图像已准备好并在内存中。在处理图像时,将同时捕获下一张图像。
这使得 FRDM-K82F 成为该项目目标的理想平台:一个非常低成本的图像处理平台。
为什么选择 OV7670 摄像头模块?
OV7670 是一款 300Kpixels 相机。分辨率对于这个应用程序来说并不那么重要,实际上在撰写本文时,程序以最低分辨率 (120x160) 使用它。OV7670 的关键是规模经济。因为它在小型项目中被大量使用,所以在包含镜头的分线板上组装相机的成本约为 10 美元。它还具有其他优点,例如没有红外滤光片,使其适合使用红外照明进行应用。
构建说明
摄像头组装:FRDM-K82F 平台的设计人员很高兴能包含一个用于 FlexIO 的连接器,其引脚与 OV7670 完全相同。可以将 OV7670 直接焊接到 FRDM-K82F 板上,但是,我将 0.1” 插座焊接到板上。这样我以后可以将其他相机或设备连接到 FlexIO 接口。
指示灯:这是项目中唯一需要一些人工来复制它的部分。指示灯是使用带控制器的 WS2812B RGB LED 制成的,并使用泡沫板进行安装。使用 WS2812B LED 的原因是因为它们提供了很大的灵活性(可以自定义颜色,并且可以连接任意数量的 LED),只需使用微控制器中的一个简单 GPIO。指示灯示意图如下:
LED 安装在双面原型穿孔板上,作为三个单独的板。三块板用扁平电缆连接。第一个板是唯一不同的,因为它包含上拉电阻。
如果有可用的 WS2812B 分线板,使用起来会更容易。
在泡沫板上切割灯的形状。小心不要完全切开。也就是说,将纸板背面留在一侧。剩余的纸板为 LED 提供了很好的扩散器。这样做两次,并使用锐器为内部边界着色,以避免光线扩散到创建的形状之外。LED 板安装在其中一块泡沫板上,并使用双面胶带将所有东西放在一个组件中。
灯总成数据线连接到Port C pin 12,即FRDM-K82F板子中的PTC12:
软件
至此,硬件准备就绪,是时候在软件中工作了。
首先安装 Kinetis Design Studio。就我而言,我将它安装在我的 MacBook Pro 上,虽然文档不能保证它会起作用,但它对我来说完美无缺。
要刷新 FRDM-K82F 板,到处都使用 JLink JTAG 适配器,但是,我使用了 OpenSDAv2.1 接口,或者最常见的 mbed 接口。将 OpenSDA 端口连接到 MAC 后,它将显示为 USB 驱动器,其中复制了 KDS 生成的 .bin 文件。
我这样做只有一个问题。在某些时候,由于某种无法解释的原因,配套的微处理器(实现 OpenSDA 接口的那个)不知何故被擦除了。它没有作为名为 mbed 的 USB 驱动器出现,而是显示为 BOOTLOADER。
只需将固件复制到 USB 驱动器中,几分钟后我就可以重新启动并运行。
我根据安装 Kinetis Design Studio 时复制到示例文件夹中的 dev_video_flexio_ov7670_lite 示例启动了我的软件。有一段时间,我计划完全删除代码的 USB 部分,但我没有这样做很好,因为它有助于调试应用程序。
通常在计算机视觉应用中,不是使用 RGB,而是使用黑白视频。但是,从 RGB 转换为基于强度的视频需要太多的处理器时间,我想为图像处理留下尽可能多的处理能力,所以我更改了演示程序,以便从 OV7670 传感器捕获的图像在 YUV422 中完成。YUV 422 格式再次使用每像素 16 位,一个字节用于强度,另一个字节用于颜色信息。
这很容易在 flexio_ov7670.h 文件中更改,只需更改以下行:
.outputFormat = (ov7670_output_format_config_t*)&OV7670_FORMAT_RGB565,
至
.outputFormat = (ov7670_output_format_config_t *)&OV7670_FORMAT_YUV422,
然而,正如预期的那样,这搞砸了通过 USB 发送的视频。我尝试了一段时间将东西的USB端更改为YUV422格式,但我没有成功,所以为了保持USB视频可用,我将Intensity转换为RGB图像,很多比将 RGB 转换为强度更简单。
在通过 USB 发送图像之前,我还在图像中添加了一些信息,以帮助调试应用程序。这是我的视频在带有调试信息的 PC 端的外观:
停车助手所需的软件在parkasst.c文件中,基本上需要用YUV422图像的缓冲区调用。所以这很容易迁移到其他平台。然而,要复制整个项目,只需在 FRDM-K82F 板中加载项目中包含的 .bin 文件并按照项目中的说明添加 LED。
总结
这不算是一个尽如人意的项目。但是,还是有一些今后可以进行拓展完善的功能。这些是完成该项目的下一个功能步骤:
如果您对此项目有任何想法、意见或问题,请在下方留言。
以上内容翻译自网络,原作者:Inaki Zuloaga,如涉及侵权,可联系删除。
英特尔发布两款RealSense深度摄像头,型号分别为 D415 和 D435
2018-01-23
小孩也能玩转人工智能?-RISC-V加持下的AI机器人小车评测
2019-11-01
苹果公布了自己的无人车研究,VoxelNet的三维物体检测和识别技术
2017-11-24
机器视觉的下一个想象空间是嵌入式?
2016-09-05
先进的机器视识别技术:缩短系统响应时间,提高图像识别准确度
2020-07-30
[TED演讲]这套计算机视觉系统的准确率竟已达到99%以上
2019-07-30
[项目演示]基于机器视觉与BLE设备的共享单车管理系统
2019-08-07
狄泰软件学院唐老师的机器视觉课程(免费)
2020-07-21
讨论