一·相机标定原理
相机都具有内外参数,内参数一般出厂就已经标定。
通过相机参数,我们可以在进行后续图像的纠正。
二·相机参数估计与标定法
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 获取相机拍摄影像
将棋盘图打印处理后,将相应尺寸测量并留存。
在光照均匀的条件下,在不同的角度,使用待检测相机拍摄标定板,将结果影像处理即可得到相机参数。
Comments NOTHING