• 欢迎访问GanAHE的小创元世纪,技术交流与资源分享,欢迎加入GanAHE的小创元世纪🤪 微信公众号:星辰换日
  • 电影、教程、软件等分享资源请在本站或微信公众号合作平台:【星辰换日】获取。
  • 首页展示个人参与或独立开发的产品,更多功能在建中......🙆🏼天王盖地虎
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏本站吧🥺
  • 注册采用有效的邮箱,有助于及时收到评论回复、最新资源以及活动通知哟~✔🥳
  • 目前在逐渐打通微信小程序与网站之前的间隔~💻🏢

地表三维模型的构建与时序模型地表形变监测(五):相机标定试验与研究

测绘 GanAHE 8个月前 (09-11) 73次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

一·相机标定原理

相机都具有内外参数,内参数一般出厂就已经标定。

通过相机参数,我们可以在进行后续图像的纠正。

二·相机参数估计与标定法

2.1 参数标定板

对于相机参数的确定,需要标定板进行辅助,标定板一般在实验室里面有专用于摄影测量设备校正的标准板,我们也可以自己生成一张类似的棋盘图,在精度要求不是很高的情况下,已经够用。

下面是生成棋盘图的相关代码,相关参数已标注清楚,尺寸可以根据自己的需求定制:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
comment: 生成棋盘标定图

@author: GanAH  2020/9/11.
@version 1.0.
"""
import cv2
import numpy as np

def generatePattern(CheckerboardCellSize, column_count, row_count):
    '''
    自定义生成棋盘
    :param CheckerboardCellSize: 棋盘格子大小,单位:px
    :param column_count: 棋盘格横向黑白格子数
    :param row_count: 棋盘格纵向黑白格子数
    :return:
    '''
    column_count = column_count -1
    row_count = row_count -1

    black = np.zeros((CheckerboardCellSize, CheckerboardCellSize, 3), np.uint8)
    white = np.zeros((CheckerboardCellSize, CheckerboardCellSize, 3), np.uint8)
    black[:] = [0, 0, 0]  # 纯黑色
    white[:] = [255, 255, 255]  # 纯白色

    black_white = np.concatenate([black, white], axis=1)
    black_white2 = black_white
    white_black = np.concatenate([white, black], axis=1)
    white_black2 = white_black

    # 横向连接
    if column_count % 2 == 1:
        for i in range(1, (column_count + 1) // 2):
            black_white2 = np.concatenate([black_white2, black_white], axis=1)
            white_black2 = np.concatenate([white_black2, white_black], axis=1)
    else:
        for i in range(1, column_count // 2):
            black_white2 = np.concatenate([black_white2, black_white], axis=1)
            white_black2 = np.concatenate([white_black2, white_black], axis=1)
        black_white2 = np.concatenate([black_white2, black], axis=1)
        white_black2 = np.concatenate([white_black2, white], axis=1)

    jj = 0
    black_white3 = black_white2
    for i in range(0, row_count):
        jj += 1
        # 纵向连接
        if jj % 2 == 1:
            black_white3 = np.concatenate((black_white3, white_black2))  # =np.vstack((img1, img2))
        else:
            black_white3 = np.concatenate((black_white3, black_white2))  # =np.vstack((img1, img2))

    cv2.imshow('', black_white3)
    cv2.imwrite('pattern.jpg', black_white3)
    cv2.waitKey(10000)
    cv2.destroyAllWindows()

if __name__ == '__main__':
    generatePattern(100, 20, 16)

设置参数后运行即可获取生成的结果。

生成的实例标定板

2.2 相机参数估计

2.2.1 获取相机拍摄影像

将棋盘图打印处理后,将相应尺寸测量并留存。

在光照均匀的条件下,在不同的角度,使用待检测相机拍摄标定板,将结果影像处理即可得到相机参数。

2.2.2 相机参数解算与精度评估

三·相机标定结果

四·总结

五·参考文献


GanAHE 的小创元世纪, 版权所有丨如未注明 , 均为原创丨本网站采用@BY-NC-SA协议进行授权
转载请注明原文链接:地表三维模型的构建与时序模型地表形变监测(五):相机标定试验与研究
喜欢 (0)
[WeChat]
分享 (0)
关于作者:
网站的建设与维护者、DGZC的守护者
0 0 评分
都看完了,打个分儿叭~
通知
提醒
0 评论
内部反馈
显示所有评论
0
有什么想法吗,快来留下你的评论吧!x
()
x