【问题标题】:Doing camera calibration by having intrinsic matrix and distortion coefficients in OPENCV and in real-time video通过在 OPENCV 和实时视频中使用固有矩阵和失真系数进行相机校准
【发布时间】:2015-02-12 14:13:04
【问题描述】:

我已经使用opencv提供的校准代码校准了我的相机,一切正常!我还可以通过使用 Python 编写的代码应用参数来消除我想要的任何图像。

import numpy as np
import cv2

# copy parameters to arrays
K = np.array([[385.58130632872212, 0, 371.50000000000000], [0, 385.58130632872212, 236.50000000000000], [0, 0, 1]])
d = np.array([-0.27057628187805571, 0.10522881965331317, 0, 0, 0]) # just use first two terms (no translation)

# read one of your images
img = cv2.imread("C:\Users\ROS\Documents\Python\VCSBC2.jpg")
h, w = img.shape[:2]

# undistort
newcamera, roi = cv2.getOptimalNewCameraMatrix(K, d, (w,h), 0) 
newimg = cv2.undistort(img, K, d, None, newcamera)

cv2.imwrite("original.jpg", img)
cv2.imwrite("undistorted.jpg", newimg)

但问题是我真的不知道如何在实时传输期间不失真图像。我正在使用 TCP/IP 协议从我的相机中获取图像,我可以从它内部运行东西,但我不知道我应该如何插入矩阵和参数以便不失真实时图像。有没有人可以告诉我这个?

谢谢。

【问题讨论】:

    标签: python c++ opencv camera-calibration real-time-updates


    【解决方案1】:

    如果没有看到用于从相机中提取图像的代码,很难给出建议。一般来说,如果您的帧速率要求足够低,您可以从相机中抓取像素缓冲区,将它们复制到 cv 图像中并应用 undistort。

    在较高的帧速率下,cv undistort 可能会太慢,因为它会在双线性(或三线性)插值步骤之前在每个像素处计算非线性变换。

    你有两个选择

    1. 预计算扭曲贴图。这些是缓存上述非线性计算的矩阵(在两个通道中,分别水平和垂直方向),并为每一帧重用它。这种方法的OpenCV implementation 有点蹩脚,因为它需要与输入图像大小相同的变换图,当失真处处平滑且足够适中以至于可以通过下采样而侥幸逃脱时,这是一种浪费。在这些情况下,对于足够大的图像和帧速率,在全尺寸地图中查找是浪费的,并且可能成为瓶颈。如果使用下采样滚动他们自己的扭曲映射实现,则必须注意采样率足够高以保证各处(尤其是在图像边界处)的正确失真。这通常会产生扭曲贴图比它们需要的“更密集”的效果,因为图像边界处的失真通常比中心处更陡峭。但是,它是一种简单且通常“足够好”的方法,许多专业应用程序广泛使用它(例如 Shake)。

    2. 使用非均匀分段线性近似。这里的想法是使用四叉树细分图像画布,直到使用仅扭曲四边形本身的顶点引起的单应性来逼近每个四边形中的非线性扭曲的误差小于阈值(例如,1/10像素)。优点是线性变形四边形速度很快,并且可以在插值循环内实现。这种技术具有足够适度的失真,只使用很少级别的四叉树,并且使用带有图形库(例如 OpenGL)的简单实现,很容易在高分辨率下实现高帧速率。我个人从大约十年前开始使用这种技术,并且可以轻松地以 60FPS 的高清视频分辨率去扭曲图像。

    【讨论】:

    • 感谢您的回复,弗朗西斯科。考虑到我的帧率很低,我想我可能会选择首选。我试图看看我现在必须做什么,但我还是迷路了。我的意思是我认为opencv有一个代码来实现校准过程中得到的参数,但是我找不到它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2016-03-05
    • 2015-03-16
    • 2016-02-05
    • 2013-02-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多