【MATLAB源码】机器视觉与图像识别技术(5)---BP神经网络和视觉标定

系列文章目录
第一篇文章:【MATLAB源码】机器视觉与图像识别技术—视觉系统的构成(视频与图像格式转换代码及软件下载)
第二篇文章:【MATLAB源码】机器视觉与图像识别技术(2)—图像分割基础
第三篇文章:【MATLAB源码】机器视觉与图像识别技术(2)续—图像分割算法
第四篇文章:【MATLAB源码】机器视觉与图像识别技术(3)—数字形态学处理以及图像特征点提取
第五篇文章:【MATLAB源码】机器视觉与图像识别技术(4)—模式识别与视觉计数


BP神经网络和视觉标定


前言

随着计算机视觉技术的发展,图像处理和模式识别在各类应用中得到了广泛的应用。MATLAB作为一种强大的计算工具,以其丰富的工具箱和易于操作的编程环境,成为研究和开发计算机视觉应用的理想平台。在这些应用中,BP(反向传播)神经网络和视觉标定技术尤为重要。

BP神经网络是一种典型的人工神经网络模型,因其简单且有效的训练算法而被广泛使用。在机器视觉中,BP神经网络常用于图像分类、对象识别和模式识别等任务。通过多层神经元的连接,BP神经网络能够从输入图像中提取复杂的特征,并进行准确的分类和识别。

另一方面,视觉标定(或称相机标定)是机器视觉系统中不可或缺的部分。它的主要目的是确定摄像机的内部参数(如焦距、主点、畸变系数等)和外部参数(摄像机的位置和姿态)。准确的视觉标定能够提升图像测量的精度,并为三维重建、机器人导航等应用提供精确的数据支持。

本研究将探讨如何在MATLAB环境下,结合BP神经网络和视觉标定技术,构建高效的机器视觉系统。这包括BP神经网络在图像分类任务中的应用,以及如何通过视觉标定提高图像的几何准确性。通过这一探索,我们希望能够为各类实际应用提供坚实的技术支持,并进一步推动计算机视觉领域的发展。


一、BP神经网络介绍

BP神经网络(Backpropagation Neural Network)是一种应用广泛的人工神经网络模型,如下图所示结构,以其简单而有效的训练算法而闻名。一般神经网络的研究主要分为以下三个方面:
1.神经网络结构:各神经元之间的连接方式;
2.神经元模型
3.神经网络学习算法。
注意使用BP神经网络在应用中的一些要点,(1)网络的输入、输出变量的分析确定;(2)训练样本的准备;(3)BP神经网络中各参数的确定;(4)基于MATLAB软件进行BP神经网络编程实现时,MATLAB公司还提供了许多函数可以选择进行编程设计,比如(TRAINLM,TRAINGD等函数)。BP神经网络的优点之一就是:只要有足够的训练样本,足够多的隐层和隐层节点,BP神经网络就可以逼近任何非线性映射关系;

神经网络图


为了加深对BP 神经网络的认识,给大家介绍一下的用法表达,如何在MATLAB进行简单的BP神经网络预测,还是以上面第四篇(特征提取)的花生数据特征进行预测颗粒数,我们当时处理了200多张图片数据。接下来看一下示例代码和效果怎么样:

clc          % 清除命令窗口的内容
clear all    % 清除工作区中的所有变量
close all    % 关闭所有图形窗口

a = xlsread('d:\花生特征提取数据.xlsx');  % 从指定路径读取Excel数据文件
b = a;                                        % 复制数据到变量b
a0 = min(a);                                  % 计算每列数据的最小值
for z = 2:9
    b(:,z) = a(:,z) - a0(z);                  % 每列数据减去对应的最小值(零均值化)
end
a1 = max(b);                                  % 计算每列数据的最大值
for z = 2:9
    b(:,z) = b(:,z) / a1(z);                  % 数据归一化,使其范围在 [0, 1] 之间
end

P = b(1:40, 2)';                              % 提取归一化后的数据作为输入P(第2列数据)
T = b(1:40, 4)';                              % 提取归一化后的数据作为目标输出T(第4列数据)
net = newff(minmax(P), [10, 1], {'tansig', 'purelin'}, 'trainlm');
                                               % 创建BP神经网络:输入范围、10个隐藏层神经元和1个输出神经元
net.trainParam.epochs = 500;                   % 设置最大训练次数为500
net.trainParam.goal = 0.000001;                % 设置训练的目标误差为0.000001
net = train(net, P, T);                        % 训练神经网络,使用输入P和目标输出T
X = b(1:40, 2)';                               % 用于预测的输入数据X
Y = sim(net, X)';                              % 用训练好的网络预测输出Y
figure; 
plot(P, T, '.');                               % 绘制原始数据的散点图
hold on; 
plot(X, Y, 'r');                               % 绘制神经网络预测结果的曲线图

