5个最常用的传统计算机视觉方法

在本文中,我将向你展示最常用的传统计算机视觉方法,提供示例,并告诉你如何使用这些算法,以及在什么情况下应该和不应该使用它们。

5个最常用的传统计算机视觉方法
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI工具导航 | ONNX模型库 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

我第一次听说"计算机视觉"这个词是在3年前,自那时起一切都变了。那时候,我开始学习传统计算机视觉:图像处理、特征提取、特征匹配、相机标定、目标跟踪等等。如今,刚开始学习计算机视觉的人们不再关注这些主题,因为每周都有新的深度学习模型发布,所有的热议(想想SAM3引发的热潮)都集中在这些模型上。也许这不是坏事,因为没有人想落后。但要真正理解计算机视觉,传统计算机视觉仍然很重要。

在本文中,我将向你展示最常用的传统计算机视觉方法,提供示例,并告诉你如何使用这些算法,以及在什么情况下应该不应该使用它们。

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

我想我们都同意深度学习方法功能强大,更适合大多数任务,但传统计算机视觉仍有其用武之地。这些模型很棒,但它们需要大量的计算能力。而且你不必在每个任务中都使用深度学习模型,结合图像处理、不同的滤波器和其他传统CV方法,你可以计数物体、过滤物体、检测运动。

所以,你仍然可以将传统CV用于简单任务。好的,现在我将介绍不同的传统计算机视觉方法,对于每个部分,我在个人博客网站上都有专门的文章进行详细讲解。我会分享每篇文章的链接。

2、图像处理

我觉得处理图像非常有趣,一个接一个地应用不同的滤波器,改变参数,尝试不同的组合。你知道我有一个项目,将棋盘图像转换为数字国际象棋格式(FEN),为此我使用了很多滤波器。第一个任务是检测棋盘,所以我用OTSU阈值创建了二值图像,用Canny边缘检测检测边缘,用HoughLines找到线条。即使只用几个滤波器,结果也令人惊叹。只需查看下面的图表,看看这些滤波器是如何一个接一个使用的。

你可以在GitHub仓库查看代码。

3、特征提取

当你看到一张图像时,你会看到很多颜色、不同的形状、不同的图案。实际上,有些部分与某些特征相同,比如代表人眼的特定像素块,或特定物品的边缘。所以,我们的想法是找到这些独特的点(关键点),并将它们用于不同的应用,如:目标跟踪(不完全是跟踪,你马上会看到)、图像匹配、图像拼接……

我有很多文章使用相同的逻辑:

  1. 用户在目标物体(人、飞机等)周围画一个矩形
  2. 从那个特定区域,提取关键点和描述符
  3. 读取视频,并为每一帧提取关键点和描述符。将这些描述符与第2步的描述符进行比较,如果它们匹配超过某个阈值,就高亮显示那个点(特定特征)

当然,这不是跟踪物体的正确方式,它更像是特征匹配,所以这只是一个给你的想法 :)

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

你可以将关键点检测器与卡尔曼滤波器结合来预测运动:

前两部分是通用主题,但传统计算机视觉当然不止这些,还有更多内容。现在,我将讨论更具体的内容,并尝试给你一些想法,以便你可以使用传统计算机视觉创建不同的东西。

4、背景减除器

这个想法很简单,假设你有移动物体,而你的背景是静止的(或接近静止)。通过比较连续的帧,你可以检测运动。

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

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

5、透视变换

现在假设你想创建一个移动应用程序,使用OCR工具从图像中提取文本,使用Google翻译API翻译提取的文本,并使用NLP模型进行摘要。你将应用发布到Google Play商店,有人开始使用它。但他们用手机拍摄的照片并不完美,方向不正确。使用透视变换,你可以调整方向,让你流程的其余部分更好地工作。

或者回到国际象棋项目(图表),检查第4步。你会看到我试图解释的内容。同样,你可以阅读下面的文章。

6、如何使用颜色信息

颜色信息可能会有帮助。如果我们的目标物体有单一颜色(红苹果、白球、灰勺子),我们可以利用这一点。毕竟,这些颜色代表某些数字,如(255,255,255)代表白色。我们可以根据它们的值过滤这些颜色,我们可以在场景中计数特定物体,甚至检测它们。我创建了一个简单的GUI来演示这一点,你可以阅读它。


原文链接: Classical Computer Vision is Dead?

汇智网翻译整理,转载请标明出处