扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

传统计算机视觉已死?

01/28 09:22
292
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

我第一次听到“计算机视觉”这个词是在三年前,那时情况已经大不相同了。那时,我开始学习经典的计算机视觉知识:图像处理、特征提取、特征匹配、相机标定、目标跟踪等等。如今,刚开始学习计算机视觉的人往往忽略这些内容,因为每周都有新的深度学习模型发布,而所有的热度(想想SAM3引发的热潮)都集中在这些模型上。也许这并非坏事,毕竟谁也不想落后。但对于理解计算机视觉的整体概念而言,经典的计算机视觉知识仍然至关重要。

在本文中,我将向您展示最常用的经典计算机视觉方法,给出示例,并向您展示如何使用这些算法,以及何时应该和不应该使用这些算法。

何时使用传统计算机视觉?

我想我们都同意,深度学习方法功能强大,更适合大多数任务,但传统的计算机视觉仍然有其用武之地。这些模型固然出色,但它们需要大量的计算资源。而且,你并非必须对所有任务都使用深度学习模型,将图像处理和不同的滤波器与其他传统的计算机视觉方法相结合,就可以进行物体计数、物体过滤和运动检测等操作。因此,对于简单的任务,你仍然可以使用传统的计算机视觉方法。好的,接下来我将介绍几种不同的传统计算机视觉方法。

图像处理

我觉得玩图像处理真的很有趣,可以逐一应用不同的滤镜,调整参数,尝试各种组合。你知道我之前做过一个项目,把棋盘图像转换成数字国际象棋格式(FEN),为此我用了很多滤镜。首先是检测棋盘,所以我用OTSU阈值法创建了二值图像,用Canny边缘检测法检测边缘,用HoughLines算法找到线条。即使只用了几个滤镜,结果也很棒。看看下面的图表,就能明白这些滤镜是如何逐一使用的。

特征提取

当你看到一张图片时,你会看到很多颜色、不同的形状和图案。实际上,某些部分与某些特征是相同的,例如代表人眼的特定像素块,或者代表特定物体的边缘。因此,我们的目标是找到这些独特的点(关键点),并将它们用于各种应用,例如:物体跟踪(严格来说并非跟踪,稍后会解释)、图像匹配、图像拼接……

我写过很多文章,都运用了同样的逻辑:

用户在目标物体(人、飞机等)周围绘制矩形。

从该特定区域提取关键点和描述符。

观看视频,提取每一帧的关键点和描述符。将这些描述符与步骤 2 中的描述符进行比较,如果匹配度高于某个阈值,则高亮显示该点(特定特征)。

当然,这并不是追踪物体的正确方法,它更像是特征匹配,所以这只是一个思路供你参考 :)

对于特征提取,您可以使用关键点检测器,例如FAST、Harris 角点检测器或 Shi-Tomasi 角点检测器,来查找图像中的独特点。检测到这些点之后,您可以使用SIFT、SURF、ORB 和 BRIEF等描述符来匹配这些关键点。

前两部分是一些概括性话题,但经典计算机视觉当然远不止这两点,它涵盖的内容非常广泛。接下来,我将探讨一些更具体的内容,并尝试提供一些思路,以便大家能够运用经典计算机视觉技术创造出不同的应用。

背景减除器

思路很简单,假设画面中有移动的物体,而背景是静止的(或接近静止的)。通过比较连续的帧,就可以检测到运动。

OpenCV中有两种不同的背景减除器:

  • K近邻算法(KNN)
  • 高斯混合模型(MOG2)

视角转换

假设你想开发一款移动应用,它使用OCR 工具从图像中提取文本,使用Google Translate API翻译提取的文本,并使用 NLP 模型生成摘要。你已将应用发布到 Google Play 商店,并且有人开始使用它。但是,他们用手机拍摄的照片并不完美,方向不正确。使用透视变换,你可以调整照片方向,从而使后续流程更好地运行。

或者回到国际象棋项目(图表),查看步骤 4。您就会明白我的意思了。您也可以参考下面的文章。

如何使用颜色信息

颜色信息非常有用。如果目标物体只有一种颜色(例如红苹果、白球、灰勺),我们可以利用这一点。毕竟,这些颜色都代表着某个数值,例如白色对应的数值是 (255,255,255)。我们可以根据这些数值来筛选颜色,从而统计场景中的特定物体数量,甚至检测它们。

总 结

总而言之,尽管深度学习在计算机视觉领域取得了巨大成功,传统方法依然在特定场景下展现出独特优势。它们计算开销小、可解释性强,且在数据有限或任务简单时往往更加高效可靠。掌握经典技术如图像滤波、特征提取、背景建模和透视变换,不仅能夯实基础,还能在实际项目中灵活应对各种挑战。对于初学者而言,理解这些方法有助于建立对视觉系统的整体认知;对于从业者来说,则是在复杂系统中进行模块优化与故障排查的重要工具。因此,在拥抱新技术的同时,切勿忽视这些历经时间检验的经典智慧。

相关推荐