第二讲:视觉系统核心组件拆解

各位工程师朋友,咱们今天来聊聊视觉系统的那些核心零件。说白了,一个嵌入式视觉系统就像一个人的眼睛加大脑——摄像头模组是眼睛,ISP是视觉神经,编解码器是记忆存储,而算力和带宽就是整个系统的体力。

我这些年做项目,见过太多人上来就选芯片、挑摄像头,结果系统跑起来才发现瓶颈在别处。嗯,今天咱们就把这些组件一个个拆开看。

一、摄像头模组:CMOS vs CCD

先说说最前端的传感器。现在市面上主流就两种:CMOS和CCD。

参数 CMOS CCD
功耗 低(约CCD的1/10)
读出速度 快(支持全局快门) 慢(卷帘快门为主)
噪声 较高(但近年改进很大) 低(画质纯净)
成本
应用场景 嵌入式、消费电子、工业 科研、天文、高端医疗

我个人习惯,做嵌入式视觉系统首选CMOS。为什么?功耗低、集成度高、接口灵活。我在一个工业检测项目里用过CCD,画质确实好,但发热量惊人,散热方案比传感器本身还贵。后来全换成CMOS了,效果完全够用。

选型小技巧: 关注「量子效率」和「动态范围」这两个指标,比单纯看像素数重要得多。我见过有人拿2000万像素的传感器做低光照检测,结果噪点比信号还大。

二、ISP:图像信号处理器

传感器出来的原始数据叫RAW,说白了就是一堆电压值。ISP就是把这些电压值变成你能看到的漂亮图像。

ISP的核心处理流程包括:

  • 黑电平校正——去掉暗电流噪声
  • 去马赛克——把Bayer阵列插值成RGB
  • 白平衡——让白色看起来是白色
  • 降噪——我踩过坑,降噪太强会丢边缘细节
  • 锐化——适度就好,过头了会有光晕

我曾经在一个项目里,为了省成本用了CPU做软件ISP,结果1080p@30fps就把CPU占满了,算法根本跑不动。后来换成硬件ISP,CPU占用直接降到5%。

注意: 不是所有ISP都支持HDR和宽动态。如果你做车载或户外项目,一定要确认ISP的HDR能力。我吃过这个亏,白天树荫下拍出来的东西一片死黑。

三、编解码器:压缩与传输

原始视频数据有多大?我算给你看:1080p@30fps,RGB888格式,每秒数据量是1920×1080×3×30 ≈ 186MB/s。这还没算音频。不压缩的话,存储和传输都是噩梦。

常见的编解码标准:

  • H.264——兼容性好,但压缩率一般
  • H.265/HEVC——比H.264省一半码率,但编码器贵
  • MJPEG——每帧独立压缩,适合抓拍场景

选编解码器时,我建议你关注两个数字:编码延迟码率控制精度。做实时控制的话,编码延迟超过一帧就会出问题。我记得有个项目,用了软件编码延迟50ms,机械臂抓取总是慢半拍,换成硬件编码器后延迟降到5ms,问题就解决了。

四、内存带宽:被忽视的瓶颈

很多人选芯片只看算力,不看内存带宽。这是个常见的坑。

举个例子:你要处理4K@60fps的视频,假设每个像素做3次访存操作(读RAW、写中间结果、读最终结果),那么内存带宽需求是:

3840 × 2160 × 3字节 × 60fps × 3次访存 ≈ 4.5 GB/s

这还只是图像数据。加上神经网络权重、中间特征图、系统开销,实际带宽需求轻松翻倍。

我见过一个团队,选了算力很强的芯片,但内存带宽只有12.8GB/s(LPDDR4单通道),结果跑YOLOv5s的时候,推理时间80%都花在等数据上。后来换成双通道LPDDR4x,带宽翻倍,帧率直接提升40%。

经验公式: 视觉系统的内存带宽需求 ≈ 分辨率×帧率×像素深度×3(保守估计)。如果做AI推理,再加50%的余量。

五、算力需求估算

算力这东西,说起来玄乎,其实可以量化。我一般用TOPS(Tera Operations Per Second)来衡量。

估算方法分两步:

  1. 传统视觉算法:比如Canny边缘检测、光流法,每帧大约需要0.1-1 GOPS(Giga Operations)
  2. 深度学习推理:这个是大头。以YOLOv5s为例,输入640×640,一次推理约需16.7 GFLOPs(Giga Floating Point Operations)

算个总账:

假设你要跑YOLOv5s在30fps:
算力需求 = 16.7 GFLOPs × 30fps = 501 GFLOPs ≈ 0.5 TOPS

加上预处理、后处理、系统开销:
实际需求 ≈ 0.5 TOPS × 1.5(余量)= 0.75 TOPS

嗯,看起来不高对吧?但注意,这是浮点运算。如果你用INT8量化,算力需求可以降到1/4左右。我建议你选芯片时,算力留出2-3倍余量,因为算法迭代很快,今天够用明天可能就卡了。

避坑指南: 我曾经选了一款标称4 TOPS的芯片,结果发现那是稀疏算力,实际稠密算力只有1.2 TOPS。所以看芯片手册时,一定要看清楚是「稠密算力」还是「稀疏算力」,两者差好几倍。

六、组件间的匹配关系

最后说一句,这些组件不是孤立的。摄像头输出数据给ISP,ISP处理后给编解码器或直接进内存,然后CPU/GPU/NPU从内存取数据做处理。任何一个环节慢了,整个系统就卡。

我常用的匹配原则:

  • 摄像头输出带宽 ≤ ISP输入带宽
  • ISP输出带宽 ≤ 内存带宽的30%(留余量给其他任务)
  • 编解码器吞吐量 ≥ 摄像头帧率
  • 算力需求 ≤ 芯片标称算力的60%(留余量)

说白了,木桶效应在视觉系统里特别明显。你算力再强,内存带宽不够也是白搭。你摄像头再好,ISP处理不过来也是浪费。

好了,这一讲就到这里。下一讲咱们聊聊英伟达的Jetson系列,看看这些组件是怎么在具体芯片上落地的。