问题标签 [homography]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 4 点变换图像
我需要转换位图图像,使其 4 个角点从一个位置移动到另一个位置。
任何可以在 Windows、C#/VB.NET 上运行的代码,甚至有助于如何使用Paint.NET或Photoshop等可编写脚本的程序都将被接受。Java Advanced Imaging API 听起来很有希望。
我需要它用于屏幕截图操作系统,它可以让您获得这样的效果:
(来源:wholetomato.com)
projective-geometry - 投影矩阵+世界平面~>从图像平面到世界平面的单应性
我想我已经把我的线穿过了,这应该很容易。
我有一个从世界坐标到图像坐标的投影矩阵(4D 同质到 3D 同质),因此我也有从图像坐标到世界“光线”的逆投影矩阵。
我想将图像的点投影回世界中的一个平面(这当然是作为 4D 齐次向量给出的)。所需的单应性应该是唯一标识的,但我不知道如何计算它。
当然,我也可以将反投影光线与世界平面相交,但这似乎不是一个好方法,因为我知道必须有一个单应性为我做这件事。
在此先感谢,本
image-processing - RANSAC 算法
谁能告诉我如何使用 RANSAC 算法在两个具有一定重叠部分的图像中选择共同特征点?问题来自基于特征的图像拼接。
opengl - 如何使用 3x3 单应性将立方体增强到特定位置
我可以通过计算它们之间的 3x3 单应性来跟踪同一场景的不同图像上的 4 个坐标。这样做我可以将其他 2D 图像叠加到这些坐标上。我想知道我是否可以使用这个单应性将一个立方体增加到这个位置而不是使用opengl?我认为 3x3 矩阵没有提供足够的信息,但如果我知道相机校准矩阵,我能否获得足够的信息来创建模型视图矩阵来执行此操作?
感谢您提供的任何帮助。
opencv - Opencv虚拟相机旋转/平移鸟瞰图
我有一个校准过的相机,我完全知道内在和外在数据。相机的高度也是已知的。现在我想虚拟地旋转相机以获得鸟瞰图,这样我就可以构建具有三个旋转角度和平移的单应矩阵。
我知道可以通过 Homography 将 2 个点从一个图像转换为另一个图像
x=K*(Rt*n/d)K^-1 * x'
我现在想知道一些事情:如果我想带回 ccs 中的图像坐标,我必须将它与 K^-1 相乘,对吗?作为图像坐标我使用 (x',y',1) ?
然后我需要建立一个旋转矩阵来旋转 ccs ......但是我应该使用哪种约定?我怎么知道如何设置我的 WCS?
接下来是法线和距离。只取地上的三个点并计算它们的法线是否正确?距离然后是相机高度?
另外我想知道如何改变虚拟鸟瞰相机的高度,这样我就可以说我想从 3 米的高度看到地平面。如何在翻译和单应矩阵中使用单位“米”?
到目前为止,如果有人可以启发和帮助我,那就太好了。并且请不要建议使用“getperspective”生成鸟瞰图,我已经尝试过,但这种方式不适合我。
塞纳
computer-vision - 变形方形平面物体的单应性计算
假设你有一个正方形平面物体(一张纸)。你给它拍张照片。一般来说,它会出现变形。假设您处理图像并计算平面对象的四个角。给定这四个点,您可以计算单应性。
但现在假设物体发生了某种变形。关于变形的性质,我们只能说:
- 它是“光滑的”(物体表面不会形成锐角)
- 即使在变形之后,物体的表面也将始终完全可见。
例如:您将方形纸贴在圆柱形物体的表面上。
问题是:仅给定平面(变形)对象角的四个坐标(以像素为单位),我可以计算正确的单应性吗?也就是说,我可以在计算同形之前“消除”变形的影响吗?
即使是“近似”(读取工作;)方法也会非常有用。谢谢。
附言。我想补充一点,我不知道先验平面对象的内容。事实上,我正在编写的算法计算单应性,解开对象并检查其内容。这是一个二维条码,所以我有一对 id/crc 数字。如果从对象中提取的 crc 等于在 id 上计算的 crc,则它是有效的条形码。
opengl - 四边形检测和姿态估计
如何使用 OpenCV 估计四边形的位姿。我只需要在框架上检测一个矩形..不是屏幕上的所有四边形
vb.net - 从单应性中提取变换和旋转矩阵?
我有两个来自相机的连续图像,我想估计相机姿势的变化:
我计算光流:
它看起来是正确的,相机向左和向上移动: 现在我想知道相机移动和旋转了多少。如果我声明我的相机位置和它在看什么:
如何计算新位置和外观?
如果我做这一切都错了,或者如果有更好的方法,任何建议都将非常受欢迎,谢谢!
kinect - 从两个 Kinect 深度图中提取投影单应性
给定从 Kinect 深度图获得的两个连续的 3D 点云 1 和 2(不是整个云,例如使用 OpenCV 的 GoodFeaturesToMatch 从云中选择 100 个点),我想计算相机从 1 到 2 的单应性。我知道这是一个投影转换,很多人已经做过了:这里(幻灯片 12)、这里(幻灯片 30)和这里似乎是经典论文。我的问题是,虽然我是一名称职的程序员,但我没有数学或三角技能将其中一种方法转化为代码。由于这不是一个简单的问题,我为解决以下问题的代码提供了大笔赏金:
相机在原点,看 Z 方向,在不规则五面体 [A,B,C,D,E,F]:
相机向左 (X) 移动 -90mm,向上 (Y) +60mm,向前 +50mm (Z) 并向下旋转 5°,向右旋转 10°,逆时针旋转 -3°:
旋转整个场景,使相机回到原来的位置,让我可以确定顶点在 2 处的位置:
用于准备的 3DS Max 文件是max 1、max 2和max 3
以下是顶点之前和之后的位置、内在函数等:
请注意,camera2 的顶点并非 100% 准确,存在一些故意的噪点。
我需要的代码必须可以很容易地转换为 VB.Net 或 C#,在必要时使用 EMGUCV 和 OpenCV,获取 2 组顶点和内在函数并产生以下输出:
我不知道同质坐标的单应性是 3X3 还是 3X4,但它必须允许我将顶点从 1 转换为 2。
我也不知道值 a1、a2 等;这就是你必须找到的>;-)
500 赏金提供“取代”了我为这个非常相似的问题提供的赏金,我在那里添加了一条指向这个问题的评论。
EDIT2:我想知道我问这个问题的方式是否具有误导性。在我看来,问题更多的是点云拟合而不是相机几何(如果你知道如何将 A 平移和旋转到 B,你就会知道相机变换,反之亦然)。如果是这样,那么也许可以使用 Kabsch 算法或类似的方法获得解决方案
image-processing - 使用单应性快速提取补丁
假设您有一个单应性 H 关联两个不同图像 Ir 和 I 中描绘的平面。Ir 是参考图像,其中平面平行于图像平面(实际上占据了整个图像)。I 是运行时图像(在任意视点拍摄的平面照片)。让 H 是这样的:
p = Hp',其中 p 是 Ir 中的一个点,p' 是 I 中的对应点。
假设您有两个点 p1=(x1,y) 和 p2=(x2,y),x1 < x2,相对于图像 Ir。请注意,它们属于同一行(常见的 y)。令 H'=H^(-1)。使用 H',您可以计算以下点中 I 中的对应点:(x1,y),(x1+1,y),...,(x2,y)。
问题是:有没有办法避免矩阵向量乘法来计算所有这些点?我想到的最简单的方法是使用单应性来计算 p1 和 p2 的对应点(称它们为 p1' 和 p2')。为了得到其他的(即:(x1+1,y), (x1+2,y),...,(x2-1, y)),对图像 I 中的 p1' 和 p2' 进行线性插值。
但由于 Ir 和 I 之间存在射影变换,我认为这种方法非常不精确。
还有什么想法吗?这个问题与以下事实有关:我需要一种计算有效的方法来在实时软件中围绕 Ir 中的点 p 提取大量(小)补丁(大约 10x10 像素)。
谢谢你。
附言。也许我使用小补丁的事实会使使用线性插值成为一种合适的方法?