标签: homography

Opencv虚拟相机旋转/平移鸟瞰图

我有一个校准过的摄像机,我完全知道内在和外在数据.此外,相机的高度也是已知的.现在我想虚拟旋转相机以获得鸟瞰图,这样我就可以构建具有三个旋转角度和平移的Homography矩阵.

我知道可以通过Homography将2个点从一个图像转换为另一个图像

x = K*(Rt*n/d)K ^ -1*x'

我现在想知道一些事情:如果我想要恢复ccs中的图像坐标,我必须将它与K ^ -1相乘,对吧?作为图像坐标,我使用(x',y',1)?

然后我需要构建一个旋转矩阵来旋转ccs ......但我应该使用哪种约定?我怎么知道如何设置我的WCS?

接下来是法线和距离.是否只是将三个点放在地上并计算它们的正常值?并且是相机高度的距离?

此外,我想知道如何改变虚拟鸟瞰摄像机的高度,这样我可以说我想看到3米高的地平面.如何在翻译和单应矩阵中使用单位"米"?

到目前为止,如果有人可以启发并帮助我,那将是很棒的.并且请不要建议用"getperspective"生成鸟类视图,我已经尝试过但这种方式不适合我.

塞纳

opencv translation rotation homography

7
推荐指数
1
解决办法
1万
查看次数

我可以重复使用由2个不同相机拍摄的2个不同相同场景图像计算出的Homography矩阵吗?

我正在尝试学习OpenCV.我有关于单应性和极线几何的问题.

假设我使用cvFindHomography()函数计算单应性,使用两个静态图像匹配的特征点,两个摄像头来自两个不同的视点.

如果我重复使用单应矩阵从相机2拍摄的图像(左)中检测相机1(右)中的对应点是不对的(因为我知道左图像的'2d同质特征点x' = H.x在哪里x',x是右图像'2d对应的同质特征点和H单应矩阵)其中camera1和camera2中的2d点不用于计算单应矩阵?

我的意思是,我可以重复利用这两个摄像机的计算单应矩阵来找到任何不用于计算单应矩阵的图像的对应点吗?

当它被固定图像确定时,我使用哪个图像是否重要?或者我每次都要计算它?

opencv 2d coordinates homography correspondence

7
推荐指数
1
解决办法
1062
查看次数

OpenCV C++ findHomography掩码值的含义

我正在使用findHomographyOpenCV 的功能和RANSAC方法,以找到与一组关键点链接的两个图像相关的单应性.主要问题是我无法找到函数输出的掩码矩阵的值.只有我知道的信息是0值是异常值,非零值是内点.但这意味着内部值是多少?有谁知道?

提前致谢!

我打电话给的一段代码findHomography:

cv::Mat H12;
cv::Mat mask;

H12 = cv::findHomography(FvPointsIm1, FvPointsIm2, mask, CV_RANSAC, 5); 
ui->Debug_Label->setText(Mat2QString(mask));
Run Code Online (Sandbox Code Playgroud)

c++ opencv computer-vision homography ransac

7
推荐指数
1
解决办法
7809
查看次数

正确的单应性计算需要多少点对?

为了得到两幅图像之间的单应性,我想知道至少需要多少点来得到单应矩阵的良好估计?

opencv homography

7
推荐指数
1
解决办法
2668
查看次数

使用计算单应性将2D点从标记投影到图像

我有一个平面标记,我运行SIFT算法来提取特征.然后我运行一个探测器在场景中找到这个标记并再次提取特征.我匹配点并使用OpenCV从匹配对中提取单应性findHomography().

现在,我想用计算的单应性投影在标记中检测到的2D点,以将位置与从场景测量的3D点进行比较,并计算重投影误差.我对像素坐标,厘米,校准矩阵感到困惑,我不知道我应该先做哪些转换.

有人知道这方面的链接还是可以解释方法?

opencv homography reprojection-error

6
推荐指数
1
解决办法
858
查看次数

2D-3D单应矩阵估计

我正在使用我的Kinect进行一些2D 3D图像处理.这是我的问题:我的3D(x,y,z)中的点位于一个平面上.我也知道RGB图像(x,y)上的点的坐标.现在我想估计一个2D-3D单应矩阵来估计(x1,y1,z1)坐标到随机(x1,y1)点.我认为这是可能的,但我不知道从哪里开始.

