5.比赛中的CV算法
讲了这么多,视觉组的重头戏——算法终于来了。
在大部分时候我们都不需要设计底层的算法,而是直接调用封装好的API,设计更具体的应用于特定问题的算法。当然,有必要了解一下造轮子(底层算法的实现)的过程,这能够让我们深入理解算法内部的构造,从而更好地使用这些算法,出错的时候也能更快定位问题。如果只是调用API而不了解原理,那么只是简单的缝合+搭积木,对于提升自我的思考能力和逻辑思维没有任何帮助。应当要有“使用科技的黑箱会使我惶惶不安” 的觉悟。
我们最常用的OpenCV和一些神经网络模型都是开源的,它们都有优秀的注释和说明文档,尤其是OpenCV的Documentation和Tutorial十分详细,全是使用doxygen生成的标准文档系统。通过阅读这些材料,很快就能上手。在GitHub社区你可以提出Issues,和其他开发者一起讨论问题。
5.0.CV的常识性概念
计算机视觉是让机器拥有视觉同时让机器能够理解所看到的东西并对其进行一定的分析和处理的研究领域。目前主要分为图像识别、图像分割、图像生成、目标检测、目标追踪、视频处理 等,因为有着共通的根基和大量知识交叠,其实很难将他们分得太开。此部分就主要介绍最基本的概念:
-
图像的构成
-
像素:像素是构成图像的基本单元,像素通过行列组合成矩阵就形成了图像。在计算机中一般都以矩阵的形式存储图像。若仔细观察你的手机或电脑屏幕,应该能看到微小的由红绿蓝三色组成的发光单元。当像素密度足够高,人眼就会认为一张图片是连续的了。在图像处理的过程中,我们常把图像视作一个二元函数(如果是灰度图的话),在两个坐标轴上,亮度随坐标而变化。当图片是彩图时,下面会介绍颜色空间的概念。

一张皮卡丘的图片,由一个个像素点构成。
-
像素深度:自然届中的颜色固然是连续的,但是在计算机中存储的数据是离散的。存储一个像素所使用的位(bit)数叫做像素深度,可以看作图像在某一点取值的值域。常听说的8位宽颜色就是用8位数据表示一种颜色,存储一个像素使用的位数越多,其能保存的信息就越丰富,主要表现在能显示的色彩的数量和对比度上。

各中位深度图像的对比,显然24位深度的图像最能还原真实的场景,逼近连续的情况
图片源自csdn-[丁香树下丁香花开](https://blog.youkuaiyun.com/csdn66_2016),侵删
-
通道数和颜色空间:当一张图像只有一个通道的时候,他只能表示一个维度的信息,比如这张灰度图,在唯一的一个亮度(灰度)通道中保存。
一张以灰度图形式展现的英雄机器人
当一张图片想要以彩图的形式保存,它至少需要三个通道,即Red Green Blue(RGB),每个通道都是一个矩阵,矩阵中的每一个元素保存着0~255的值,对应不同的颜色分量。仔细观察下图就会发现,原图中呈现蓝色的部分在蓝色通道中比其他通道要更亮,比如机器人后轮下方的一片蓝光,在红色通道中就几乎没有分量存在。

图片被拆分为三个通道
除了RGB空间,还有其他不同的颜色空间如HSV、YUV、LAB等,他们都是把图片投影到不同的空间中,图片在这些空间中的每一个坐标轴的投影,就是它在这个方向上的分量(和线性代数中概念的具象)。
RGB空间的坐标轴-来自百度百科

HSV空间的坐标轴(柱坐标系)
-
图像的压缩编码方式:为了达到减少空间占用的目的,我们会通过某种算法将图像进行压缩。存储图片时格式一般有bmp,jpg,png,tif,gif等。不同格式图片的解码速度和占用空间大小不同,有时候甚至是算法时间占用中的关键
-

本文详细介绍了计算机视觉的基本概念,包括图像的像素、颜色空间、图像压缩等,并探讨了图像识别、目标检测、图像分割和目标跟踪等核心任务。重点讲解了OpenCV库,包括其基本数据类型、图像处理模块如滤波、形态学操作,以及视频处理、相机标定等。此外,还提到了OpenCV中的机器学习模块和目标追踪模块,对于开发者来说,是深入了解和使用OpenCV的重要参考资料。
最低0.47元/天 解锁文章





