gpt4 book ai didi

c# - 桶形失真 - 在已知预期/接收到的控制点时校正图像

转载 作者:行者123 更新时间:2023-11-30 16:11:16 27 4
gpt4 key购买 nike

我正在使用已安装的工业 CCD 相机,但我没有关于其参数的信息。当通过 WinUSB 以编程方式拍摄图像时,会收到图 1 中的结果。您会注意到图像中线条之间的间隙差异很大。实际图像中并非如此。

我有一种技术可以确定线条的位置,并有一个像素坐标列表,用于确定线条在非失真图像中必须出现的位置。

所以我有

  • 拍照时线条的像素坐标
  • 线条所在位置的像素坐标

我需要做什么

  • 将这些值应用于相机拍摄的每张后续图像,以便每张图片都经过校正。

但是,我非常坚持遵循这种方法的现有技术。我知道互联网上存在许多使用镜头参数或强度参数的算法,但这些技术不太适合我的场景。参数未知,肉眼调整强度值不够准确。

任何关于技术的指示都会有很大帮助;因为我目前不知所措。


enter image description here

图 1. 固定位置 CCD 相机拍摄的畸变图像


最佳答案

嗯,你能解释一下为什么标准校准技术不合适吗?您不需要知道“真实”的相机参数,但您确实需要估计失真的线性(实际上是仿射)部分,这几乎是一回事。

说明:假设您正在处理一个普通的旧球面透镜,我为您的情况尝试的第一个模型是形式的双参数径向畸变:

X = f * |x - c|
Y = k1 * X^2 + k2 * X^4
y = c + Y / f

在哪里

  • x = (u, v) 是扭曲的像素坐标;
  • c = (cu, cv) 是一个未知的失真中心(即图像中零失真的位置失真,通常在(或非常靠近)镜头的焦轴上。
  • |x -c|是畸变图像中x到c的径向距离
  • f 是一个未知的比例因子
  • X 是缩放中心坐标中变形像素的位置
  • k1和k2为未知失真系数
  • Y 是缩放居中坐标中未失真的像素
  • y 是未失真的像素,位于与 x 相同的半径 c->x 上,与 c 的距离为 Y/f。

所以你的未知数是 cu、cv、f、k1 和 k2。它开始看起来像相机校准问题,不是吗?

除非您真的不需要估计“真实”焦距 f,因为(我假设)您对计算 3D 空间中的光线不感兴趣。因此,您可以通过将 f 指定为使数据点分布的直径等于 2 的值来简化问题,以便所有居中缩放点 X 的坐标绝对值不大于 1.0。这在两个方面有帮助:它改进了问题的数值条件,并将未知数的数量减少到 4。

您通常可以通过使用图像中心 c 和 k1 和 k2 的零值来初始化估计,将数据插入您最喜欢的最小二乘优化器,运行,获取未知数的解决方案,并验证这是有道理的(在额外的独立图像上)。冲洗并重复,直到您得到满意的结果。

请注意,您可以通过使用多张图像来丰富用于估计的数据集,当然前提是镜头参数保持不变。

关于c# - 桶形失真 - 在已知预期/接收到的控制点时校正图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24527815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com