- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有许多已校准的相机拍摄平面场景的照片。为简单起见,我们假设有 3 个摄像头。这些相机正在进行一般运动,但主要是平移加上一些轻微的旋转。 Example positions of cameras
任务是将它们拼接在一起。我对 3D 坐标一无所知,只是一组用校准相机拍摄的图像。
我的工作:
我在 OpenCV 中使用 SURF/SIFT 实现检测特征,通过在每对图像 (1->2、2->3、1->3) 之间使用 findHomography 获得初始单应性。从这些单应性中,我得到了每个相机姿势的初步估计 (similiar procedure to this)
然后我尝试使用束调整技术来最小化每个匹配对的重投影误差。优化参数是三个平移值和三个旋转值(从 Rodrigues 的旋转公式获得),但我可以稍后添加内部参数(焦点、主点等)。
假设图像 #2 将是引用帧(通过与其他两个图像有最多的匹配),它的旋转和平移矩阵分别是单位矩阵和零矩阵。
我计算关键点(在图像 #2 和图像 #1 中都可见)从图像 #2 到图像 #1 的重投影(伪代码)
[x1_; y1_; z1_] = K1*R1*inv(K2)*[x2; y2; 1] + K1*T1/Z2;
x1 = x1_/z1_;
y1 = y1_/z1_;
或
x1 = ((f1/f2)*r11*x2 + (f1/f2)*r12*y2 + f1*r13 + f1*tx/Z2) / ((1/f2)*r31*x2 + (1/f2)*r32*y2 + r33 + tx/Z2)
y1 = ((f1/f2)*r21*x2 + (f1/f2)*r22*y2 + f1*r23 + f1*ty/Z2) / ((1/f2)*r31*x2 + (1/f2)*r32*y2 + r33 + ty/Z2)
其中 r__ 是 R1 矩阵的元素,两个内在矩阵的形式都是
[f 0 0]
[0 f 0]
[0 0 1]
我假设引用系的 Z2 坐标为 1。
下一阶段是使用获得的相机矩阵(K1、R1、T1、K3、R3、T3)将图像 #1 和 #3 扭曲到图像 #2 的公共(public)坐标系中。
问题是我不知道正确重投影到图像 #2 的引用帧所需的 Z1 和 Z3,因为图像 #1->#2 的反转重投影看起来像这样:
x2 = ((f2/f1)*R11*x1 + (f2/f1)*R12*y1 + f2*R13 - f0/Z1*(R11*tx + R12*ty + R13*tz)) / ((1/f1)*R31*x1 + (1/f1)*R32*y1 + R33 - 1/Z1*(R31*tx + R32*ty + R33*tz))
y2 = ((f2/f1)*R21*x1 + (f2/f1)*R22*y1 + f2*R23 - f0/Z1*(R21*tx + R22*ty + R23*tz)) / ((1/f1)*R31*x1 + (1/f1)*R32*y1 + R33 - 1/Z1*(R31*tx + R32*ty + R33*tz))
其中 R__ 是 inv(R1) 矩阵的元素。
是否有更好的方法来计算束平差 (2d->2d) 的重投影误差,然后将图像变形到公共(public)坐标系中?我注意到 OpenCV 在他们的拼接模块中有非常相似的框架,但它在纯旋转运动的假设下运行,而这里不是这种情况。
最佳答案
我在帖子 How to get points in stereo image from extrinsic parameters 中自动回答了这个问题
请注意,我使用的方法(经过测试和工作!)只有在 3D 坐标(真实世界!)中的对象是平面的并且它位于 Z=0(校准外部参数的点)时才有效相机)。在那种情况下,此方法与您的校准一样精确。注意:为了获得最佳校准检查 openCVs 圆校准,它具有 0.018 像素的重现误差(由在我大学工作的博士生测试)。
关于opencv - 将一幅图像中的像素重新投影到另一幅图像中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15220159/
每当我设置 Border.Effect属性的投影效果 控件中包含的每个控件都有一个投影。 有没有办法将阴影设置到边框而不是边框中包含的每个控件? 这是我的代码的一个简短示例:
我正在尝试创建一个带有阴影的对象。我相信您需要 CSS3 来执行此操作,到目前为止我已经有了类似的东西。 div { width:300px; height:100px; background
我希望能够为我的 drawables 文件夹中的矢量添加阴影。目前,当我将具有阴影的 svg 导入 Android Studio 时,转换为 xml 会删除阴影。 我将如何在 Android Stud
使用 NHibernate 2.1,我试图将一个实体及其子集合投影到 DTO 中。我的实体看起来像这样.. public class Application { public int Id {ge
我有问题还是好,我不知道如何将x,y,z值的3d点转换为2d点, 我必须绘制投影,其中的点确实有x,y,z值,但是我不知道如何将它们转换为2d,所以我可以将它们移动到我的轴上。 我一直在寻找Wiki和
我有域类位置 public abstract class BaseEntity where T: struct { public virtual T Id { get; set
我有一个使用 Android Material 图标作为背景的 ImageView 。我尝试添加标高以创建投影效果,但仅显示图标。是否可以将标高添加到矢量资源可绘制对象中? 矢量代码:
我正在尝试连接并以逗号分隔(或空格)列表并将其投影。我在下面有一些示例代码。 public class Friend { public string Name { get; set; } }
是否有任何库可以轻松地允许 Java bean 投影? 我有一个按照 Javabean 约定用 getter 和 setter 编写的 bean,并且在运行时在不同的地方我想要获取一个完全填充的 be
我可以成功地做到: point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:
我对 OpenLayers 3 有点问题。我有以下脚本: var map = new ol.Map({ view : new ol.View({ center : [5.611
我正在尝试向 ImageView 添加阴影。 Stackoverflow 的另一个答案似乎是使用 Canvas 和位图等,比需要的复杂得多。 在 iOS 上我会做这样的事情: myImageView.
我有一个 JPanel 元素,我想给它添加一个阴影,我怎样才能给元素添加一个漂亮的褪色阴影?我需要使用外部库还是可以使用内置的东西? 例子: 最佳答案 所以我查看了 swingx它扩展了 JPanel
如何使用 MongoDB 查询预测作者的名字 { name: "Wings Of Fire", author: { first: "Abdul", last: "Kalam" } }
我有一个集合“帐户”,其中包含类似于此结构的文档: { "email" : "john.doe@acme.com", "groups" : [ {
我试图弄清楚如何使用枚举列表(@ElementCollection)对实体进行 DTO 投影。不幸的是,缺少 QueryDsl 文档,在这里我只能找到版本 3 的结果 不是 适用于版本 4。 @Ent
我想要悬停 div 时出现的箭头 here也投下影子。箭头是从 CSS 绘制的: .arrow { position:absolute; margin-top:-50px; left:80px; bo
如何使用 QueryOver 和 AliasToBean 将枚举值转换为字符串值?我有以下但在尝试转换 Enum 时出错: SomeDTO someDTO = null;
我有这个外部 GeoJSON 文件: {"type": "FeatureCollection", "features": [ {"type":"Feature", "id":382, "propert
我对 Hibernate 的预测和标准有点困惑。何时使用预测以及何时使用标准? 最佳答案 它们并不相互排斥,您可以同时使用两者。预测通常在某些标准的背景下使用。 简单地说,Hibernate Proj
我是一名优秀的程序员,十分优秀!