/ 消息 / Arduino 合作伙伴

Arduino 合作伙伴

嗨伙计,

今天我们有一个重大更新。过去几个月我们做了很多工作,并且发布了一些重大公告。第一的...

OpenMV 现已成为 Arduino 官方合作伙伴!

恩,那就对了! OpenMV 现已与 Arduino 合作,支持具有计算机视觉功能的 Arduino Portenta H7!

这实际上是在上月初宣布的,但是,我们一直忙于撰写更新电子邮件。鉴于此,如果您想及时了解任何公告,我们鼓励您在Twitter上关注我们,我们可以更快地发布我们正在考虑的任何内容。

不管怎样,通过这次合作,我们将与 Arduino 密切合作,提高 OpenMV 库的性能,包括我们的固件对以太网、SDIO WiFi、DisplayPort 等的支持!

特别是,通过 Arduino Portenta H7,我们启用了音频支持,以便在 MicroPython 中使用 TensorFlow 对声音进行分类。

OpenMV PureThermal

接下来,除了与 Arduino 合作之外,我们还与GroupGets合作开发 OpenMV PureThermal 板。这是迄今为止最先进的 OpenMV Cam。其特点:

  • STM32H743XI 芯片具有 168 个 I/O,我们使用了每一个!
  • 具有自动对焦功能的 OV5640 5MP 模块
  • FLIR Lepton 3.5(与 OV5640 并行运行)
  • 一个美元卡插槽(25 MB/秒)
  • 64 MB 32 位 SDRAM,100 MHz (400 MB/s)
  • 32 MB 四路 SPI 闪存(50 MB/秒)
  • 32 KHz 晶体用于在深度睡眠时进行 RTC 操作
  • 1S Lipo 支持 USB 电池充电
  • 电池电压和系统电流监控
  • WINC1500 WiFi 支持(12 Mb/s)
  • USB FS(12 Mb/秒)
  • 800x480 IPS LCD 多点触摸屏,带背光调光功能
  • 通过 HDMI 连接器支持 DVI(30 Hz 时高达 1080p)
  • SparkFun QWIIC(兼容 SEEED Grove)
  • RGB LED + 闪光灯 LED 支持
  • 蜂鸣器支持(上图中未显示)
  • 并且...相同的 OpenMV 排针用于扩展支持

OpenMV Pure Thermal 的设计特别谨慎。板上的所有外部连接器都有 TVS 二极管,我们在 DVI 等高速接口上使用射频扼流圈 输出。此外,当主处理器关闭时,我们确保将板上的所有 I/O 引脚连接到正确的状态,以便您实际上可以将电池模式下的功耗降低到低于 1mA 的范围。

这是我们在进行电路板启动时 LCD 工作的演示。

接下来,我们计划在明年初推出 OpenMV PureThermal。请继续关注有关该产品的更多更新。请注意,我们设计 OpenMV PureThermal 是为了满足企业的需求,因此,我们专注于为其提供功能,而不是试图保持较低的价格。但是,它应该具备您构建自己的具有强大功能的专业热成像相机所需的一切。

良好的扩展支持终于来了!

很长一段时间以来,我们都没有提供像样的扩展支持。然而,我们刚刚集成了一个新的双线性/双三次缩放管道。这实际上是一段巨大的代码,其中包含针对二值、灰度和 RGB565 图像的最近邻、双线性、双三次和区域缩放的优化循环。此外,缩放完成后,我们有一个紧密优化的循环,用于使用 alpha 和/或 alpha 查找表和/或颜色查找表和/或 RGB 通道提取在二进制、灰度或 RGB565 上绘制缩放图像图片。最后,我们利用 DMA2D 支持,在处理器缩放图像时处理后台混合。

所有这些代码都会产生以下性能数据(启用 DMA2D):

性能数字 (4x4 -> 128x128) - 最近邻:

RGB565 上的二进制绘制 - 4200 FPS
RGB565 上的灰度绘制 - 4500 FPS
RGB565 在 RGB565 上绘制 - 6000 FPS

灰度二进制绘制 - 6000 FPS
灰度 在灰度上绘制 - 10000 FPS
RGB565 在灰度上绘制 - 4000 FPS

BINARY 在 BINARY 上绘制 - 7000 FPS
在二进制上进行灰度绘制 - 6000 FPS
RGB565 在二进制上绘制 - 3400 FPS

性能数字 (4x4 -> 128x128) - 双线性:

RGB565 上的二进制绘制 - 1310 FPS
RGB565 上的灰度绘制 - 1140 FPS
RGB565 在 RGB565 上绘制 - 1080 FPS

灰度二进制绘制 - 1390 FPS
灰度 在灰度上绘制 - 1900 FPS
RGB565 在灰度上绘制 - 670 FPS

BINARY 在 BINARY 上绘制 - 1360 FPS
在二进制上进行灰度绘制 - 1050 FPS
RGB565 在二进制上绘制 - 573 FPS

数字 (4x4 -> 128x128) - 双三次:

RGB565 上的二进制绘制 - 757 FPS
RGB565 上的灰度绘制 - 850 FPS
RGB565 在 RGB565 上绘制 - 535 FPS

灰度二进制绘制 - 785 FPS
灰度 在灰度上绘制 - 1200 FPS
RGB565 在灰度上绘制 - 414 FPS

BINARY 在 BINARY 上绘制 - 776 FPS
在二进制上进行灰度绘制 - 798 FPS
RGB565 在二进制上绘制 - 373 FPS

这意味着您可以将灰度 160x120 图像(例如 FLIR Lepton 3.5 图像)放大到 640x480(比 128x128 多 18.75 个像素)并实现:

最近邻:240 FPS
双线性:60 FPS
双三次:45 FPS

在 OV5640 的 RGB565 图像上绘图时。

甜的。

为了获得这种性能水平,我们在Larry Bank的帮助下深入研究了代码优化。 Cortex-M7 上 SIMD 指令的大量使​​用使这种性能成为可能。展望未来,我们将不再保留任何表现。我们将开始尽可能多地利用 STM32 硬件,并编写更多 SIMD 双泵代码。

一旦我们有时间,我们将使用 SIMD 技巧更新lens_corr() 和rotation_corr()。

最重要的是,请注意此代码可以工作并加速所有 OpenMV 摄像头。不仅是H7,还有M4和M7。

更好的 LCD 支持

最后,感谢 Arduino 和 GroupGets 的支持,我们将回顾旧代码并大规模更新性能。

通过最新的更新,LCD 模块现在支持任何分辨率的 SPI LCD 屏幕,并具有三重缓冲支持(如果启用此功能并花费 RAM),这完全将更新 LCD 屏幕的过程与其上的绘图分离。我们为 OpenMV PureThermal 的 800x480 24 位并行 LCD 开发了三重缓冲代码。但是,我们也决定改进旧的 SPI LCD 支持。此外,由于我们现在有了缩放支持,因此我们决定将新的缩放管道集成到 LCD 代码中,以便您现在也可以无缝地放大和缩小在 LCD 屏幕上绘制的图像。

这些相同的改进也将很快出现在电视模块上。

无论如何,这就是大家!请在Twitter上关注我们并在GitHub上赞助我们。