目录
1.背景
2.早期计算机视觉框架
3.当前主流框架
4.计算机视觉框架的未来趋势
5.知识笔记
1.背景
俗话说“工欲善其事必先利其器”,想要学好计算机视觉,需要借助于相关的计算机视觉库,这样在进行学习的时候可以达到事半功倍的效果。
2.早期计算机视觉框架
- MATLAB
MATLAB(矩阵实验室)是一种高级的数学计算和科学编程语言,广泛用于工程、科学和术领域。它提供了一种快速、方便和可靠的方式来执行数值计算、可视化和数据分析。最早历史可以追溯到1970年,开始是仅作为数据处理工具箱,后期支持图像处理。
以下是 MATLAB 的一些主要特点和功能:
1.数值计算和算法:MATLAB 提供了丰富的数学和科学计算函数,可以进行矩阵和向量运算、线性代数、数值优化、微积分、概率统计等。
2.可视化和绘图:MATLAB 提供了强大的绘图和可视化功能,可以创建二维和三维图形、动画、插值和曲线拟合等。
3.数据分析和处理:MATLAB 提供了丰富的数据处理和分析工具,可以进行数据清洗、特征提取、模式识别、信号处理等。
4.编程和脚本语言:MATLAB 是一种高级的编程语言,支持脚本化和函数化编程,可以编写复杂的算法和程序。
5.应用开发和部署:MATLAB 提供了应用程序开发工具包,可以创建独立的应用程序、用户界面和部署到不同的平台上。
6.教育和学术研究:MATLAB 是教育界和学术研究领域中广泛使用的工具,用于教学、科研、数据分析和模拟。
MATLAB 的优点包括易于学习和使用、强大的数值计算功能、丰富的工具箱和扩展库、活跃的社区支持等。它被广泛应用于工程、科学、金融、医学等领域,用于解决各种复杂的问题和任务。MATLAB 提供了许多图像处理函数和工具箱,用于处理、分析和操作图像数据。以下是一些常见的图像处理函数和相关工具箱:
1.图像读取和显示函数:
- imread:读取图像文件
- imshow:显示图像
- imwrite:保存图像
2.图像预处理函数:
- imresize:调整图像大小
- imrotate:旋转图像
- imcrop:裁剪图像
- imadjust:调整图像的对比度和亮度
- imfilter:应用各种图像滤波器
3.图像增强和滤波函数:
- histeq:直方图均衡化
- medfilt2:中值滤波
- imsharpen:图像锐化
- imnoise:添加噪声
4.图像分割和边缘检测函数:
- im2bw:图像二值化
- edge:边缘检测
- bwlabel:图像标记和分割
- regionprops:提取图像区域属性
5.图像特征提取函数:
- corner:角点检测
- hough:霍夫变换
- detectSURFFeatures:SURF特征检测
- extractHOGFeatures:HOG特征提取
6.图像配准和重建函数:
- imregtform:图像配准
- imwarp:图像变换
- imfuse:图像融合
7.相关工具箱:
- Image Processing Toolbox:提供了丰富的图像处理函数和工具
- Computer Vision Toolbox:提供了计算机视觉和图像分析的函数和工具
- Deep Learning Toolbox:提供了深度学习和神经网络的函数和工具
- Maxtrox mil
Maxtrox MIL(Multiple Instance Learning)是一种计算机视觉库,1993年发布的第一个版本,用于解决多实例学习问题。多实例学习是一种监督学习的方法,其中训练数据被组织为实例袋,每个实例袋包含一个或多个实例。与传统的监督学习不同,多实例学习的目标是学习一个模型,能够对整个实例袋进行分类,而不是对单个实例进行分类。
Maxtrox MIL 提供了一套简单而强大的接口和算法,用于解决多实例学习问题。它包括了多个经典的多实例学习算法,如 MILBoost、MILES、MI-SVM 等,可以根据具体的问题选择合适的算法进行模型训练和分类。
- Halcon
Halcon(HALCON)是由德国MVTec Software GmbH开发的一款强大的计算机视觉库,最早可以追溯到1996年,它是一个全面的软件工具包,用于开发和部署各种计算机视觉应用程序。Halcon提供了丰富的功能和算法,可以处理图像和视频数据,实现目标检测、识别、测量、分割等各种计算机视觉任务。
- OpenCV
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,由英特尔公司于在1996年启动,1999年发起并积极维护,,2006年发布1.0版本。它是一个跨平台的库,可在多个操作系统上运行,包括Windows、Linux、macOS、Android和iOS。
- VisionPro
VisionPro 是 Cognex 公司2009年开发发布的计算机视觉库,用于工业自动化和机器视觉应用。它提供了一套丰富的功能和工具,用于图像处理、特征提取、目标检测、物体识别、测量和校准等任务。VisionPro 库具有高性能和稳定性,并支持多种操作系统和编程语言,包括 C++、C#、VB.NET 和 Python。它还提供了用户友好的图形用户界面,用于配置和调试视觉应用程序。
- simpleCV
SimpleCV 是一个简单易用的计算机视觉库,基于 Python 编程语言,用于处理图像和视频数据,并进行各种计算机视觉任务。它提供了丰富的功能和工具,可以帮助用户快速开发计算机视觉应用程序。SimpleCV 的优势在于它的简单易用性和灵活性。它提供了丰富的文档和示例代码,可以帮助用户快速上手和理解库的使用。同时,SimpleCV 还能够与其他 Python 库和工具集成,如 NumPy、OpenCV、scikit-learn 等,可以扩展其功能和应用范围。
- BoofCV
BoofCV 是一个用于计算机视觉和机器人视觉的开源 Java 库。它提供了一系列高性能的算法和工具,用于图像处理、特征提取、目标检测与跟踪、摄像头标定等任务。
- Dlib
Dlib 是一个开源的 C++ 库,用于机器学习、计算机视觉和图像处理任务。它提供了一系列高性能的算法和工具,包括人脸检测、人脸关键点检测、人脸识别、姿态估计、目标跟踪、图像分类等。
- JavaCV
JavaCV 是一个基于 Java 的开源计算机视觉库,它提供了与 OpenCV(Open Source Computer Vision Library)的绑定,使开发者可以在 Java 环境中使用 OpenCV 的功能。JavaCV 提供了对 OpenCV 函数和数据结构的封装,使 Java 开发者可以轻松地调用 OpenCV 的各种功能。JavaCV 还提供了一些额外的功能,如视频捕捉、图像显示、视频编解码等。JavaCV 支持的操作系统包括 Windows、Linux、macOS 等,并且可以与 Java 的图形界面库(如 Swing 和 JavaFX)集成,方便开发图像处理和计算机视觉应用程序。
3.当前主流框架
- TensorFlow
- PyTorch
- Keras
- Caffe
- Paddlepaddle
- OpenVINO
- TensorRT
- onnxruntime
- Deepface
- YOLO/DarkNet
- mmdetection
- Paddle-detection/seg/ocr
4.计算机视觉框架的未来趋势
- 低代码平台流行趋势明显
- 传统视觉和深度学习结合趋势明显
- 算法设计可视化、流程化趋势
- 算法模块易用性、通用性趋势
- 计算资源异构化支持趋势
- 深度模型训练简捷化趋势
- 无代码化
- 算法设计流程可视化
- 导出部署支持多种语言
- 计算资源支持异构化
- 算法model zoo丰富化 ,本地与云端
- 开发者可以贡献算法