效果显示:由下图可以看到BP神经网络的拟合效果较优,相比于最小二乘法效果更佳,所以可得出BP神经网络也可用于预测和曲线拟合。

网络结果

在这里插入图片描述


通过训练,网络学会了输入特征与目标输出之间的关系。在测试阶段,我们将网络应用于训练数据,以预测输出值,并将其与实际值进行比较。结果显示,BP神经网络能够很好地拟合训练数据,成功捕捉了数据的内在模式。BP神经网络通过归一化预处理、适当的网络结构和有效的训练算法,在特征提取和模式识别任务中表现出色。然而,该方法在处理更复杂的任务时可能需要更深的网络结构和更大量的训练数据,以提高其泛化能力和准确性。

二、视觉标定

视觉标定(Camera Calibration)是计算机视觉中的一项关键技术,其主要目的是确定摄像机的内部和外部参数。这些参数包括摄像机的焦距、光学中心位置(也称为主点)、图像畸变系数,以及摄像机相对于世界坐标系的位姿(位置和朝向)。通过准确的视觉标定,可以将摄像机捕捉到的二维图像与真实的三维世界之间建立精确的几何关系。
应用背景介绍:(1)视觉测量:用机器视觉设备代替人眼来做测量工作;(2)根据摄像机获得的视觉信息对目标的位置和姿态进行的测量;(3)摄像机的标定就是根据给定的摄像机模型,求取摄像机的内部参数和外部参数.(4)摄像机光轴中心就是摄像机镜头的中心.
e
标定板是用于校准和校正摄像设备、激光扫描仪等测量设备的工具。其主要作用是通过已知尺寸和图案的标定板,来校正设备的几何失真和其他光学畸变,从而提高测量精度。常见的标定板类型包括棋盘格标定板、圆点标定板。棋盘格标定板由黑白交替的方格组成,适用于相机标定;圆点标定板由规则排列的圆点构成,多用于激光扫描仪和摄像头的标定。
在选择标定板时,需要考虑目标对象、标定精度和使用环境等因素。常用的标定板规格之一是10x10厘米,但具体规格应根据标定需求和设备类型来选择。例如,对于需要高精度的应用,可以选择更小的格子或圆点间距,以确保标定的精度和效果。使用标定板可以有效地校正设备的光学畸变,提高测量结果的准确性和可靠性。

在这里插入图片描述


棋盘格标定板上图所示,圆点标定板下图所示

在这里插入图片描述


之后就是对摄像头参数进行学习,摄像机的内部参数主要包括:(1)光轴中心点的图像坐标,(2)成像平面坐标到图像平面坐标的放大系数(又称为焦距归一化系数)等。如图所示,进行光轴与实际坐标轴的校正,才能得到准确的实际坐标与图像坐标转换。

在这里插入图片描述


摄像机坐标系(摄像机在地面投影的坐标系),如下图所示:

在这里插入图片描述


以摄像机光轴中心垂直在地面上的点为原点O;摄像机法线在地面的投影为Y轴,垂直法线方向为X轴。与地面垂直的方向为Z。

在这里插入图片描述


以图像左上角为原点;水平方向为U方向,垂直方向为V方向建立起图像坐标系。就可以得到图像中标定点图像位置坐标(U,V)与摄像机坐标系(X,Y)的关系了。

最后得到了图像坐标和实际坐标纸的坐标我们就可以做一个线性拟合,这样就可以来回转换了,拟合代码如下:

clear all;
clc;
close all;
data=xlsread('D:\z\机器视觉课程\exdata.xlsx');%记录着图像坐标和标定纸坐标
u=data(:,4);             %提取图像坐标的x坐标值
v=data(:,5);            %提取图像坐标的y坐标值
X=[ones(size(y1)) u v]; 
y1=data(:,2);       %提取标定纸坐标的y坐标值
y2=data(:,3);       %提取标定纸坐标的y坐标值
by1=regress(y1,X);        %执行多元线性回归的回归系数
by2=regress(y2,X);
%即可由视觉像素坐标(u,v)转换实际平面坐标(x,y).
%by1=61.277-0.4011u+0.0135v
%by2=154.7454+0.0071u-0.6798v

最后根据上面的步骤讲解就可以得到相应的视觉标定效果。

总结

最后,小讲一下,因为时间紧急,很多内容没得详细细说,这篇文章还不完整,后面我讲继续修改,最近时间有点忙,等过段时间我会完善,继续更新,真的非常抱歉,此次发布作为记录保存,后续在进行更改更新。还是希望大家点点赞(哈哈哈哈哈哈),厚着脸皮问一下,这篇文章完整,后续完善在更换,先发布获取一下新手奖励!哈哈哈哈,抱歉啦,不要忘了点赞收藏哟。

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值