文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

手把手教会你双目摄像头Matlab参数定标

2024-04-02 19:55

关注

一、前期准备

1、安装好python3,可以在anaconda中安装python3。

2、一个合适的双目摄像头。

3、一台可以运行Matlab的电脑。

4、一张棋盘图(可A4打印,若效果不佳,则可A3打印)。

棋盘图如下图所示:需要测量小方框的边长(一般单位为毫米:mm)。

请添加图片描述

二、使用双目摄像头(左+右)拍摄棋盘图

1、注意事项

注意:

1、左、右摄像头图像中必须包含单独的完整的棋盘图。

2、可适当前后、左右、上下翻转棋盘图,在符合上述条件1的情况下。

3、拍摄左右双目的照片40~50张比较合适。

如图所示:

2、双目拍照代码(python)

take_photo.py内容如下:

import cv2
import sys
#引入库

cap = cv2.VideoCapture(1) #读取笔记本内置摄像头或者0号摄像头


i = 0
while True:
    ret, frame = cap.read()
    
    if (ret):
        cv2.namedWindow("Video01",0)   #创建一个名为Video01的窗口,0表示窗口大小可调
        #cv2.resizeWindow("Video01",1280,720) ##创建一个名为Video01的窗口,设置窗口大小为 1920 * 1080 与上一个设置的 0 有冲突
        cv2.imshow("Video01", frame)

        #等待按键按下
        c = cv2.waitKey(1) & 0xff

        #r若按下w则保存一张照片
        if c ==ord("w"):
            cv2.imwrite("./val_001/%d.bmp" %i, frame) #自己设置拍摄的照片的存储位置
            print("Save images %d succeed!" %i)
            i+=1

        #若按下Q键,则退出循环
        if c == ord("q"):
            break
    
#随时准备按q退出
cap.release()
#关掉所有窗口
cv2.destroyAllWindows()

注意:

1、运行take_photo.py前,注意设置左右照片的存储位置。

2、运行take_photo.py后,按下键盘上的“W”键拍摄一张照片。当拍摄的照片数量足够时,按下“Q”键退出程序运行。

3、程序退出后,打开存储照片的文件夹查看照片是否合适。

3、双目左右照片分割(python)

resize.py内容如下:

import numpy as np
import cv2

#img1 = cv2.imread(r"/Users/inbc/Desktop/zuo/Left1.bmp")
#img2 = cv2.imread(r"/Users/inbc/Desktop/you/Right1.bmp")
for i in range(0,7) :
    #imgT = cv2.imdecode(np.fromfile('./images/%d.bmp'  %i ,dtype=np.uint8), -1)
    imgT = cv2.imdecode(np.fromfile('./val/%d.bmp'  %i ,dtype=np.uint8), -1) #读取拍摄的左右双目照片

    # cv2.imshow("zuo", img1[300:1200, 500:2000])
    # cv2.imshow("you", img2[300:1200, 500:2000])

    # cv2.waitKey(0)
    
    #设置左右照片的存储位置
    cv2.imwrite("./val/zuo/reLeft%d.bmp"  %i  ,imgT[0:720, 0:1280] )#imgL的第一个参数是图片高度像素范围,第二个参数是图片宽度的像素范围
    cv2.imwrite("./val/you/reRight%d.bmp" %i ,imgT[0:720, 1280:2560] )
    print("Resize images%d Fnished!" %i)

print("Fnished All!!!")

注意:

1、运行resize.py前,注意设置左、右照片的分别的存储位置。

2、运行resize.py后,终端打印"Fnished All!!!"表示分割完成。

3、程序退出后,打开存储照片的文件夹查看照片,是否分割完成,左摄像头照片存放在zuo,右摄像头照片存放在you。(文件名可自己更改)

三、Matlab双目参数标定

1、打开Matlab后,点开app,找到Stereo Camera Calibrator。如下图所示:

打开后如图所示:

2、导入双目的左右照片到Stereo Camera CalibratorAPP。具体操作,如下图所示:

3、点击确认后就可以分析导入的左右的照片了。这个过程会自动剔除掉不合格(误差过大)的左右照片。

4、导入照片后就可以进行双目定标了。

导入左右照片后,如图所示:

5、设置双目相机的定标参数,如图所示。

6、进行双目定标,并导出双目参数矩阵到Matlab中,进行下一步的处理。

四、双目参数提取

1、左、右相机内参数获取,注意参数矩阵的转置:

>> stereoParams.CameraParameters1.IntrinsicMatrix'#左相机参数

ans =

  831.0889   -4.0855  659.4243
         0  831.8663  487.3259
         0         0    1.0000

>> stereoParams.CameraParameters2.IntrinsicMatrix'#右相机参数

ans =

  831.1982   -3.5773  632.5308
         0  832.1221  479.3084
         0         0    1.0000

Matlab如图所示:

请添加图片描述

2、获取左右相机畸变系数。

注意: 左右相机畸变系数:[k1, k2, p1, p2, k3] ,顺序要正确。

 # 左右相机畸变系数:[k1, k2, p1, p2, k3]

>> stereoParams.CameraParameters1.RadialDistortion

ans =

   -0.0806    0.3806   -0.5229 #k1  k2  k3

>> stereoParams.CameraParameters1.TangentialDistortion

ans =

   -0.0033    0.0005    #p1     p2

Matlab如图所示:

请添加图片描述

3、获取双目的旋转矩阵和平移矩阵,注意旋转矩阵的转置。

 # 旋转矩阵
>> stereoParams.RotationOfCamera2'

ans =

    1.0000    0.0017   -0.0093
   -0.0018    1.0000   -0.0019
    0.0093    0.0019    1.0000
    
 # 平移矩阵
>> stereoParams.TranslationOfCamera2

ans =

 -119.9578    0.1121   -0.2134

Matlab如图所示:

请添加图片描述

4、获取基线距离,单位:mm, 为平移向量的第一个参数(取绝对值)。

 self.baseline = 119.9578 # 单位:mm, 为平移向量的第一个参数(取绝对值)

至此,双目摄像头的参数就定标完了。

耐心一点,慢慢来总会成功的!!!

总结

到此这篇关于双目摄像头Matlab参数定标的文章就介绍到这了,更多相关双目摄像头Matlab参数定标内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