c++ - 点投影和扭曲的二维图像之间的不匹配 [opencv]
问题描述
我正在使用 2 种不同的方法来渲染图像(作为 opencv 矩阵):
使用相机内在函数(焦距,主点;失真已禁用)的已实现投影功能 - 此功能在其他软件包中使用并且应该可以正常工作(存储库)
2D 到 2D 图像变形(在这里,我正在确定我的相机角射线与我的 2D 图像的交点,应该变形到我的相机框架中);这个角点的反投影使用与上面相同的相机模型
现在,我叠加这两个图像,基本上应该发生的是投影笔尖(方法 1.)应该与在扭曲图像上绘制的线对齐(方法 2.)。然而,这并没有发生。
两个方向都有微小的偏移,具体取决于书写笔的方向,当我移动相机的主要点时,偏移会减小。现在我的问题是,由于我没有考虑 2D-2D 图像扭曲的主要点,这会是不匹配的原因吗?或者通常不可能对齐这两者,因为图像变形是投影过程的简化?
灰点:投影原点(应与白色区域的边缘对齐)
蓝色标线:应该“写”波尔多色线的笔尖
灰线:笔近似
红边:白色图像部分的“x轴”
Green Edge:白色图像部分的“y轴”
编辑:
我还对坐标系的原点进行了相同的投影,在这里,不匹配会增加,原点越远离图像中心。(因此delta[warp,project]
与中心相比,图像边框会变大)
解决方案
推荐阅读
- java - 无法使用 Spring Webflux Webclient 映射二级 json 值
- angular - Angular - 在模块定义中使用动态变量
- c++ - C++ 中使用什么类型来定义数组大小?
- winston - 为什么winston 从 Logger 转移到 createLogger
- c# - 如何使用现有结果预测结果
- scala - 使用 take 和 InsertInto 命令的 Spark Scala 性能问题
- excel-formula - Excel 仅删除匹配的最后一个字符
- java - MySql - 一对多连接,将 JOIN 与 JDBI 映射到列表
- android - 在Android中获取单元格中的小部件大小
- amazon-web-services - 如何在 AWS 私有/公共 VPC 上的 Kubernetes 中对外公开 kafka 代理端口