谢谢!

image-processing homography kinect camera-matrix

6
推荐指数
1
解决办法
4175
查看次数

我可以简单地添加变换的仿射或透视(单应性)矩阵吗?

众所周知,在OpenCV中,我可以在两个图像之间进行仿射或透视转换:

  • M - 仿射变换 - 使用estimateRigidTransform()
  • H - 透视(单应性)转换 - 使用FeatureDetector(SIFT,SURF,BRISK,FREAK,......),然后FlannBasedMatcherfindHomography()

然后我可以这样做:

  • 仿射变换 - 用 warpAffine(img_src, img_dst, M)
  • 透视转换 - 使用 warpPerspective(img_src, img_dst, H)

但如果我有3个或更多图像,我已经找到:

  • 仿射:M1(img1 - > img2),M2(img2 - > img3)
  • 透视:H1(img1 - > img2),H2(img2 - > img3)

然后我可以通过简单地添加两个矩阵来获得转换的matix(img1 - > img3)吗?

  • 仿射变换: M3 = M1 + M2;
  • 透视变换: H3 = H1 + H2;

或者我应该使用哪些功能?

c++ opencv image-processing homography affinetransform

6
推荐指数
1
解决办法
2285
查看次数

如何在Python OpenCV中应用RANSAC

有人可以告诉我如何应用RANSAC找到最好的4个特征匹配点及其相应的(x,y)坐标,以便我可以在我的单应性代码中使用它们吗?

功能匹配点由SIFT获得,这里是代码:

import numpy as np
import cv2
from matplotlib import pyplot as plt

def drawMatches(img1, kp1, img2, kp2, matches):
    rows1 = img1.shape[0]
    cols1 = img1.shape[1]
    rows2 = img2.shape[0]
    cols2 = img2.shape[1]

    out = np.zeros((max([rows1,rows2]),cols1+cols2,3), dtype='uint8')

    # Place the first image to the left
    out[:rows1,:cols1] = np.dstack([img1, img1, img1])

    # Place the next image to the right of it
    out[:rows2,cols1:] = np.dstack([img2, img2, img2])

    # For each pair of points we have between both images
    # draw circles, then connect …
Run Code Online (Sandbox Code Playgroud)

python opencv homography ransac

6
推荐指数
1
解决办法
1万
查看次数

opencv中如何进行多点变形

通常我们使用 4 个点来校正图像的透视。我们如何使用更多数量的点将一个非常扭曲的边缘矩形转换为 opencv 中的直矩形。基本上我正在尝试用一块布扭曲图像。布边不直。通过下图来说明在此输入图像描述

homography perspective warp

6
推荐指数
0
解决办法
707
查看次数

使用手动单应性对齐两个图像

我正在创建一个使用手动校准来对齐两个图像的应用程序。我试图将它们几乎完美地对齐,所以我不依赖自动校准,因为它在这种情况下效果不佳。我通过选择像素手动完成此操作。然而结果并不是我所希望的,我也不知道自己错在哪里。我觉得计算出的点应该将图像精确地放置在另一张图像的顶部,但由于某种原因,它没有。我究竟做错了什么?

单应性结果:

[[ 7.43200521e-01 -1.79170744e-02 -1.76782990e+02]
 [ 1.00046389e-02  7.84106136e-01 -3.22549155e+01]
 [ 5.10695284e-05 -8.48641135e-05  1.00000000e+00]]
Run Code Online (Sandbox Code Playgroud)

手动选取点: RGB:

[[ 277  708]
 [1108  654]
 [ 632  545]
 [ 922  439]
 [ 874  403]
 [ 398  376]
 [ 409  645]
 [ 445  593]
 [ 693  342]
 [ 739  244]
 [ 505  234]
 [ 408  275]
 [ 915  162]
 [1094  126]
 [ 483  115]
 [ 951  366]
 [ 517  355]]
Run Code Online (Sandbox Code Playgroud)

热的:

[[  8 549]
 [634 491]
 [282 397]
 [496 318]
 [461 289]
 [113 269]
 [122 …
Run Code Online (Sandbox Code Playgroud)

python opencv transformation computer-vision homography

6
推荐指数
1
解决办法
479
查看次数