手记

如何为计算机视觉项目挑选合适的2D相机

在我写完关于3D摄像头的文章和视频之后——最常被问到的是——“我应该为我的项目选择哪种2D摄像头?”
这个问题比看上去要复杂许多倍。在大多数我见过的系统中,“选择摄像头”是整个产品开发过程中的重要环节——与“数据收集”和“神经网络训练”一样重要复杂。

使用ChatGPT生成的封面图

为什么?
现在很明显,VLM和边缘模型方面的专长有所不同。同样的情况也适用于相机。无论是为了家庭开发低功耗相机,还是为了天文观测开发相机,他们采用的方法和解决方案也会有所不同。

所以,我得提前告诉你——这个指南并不旨在全面。我尽量只关注几个重要点。

  1. 选择摄像头的基本原则如下
  2. 主要的摄像头类型,占解决方案的95%
  3. 每种类型的几个示例摄像头适合初学者使用

在写文章和制作视频的过程中,我请了几位专家对这些问题提出批评意见并加入他们的观点。

  1. Pavel — Metacomerce 的 CTO。他在过去的二十年里一直专注于计算机视觉领域的工作,并在过去五年中为零售行业开发相机解决方案。
    他提出了文章的结构。
  2. Yuriy — VIT 的 CEO。他有二十五年的交通控制解决方案(包括硬件设计在内)开发经验,其中包括车牌识别及相关技术。
    他为文章增添了关于同轴连接器和小型电路板的大量信息。
  3. Andrey — ORI.team 的 CEO。在过去五年中,他一直在开发利用 IP 摄像机进行识别的工业系统。他也帮忙润色了文章的最终版本。

顺便提一下。另外,YouTube上也有一个相关视频。视频中,我还会举一些额外的例子,并分享了一些实用经验:

要旨逻辑

选择相机时,你需要评估几个关键功能,从整体上考量。

  1. 每秒你需要处理多少帧?每秒一帧就足够用来开停车罚单了,而评估眼睛的微颤动可能需要每秒500帧。这取决于相机的连接类型和连接速度,比如USB或以太网连接。
  2. 需要分析的空间体积、角度、分辨率、焦距等。这些特性受矩阵和光学的影响。
  3. 对光照的稳定性(光、动态范围等)
  4. 你在哪里进行处理(比如与相机在同一芯片上,在世界其他地方的服务器上等)?

为了估算这一点,我们来看看相机的这些功能吧。

选择相机的简短指南

相机连接:方式

USB、CSI和LAN是占摄像头95%的主要接口类型。我们稍后会详细讨论它们,这里先简单介绍一下其他的部分。这些接口在一定程度上是基于现有接口的封装,下面简单介绍一下这些接口。

  1. PCIe。许多接口,如USB,连接到PCI总线。然而,一些相机直接使用PCI总线。只有2-3家供应商提供这样的相机。通常,这些相机是超级高速的。
  2. GigE 是一种通过网络线缆和UDP通道传输的协议。它可以被视为LAN的一个子类型。然而,由于许多相机专门支持它,它通常被单独分类。
  3. CoaXPress(CXP) 是一种专门为机器视觉和其他需要高带宽和低延迟的应用而开发的高速数据传输标准。它基于串行通信协议,并使用同轴电缆作为物理媒介。
  4. GMSL 是汽车中使用的一种协议。但它也可以是CSI协议的封装。
  5. HDMI — 没有什么阻止你通过HDMI协议传输/捕获视频。例如,显示器可以通过该协议输出视频。
  6. FPD-Link — 一些相机具有这种类型的连接器。通常,它也使用现有的其他协议,例如CSI。
  7. 其他。当然,我并没有列出所有内容。还有一些模拟摄像头和其他无线协议。
接口速率.

每个接口都有两个主要参数:速度和信号延时。目前速度最慢的是旧摄像头(如 USB 2.0 等),速度最快的是那些使用了多个 PCIe 接口的设备。

延迟

相机离处理单元越远,信号经过的中间处理越多,你的结果输出就越晚。

光学设计

我们可以没完没了地聊光学,不过咱们重点关注主要特点,

  1. 焦距(视角的一个组成部分)
  2. 光圈大小(控制进光量)
  3. 镜头机制(比如变焦、自动对焦)
  4. 抗眩光处理
  5. 滤镜(如偏振、彩色等)
矩阵

