MATLAB的 Computer Vision Toolbox(计算机视觉工具箱)是处理图像和视频分析任务的核心工具,提供了从基础图像处理到高级目标检测、跟踪、三维重建等功能的完整工具链。本教程从零开始,带你快速掌握工具箱的核心功能、使用流程和典型应用,附代码示例。

一、工具箱核心功能与适用场景

Computer Vision Toolbox 封装了计算机视觉领域的经典算法和深度学习工具,覆盖以下核心任务:

  • 基础图像处理:滤波、边缘检测、形态学操作(与Image Processing Toolbox互补)。
  • 特征提取与匹配:角点、边缘、ORB/SURF特征(用于目标识别、图像拼接)。
  • 目标检测与跟踪:传统方法(Haar级联)、深度学习方法(YOLO、Faster R-CNN)、视频目标跟踪(KCF、MOSSE)。
  • 立体视觉与三维重建:双目相机标定、深度图计算、点云生成。
  • 视频分析:运动估计、背景建模、行为识别(如人群计数)。

适用场景:工业质检、自动驾驶、机器人视觉、监控分析等。

二、MATLAB 下载安装教程及运行环境准备

  1. MATLAB 下载安装教程
    MATLAB 下载安装教程:点击获取

  2. 安装工具箱
    打开MATLAB → 点击菜单栏 “主页"→"附加功能"→"获取附加功能”,搜索 “Computer Vision Toolbox” 并安装(需联网)。
    验证安装:命令行输入 ver,查看列表中是否有 “Computer Vision Toolbox”

  3. 核心函数快速查询
    命令行输入 doc computerVisionToolbox 打开官方文档,或直接搜索函数(如 doc detectSURFFeatures)查看用法。

三、入门实战:5个核心功能示例

示例1:基础图像处理(滤波与边缘检测)

用工具箱函数实现图像降噪和边缘提取,为后续分析做准备。

% 读取图像
I = imread('peppers.png');  % 自带示例图像(彩色 peppers)
I_gray = rgb2gray(I);       % 转为灰度图

% 1. 高斯滤波降噪(工具箱函数 imgaussfilt)
I_blur = imgaussfilt(I_gray, 1.5);  % sigma=1.5,平滑噪声

% 2. Canny边缘检测(工具箱函数 edge)
I_edge = edge(I_blur, 'canny', [0.1, 0.3]);  % 双阈值控制边缘灵敏度

% 可视化结果
figure;
subplot(1,3,1); imshow(I_gray); title('原始灰度图');
subplot(1,3,2); imshow(I_blur); title('高斯滤波后');
subplot(1,3,3); imshow(I_edge); title('Canny边缘检测');
示例2:特征提取与匹配(SURF特征匹配)

提取图像中的稳定特征(SURF),实现不同视角下目标的匹配(如拼接、识别)。

% 读取两张包含相同目标的图像(示例:不同角度的书)
I1 = imread('book1.jpg');
I2 = imread('book2.jpg');
I1_gray = rgb2gray(I1);
I2_gray = rgb2gray(I2);

% 1. 检测SURF特征点(对旋转、缩放不敏感)
points1 = detectSURFFeatures(I1_gray);
points2 = detectSURFFeatures(I2_gray);

% 2. 提取特征描述子
[features1, points1] = extractFeatures(I1_gray, points1);
[features2, points2] = extractFeatures(I2_gray, points2);

% 3. 特征匹配(工具箱函数 matchFeatures)
indexPairs = matchFeatures(features1, features2);  % 匹配特征对

% 4. 筛选匹配结果(保留内点,去除误匹配)
matchedPoints1 = points1(indexPairs(:,1), :);
matchedPoints2 = points2(indexPairs(:,2), :);
[tform, inliers] = estimateGeometricTransform2D(...
    matchedPoints1.Location, matchedPoints2.Location, 'affine');  % 估计变换矩阵

% 可视化匹配结果
figure;
showMatchedFeatures(I1_gray, I2_gray, matchedPoints1(inliers,:), ...
    matchedPoints2(inliers,:), 'montage');  % 只显示内点匹配
