程序首先读取标定板图片,对各点进行亚像素角点检测,保存标定板各点的像素坐标。而后假设定标板放在世界坐标系中z=0的平面上,保存定标板上角点的三维世界坐标。调用fisheye::calibrate函数,标定得到相机内参数矩阵与畸变系数。图15为识别角点结果。
4.2.1.2.2计算单应性矩阵
为计算单应性矩阵,利用标定板在抓取平面建立世界坐标。将左起横向第五、上起纵向第六位置的角点正对抓取机构正下方,作为坐标系原点。每小格长40mm,遍历储存各个角点的世界坐标并储存至vector 容器worldPoints。opencv目标识别程序
用山狗SJ7000得到抓取平面图像,利用标定得到的两个参数矩阵M和K对图像进行去畸变操作,操作结果如图17所示:
4.2.1.2.3上位机坐标解算
4.2.2下位机
下位机采用STM32控制板,使用定时器的输入捕获模式对2.4G模块的信号进行读取然后存至数组,判断抓取模式后分类执行相应操作。其中控制板根据角度信息输出PWM波控制舵机摆角达到机械臂摆动及抓取动作。
4.3算法设计
![]()
4.3.1梯度位移算法
为了减少圆球图像的噪声干扰,首先对采集的图像进行了增强和平滑。首先,对图像进行直方图均衡化,减少高亮与阴影对圆球轮廓识别的干扰;然后对图像进行高斯滤波,去除正态分布的高斯噪声;接着进行形态学滤波,填充物体内细小空洞,连接邻近物体,平滑其边界。
调用OpenCV的filter2D函数对预处理完毕的图像进行卷积处理,提取图像梯度信息。定义两个卷积核:
分别对样本灰度图进行卷积,得到x方向梯度图与y方向梯度图;然后将两图输入进行坐标转换,得到极坐标下梯度图mag。
如图,在一定半径圆周上遍历轮廓像素点,并根据其梯度方向,在相应半径大小位移的像素点叠加该梯度值,经过数次迭代,无关轮廓发散,圆轮廓收敛至一高亮像素点,即为所寻球心点。
4.3.2神经网络构建训练
4.3.2.1图像采集与预处理
项目主要完成红、黑、粉、蓝、棕、绿、黄各种颜色的球的识别与抓取,首先对以上颜色的球分别采集各125个样本,非球负样本采集125个,共1000个样本。其中600个样本作为训练集,检验集与测试集各200个。
如梯度位移算法所示对图像进行预处理,最后分割感兴趣部分储存为特定大小。
4.3.2.2神经网络模型构建
4.3.2.2.1特征提取
(1)针对圆球,核心的特征为颜色特征和轮廓特征。其中,颜色特征提取方面,综合考量RGB颜色空间和HSV颜色空间。下面由R、G、 B、H、S、V分别表示RGB模型和HSV模型的各个分量,设计三个特征作为神经网络输入参数。由于不同颜色空间本身所具有的缺陷,直接以各分量数值形式作为颜色特征进行神经网络训练,不能得到理想的效果。
经过理论分析和实验,初步选定的有效的颜色特征是:
(2)对于球的识别,其圆形轮廓特征同样重要。根据梯度位移算法中所得的轮廓梯度图,确定输入的第四个特征即为
4.3.2.2.2模型构建
(1)输入层
(2)输出层
因训练分类器识别红、黑、粉、蓝、棕、绿、黄7种颜色的球,输出层节点数为8,其中一个节点对应非球类。网络输出向量y为8x1的向量,输出各个分量值为0或1,每个输出结果有且仅有一个分量为1。
(3)隐含层
一般确定隐含层节点数目的基本原则是在满足精度要求的前提下取尽可能紧凑的结构,即取尽可能少的隐含节点数。本文可以通过以下公式并且多次试凑来实现:
其中,n为输入层节点数,m为输出层节点数,s为隐含层节点数, 为 之间的整数。初步试验确定隐含层节点数为7。
(4)激励函数与误差函数
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-74279-4.html
强行驱离
这谢作诗教授肯定喝醉了
歼-16可争夺海上制空权