矩阵的主要特点:

  1. 矩阵尺寸。像素数量像素尺寸(像素越大,感光能力越强,噪点越少。像素越多,分辨率就越高。更大的矩阵则需要更大的、更昂贵的镜头。
  2. 传感器类型。这会影响信息读取方式、光线敏感度和动态范围。CCD 是一种较老的技术,但有时会使用,特别是当需要最大敏感度时。CMOS 目前是主流技术。不过它有很多技术(前照式 是一种较旧的格式,其中逻辑电路和感光元件在同一面)。背照式——这种技术大约在15到20年前出现。在这种格式中,感光元件在一侧,而逻辑元件在另一侧。堆叠式——这种技术将矩阵分为多层。例如,每一层可以捕捉特定的波长。
  3. 光谱特性——这描述了传感器对不同波长光线的感应能力。
  4. 其他参数(如矩阵机械性能和主动冷却等)
其他材料

此外,一些相机自带照明系统;有时候,你需要决定是自己搭建照明系统还是使用现有系统。

此外,对于某些应用来说,选择快门类型非常重要。全局与滚动快门。全局快门可以让所有像素同时曝光。另外,机械快门在一些相机中仍然可用(例如在天文摄影中)。但这种情况比较少见。

一些相机内置了用于图像处理的CPU、NPU或GPU,而对于另一些相机,则需要借助其他设备。

来自Luxonis的一个相机,例如这个链接

USB

简短的USB网络摄像头指南

好的地方

第一个优点是预处理在摄像头上进行。一些USB摄像头可以直接传输原始图像,但大多数摄像头会传输已经处理和压缩过的图像。这允许你最大限度地利用信道宽度。
第二个优点是大多数USB摄像头是“即插即用”。它们在Windows、大多数Linux系统、MacOS、Android等系统中可以开箱即用。
第三个优点是可用性。USB摄像头在附近的商店里可以买到。当然,并不是所有的USB摄像头都这么容易买到,但这在大多数情况下都是适用的。
第四个优点是USB 3是一个相当快的协议。尤其是考虑到压缩的因素。

不足之处

首先的缺点是较短的电缆长度。相机出厂时最有可能是这样的。

  1. 这根线缆大约一米长。
  2. 如果线缆质量很高,那么在最好的情况下可以长达两米。
  3. 带有主动放大功能的线缆大约可以达到五米。
  4. 光纤线缆可以长得多,但其价格通常与一台好相机相当。例如,这种线缆可以达到最长100米,价格大约是330美元。

你准备好一条比相机还贵的数据线了吗?图片来源:https://www.techly.com/usb3-0-superspeed-aoc-fiber-optic-cable-usb-a-m-f-10m-black.html

第二个缺点。普通的摄像头会有较大的延迟,而且可能不稳定。

第三个难题。有时候,找到一款符合要求的现成相机不容易。

第四点缺点是司机可能不稳定。最近这方面的状况有所好转。但是大约六七年前,司机在Jetson上可能会卡住,需要重启系统来解决问题。

什么时候用

在我看来,USB摄像头超级好,非常适合快速原型制作。它们可以快速连接并大大减少因驱动和编解码器导致的问题。

很多时候,小型的室内或工厂解决方案通常使用USB摄像头,当价格在200到300美元之间时,摄像头的价格已不再是关键因素。

USB摄像头能够提供高帧率和高质量的图像。
总的来说,当USB摄像头“快”且“好”时,表现不错,但价格较贵。

例子

几个可以用于项目中的USB摄像头的例子。
第一个选择。价格便宜,购买方便,适合学生项目、测试算法等用途,质量很好 — Logitech C270(Logitech C920/C922 的分辨率和帧率更高)

罗技C270高清网络摄像头,更多信息请访问:https://www.logitech.com/no-no/products/webcams/c270-hd-webcam.960-001063.html

第二个选项。比较贵,质量上乘,功能强大,接口丰富,驱动和镜头都很好用 — Basler相机。我们2016到2021年间用它们用得很多,真心不错。

https://www.baslerweb.com/

第三个选项。好的中国相机——Vision Datum。一般来说,它涵盖了Basler大多数的功能。但软件和设计都稍微差点。等等。

这个网站提供了大多数的相机https://www.visiondatum.com/en/product.html

第四种选择。超迷你USB板(12)。如果你想自己动手做相机,它们很不错。

这个东西是从这儿来的 — https://www.teledynevisionsolutions.com/products/blackfly-s-board-level/?segment=iis&vertical=machine%20vision(Blackfly S 板级产品)

CSI

关于CSI摄像头的简短指南

以下好的地方

最可配置的协议是CSI。你可以使用不同数量的线路或不同的传输方式。无论是最快的还是最慢的相机,都使用CSI协议。
相机传输原始信息——这允许你自己预处理图像。此外,它也是最快的协议。因此,你可以找到一个适合你的任务的相机。
有许多相机供应商。此外,基于CSI协议的连接器种类繁多。

不太好的地方

有限的长度。这可以通过同轴连接器部分解决,但这会增加系统的复杂性和成本。人们通常在大多数日常应用中保持在30厘米的主要范围内。但是很难找到超过10米的线缆。
如果你的电路板没有专门的图像编码芯片,你必须在处理器上进行编码。这会额外增加处理器的负载
如果你深入到较低层次,你将需要更多的时间来开发。
CSI摄像头不一样。它们需要摄像头和电路板之间的相互校准。如果使用任意摄像头和电路板,它们可能无法直接使用。

什么时候用

当你需要完全掌控系统,当你需要实现最低的生产成本但又不想构建自己的矩阵,或者最终设备应该很小(这可以通过USB实现,但使用CSI将有更多选择)。
此外,如果你还在设计自己的电路板——使用CSI是一个相当合乎逻辑的选择。

例子

当然,有一些经典的案例,比如大家都常使用的RPi摄像头 — 它适用于许多主板。

最受欢迎的相机之一 —— 这款相机模块:https://thepihut.com/products/raspberry-pi-camera-module-3

在Nvidia的网站上,你可以找到很多与Jetson配合使用的相机。详情请参见这里:详情请参见这里

基于GMSL2技术的相机来自e-Con Systems — https://www.e-consystems.com/nvidia-cameras/jetson-agx-orin-cameras/ar0234-fhd-gmsl2-global-shutter-camera.asp

这里还有一份详尽的相机列表,例如这里

约500美元的相机来自这里。这个相机是金色的吗?

局域网

简短的局域网摄像头使用指南

好的一面

一个清晰的协议,适用于所有设备。相比USB,出现问题的机会要少得多。内置很多实用功能:相机可以放在世界的另一端。支持多播。
市面上有很多摄像头。你可以找到优质的镜头、良好的照明和得当的滤镜。
你可以找到优质的外壳保护。具备加热和防雾功能,可以防尘防水。
你可以实现全方位控制:旋转、变焦、指向和对焦。

不足之处

高延迟,远高于USB/CSI。通常要比USB和CSI贵很多。便宜的型号几乎没有可调设置,画质可能也不佳。

你基本上是在买一个盒子。不能调整内部算法。除非你是相机开发者。
你需要一套网络基础设施。你很可能需要一个路由器来搭建网络。

什么时候该用:

当延迟不重要时。当用户众多时。如果摄像头已经安装,算法需要在现有摄像头运行。如果有一个中央计算机来计算所有内容。工作环境充满挑战时。

例子

说到贵的相机,Moxa 和 Axis 还是比较有名的。

Moxa 摄像头

HikVisionDahua

某个Dahua摄像头。

你可以去Aliexpress上找便宜的摄像头。但记得,对一些人而言,甚至接收视频流信号都是一个问题。我2-3年前选的摄像头现在都买不到了。同一供应商的摄像头也可能有的不兼容。

概要:

对“我应该选择哪一台相机?”这个问题,并没有简单的答案。即使是顶级的公司也经常进行很多试验。
因此,最好的办法是花更多时间研究这个问题。完成这些后:

  1. 列出物理和法律要求的表格。
  2. 选择光学配置 + 光源 + 电源。
  3. 选择连接方式及协议。
  4. 如果有几种可能的摄像头,测试它们并选择最优或最简解决方案。

在等待你梦想中的相机到来的同时,可以先用一些便宜的USB/LAN相机来做实验。

还有问题没?那我们就来讨论一下吧!

当然,如果你想了解我有关计算机视觉板块的文章,订阅我的LinkedInYouTubeTwitter! 如果你有任何问题,你可以在评论区留言或者通过电子邮件 (anton@rembrain.ai) 询问(或者我们可以咨询一下你的问题)。

0人推荐
随时随地看视频
慕课网APP