title('SURF特征匹配结果(内点)');
示例3:传统目标检测(Haar级联检测器)

用预训练的Haar级联模型检测人脸(无需训练,适合简单目标)。

% 加载预训练的人脸检测器(工具箱内置)
faceDetector = vision.CascadeObjectDetector();  % 默认检测人脸

% 读取图像并检测
I = imread('people.jpg');  % 包含人脸的图像
bboxes = step(faceDetector, I);  % 检测人脸边界框

% 标注检测结果
I_detected = insertObjectAnnotation(I, 'rectangle', bboxes, 'Face');

% 显示结果
figure; imshow(I_detected); title('Haar级联人脸检测');

扩展:可自定义训练Haar模型(如检测汽车、零件),用 trainCascadeObjectDetector 函数。

示例4:视频目标跟踪(KCF跟踪算法)

对视频中的目标进行实时跟踪(如监控中跟踪行人)。

% 打开视频文件(或摄像头:video = videoinput('winvideo', 1))
video = VideoReader('traffic.mp4');

% 读取第一帧并手动框选跟踪目标(如一辆车)
frame = readFrame(video);
figure; imshow(frame); title('点击并拖动框选跟踪目标');
bbox = getrect;  % 手动绘制边界框

% 初始化KCF跟踪器(工具箱函数 vision.KalmanFilter 或 vision.TrackerKCF)
tracker = vision.TrackerKCF;
initialize(tracker, bbox, frame);

% 逐帧跟踪并显示
while hasFrame(video)
    frame = readFrame(video);
    [bbox, isTracked] = step(tracker, frame);  % 跟踪目标
    
    % 标注跟踪结果
    if isTracked
        frame = insertObjectAnnotation(frame, 'rectangle', bbox, 'Target');
    else
        frame = insertText(frame, [10, 10], '目标丢失', 'BoxColor', 'red');
    end
    
    imshow(frame); drawnow;  % 实时显示
end
示例5:深度学习目标检测(调用预训练YOLO模型)

用工具箱的深度学习接口加载预训练YOLO模型,检测多类目标(如COCO数据集的80类)。

% 加载预训练YOLOv4模型(首次使用会自动下载)
model = yolov4ObjectDetector;

% 读取测试图像
I = imread('street.jpg');  % 包含车、人、自行车的街景图

% 检测目标
[bboxes, scores, labels] = detect(model, I);

% 筛选高置信度结果(>0.5)
keep = scores > 0.5;
bboxes = bboxes(keep, :);
labels = labels(keep);

% 标注结果
I_result = insertObjectAnnotation(I, 'rectangle', bboxes, labels);
figure; imshow(I_result); title('YOLOv4多目标检测');

四、工具箱核心工具与函数速查

功能类别 核心工具/函数 用途示例
基础处理 imgaussfiltedgeimbinarize 降噪、边缘检测、二值化
特征提取 detectSURFFeaturesextractHOGFeatures SURF特征、HOG特征(用于目标识别)
目标检测 vision.CascadeObjectDetectortrainYOLOv4ObjectDetector 传统检测、深度学习检测
目标跟踪 vision.TrackerKCFvision.TrackerMOSSE 实时视频目标跟踪
立体视觉 estimateCameraParametersdisparity 相机标定、计算视差图(深度)
视频分析 vision.BackgroundEstimator 背景建模、运动目标提取

五、学习路径与进阶方向

  1. 入门:先掌握基础图像处理(滤波、边缘检测)和特征匹配,理解视觉任务的底层逻辑。
  2. 进阶:学习目标检测(传统+深度学习)和跟踪,结合Image Labeler工具标注自己的数据集。
  3. 实战:尝试综合项目,如“工业零件缺陷检测”(预处理+特征提取+分类)或“实时行人跟踪系统”(摄像头+跟踪算法)。
  4. 部署:用MATLAB Compiler将算法打包为exe,或导出为C++代码部署到嵌入式设备(如NVIDIA Jetson)。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