4点变换图像
我需要将其4个角点从一个位置移到另一个位置的4个角点进行转换. 任何可以在Windows上运行的代码,C#/vb.net最好,甚至可以帮助如何使用 photoshop 将被接受. Java高级成像API听起来很有希望. 我需要它用于屏幕截图操作系统,这使您能够获得此类效果: (来源: 解决方案 查看其他解决方案 这里的关键字是 同型同型 . Manolis Lourakis在C中撰写了GPL'ED同型实施,可用于 lapack . 其他解决方案 免责声明:我在atalasoft工作 如果您愿意去商业商业,Dotimage Photo可以使用四边形WARPCOMMAND来做到这一点.示例C#代码 // Load an image. AtalaImage image = new AtalaImage("test-image.jpg"); // Prepare the warp positions. Point bottomLeft = new Po
6 2024-04-15
编程技术问答社区
如何在c#中从3x3同源矩阵中获得旋转、平移、剪切力
我计算了3x3同型矩阵,我需要获取旋转,翻译,剪切和比例以将其用作Windows8媒体元素属性中的参数?! 解决方案 参见 https://math.stackexchange.com/questions/78137/a-nonstquare-affine-matrix的分解 def getComponents(normalised_homography): '''((translationx, translationy), rotation, (scalex, scaley), shear)''' a = normalised_homography[0,0] b = normalised_homography[0,1] c = normalised_homography[0,2] d = normalised_homography[1,0] e = normalised_homography[1,1] f = normalised_homogr
14 2024-04-12
编程技术问答社区
计算关键点的新位置
有人可以帮助我,我们如何计算转换的图像中关键点的新位置,在原始图像中检测到关键点.我正在使用openCV同构矩阵和战斗镜头来制作转换的图像. 这是一个代码.. ... std::vector points1,points2; for( int i = 0; i
10 2024-04-10
编程技术问答社区
旋转和平移矩阵的同源性opencv
我正在使用Java的Android应用程序,我使用FindHomography()计算了OpenCV,我如何找到包含旋转和通过同型的转换的相机姿势的矩阵 Mat homography = Calib3d.findHomography(ReferencePoints2, ReferencePoints1,0,Calib3d.RANSAC); 解决方案 您需要知道相机的内在参数才能做到这一点. 考虑Z = 0平面.点 X=(x,y,0,1)' 将图像投影为 p=P*X. 现在使用分解 P=K[R t], 其中k是校准矩阵,[r t]是外部参数.由于z = 0,因此R的第三列向量乘以零.现在,我们可以丢弃第三列以获取 p=K*[r1 r2 t]*(x,y,1)=H*(x,y,1), 其中H是平面同型. 您已经从例如已知点.现在可以回收R和向量t的第一列和第二列 [r1 r2 t]=inv(K)*H. 确保R1和R2是
14 2024-03-19
编程技术问答社区
如何使用3x3同源法将立方体增强到一个特定的位置上?
我能够通过计算它们之间的3x3同构象来跟踪4个坐标在同一场景的不同图像上.这样做,我可以将其他2D图像叠加到这些坐标上.我想知道我是否可以使用此同型将数据集扩大到此位置上,而是使用OpenGL?我认为3x3矩阵没有提供足够的信息,但是如果我知道相机校准矩阵,我可以得到足够的模型视图矩阵来执行此操作吗? 感谢您提供的任何帮助. 解决方案 如果您具有摄像机校准矩阵(固有参数)和同型,则因为同构型(在同一平面对象的两个视图之间)定义为: H = K[R|T] 其中k是3x3校准矩阵,R(3x3旋转矩阵)和t(3x1转换矢量)是视图变换(从对象坐标到摄像机坐标).关于如何从H中计算R和T的很多话要说.一种方法是计算直接解决方案,另一种方法是使用某些非线性最小化技术来计算R和T.显然,后一种方法更好,因为它将提供更好的近似解决方案.前者只是开始进行增强现实的一种方式;): 使用直接方法时,让我们看到如何得出R和T.如果H1,H2和H3是 H的列向量,用K,R和T为:
6 2024-03-19
编程技术问答社区
从同构图或用solvePnP()函数进行相机姿势估计
我试图通过一张照片构建静态增强现实场景,该照片在飞机上的共面点和图像上有4个定义的对应关系. 这是一个逐步流动: 用户使用设备的相机添加了图像.假设它包含一个带有某种视角的矩形. 用户定义了矩形的物理大小,该矩形位于水平平面(在Scenekit方面).假设它的中心是世界的起源(0、0、0),因此我们可以轻松地找到(x,y,z). 用户为矩形的每个角落定义了图像坐标系中的UV坐标. SceneKit场景是用相同大小的矩形创建的,并且可以从相同的角度看到. 可以在场景中添加其他节点. 我还相对​​在A4纸的中心测量了iPhone摄像头的位置.因此,对于此镜头,位置为(0、14、42.5),以cm测量.另外,我的iPhone略微投放桌子(5-10度) 使用此数据,我已经设置了SCNCamera以获取第三张图像上蓝色平面的所需透视图: let camera = SCNCamera() camera.xFov = 66 camera.zFar = 1000 c
12 2024-03-19
编程技术问答社区
用OpenCV Python计算摄像机的世界位置
我想计算我的相机在世界坐标中的位置.这应该很容易,但是我没有得到我期望的结果.我相信我已经阅读了有关此主题的所有内容,但是我的代码不起作用.这是我要做的: 我有一个摄像头看着一个区域. 1)我画了该区域的地图. 2)我使用cv2.getPerspectiveTransform 将4个图像点与我的地图上的4个点匹配,从而计算了同构. 3)H同型将每个世界坐标转换为相机坐标;这正常工作 4) To calculate the camera matrix I followed this : translation = np.zeros((3,1)) translation[:,0] = homography[:,2] rotation = np.zeros((3,3)) rotation[:,0] = homography[:,0] rotation[:,1] = homography[:,1] rotation[:,2] = np.cross(homog
22 2024-03-19
编程技术问答社区
用基于4个共面点的同源矩阵计算摄像机的姿势
我在代表四方(不一定是正方形或矩形)的视频(或图像)中有4个共面点,我希望能够在它们的顶部显示一个虚拟立方体在视频四边形的角落. 由于点是共面i,我可以计算单位正方形的角落之间的同谱(即[0,0] [0,1] [1,0] [1,1] [1,1])和四方面的视频坐标. 在此同型中,我应该能够计算正确的相机姿势,即[r | t],其中r是一个3x3旋转矩阵,t是一个3x1转换向量,以便虚拟立方体位于视频四边形上. 我已经阅读了许多解决方案(其中一些解决方案)并尝试实施它们,但它们似乎仅在某些"简单"案例中起作用(例如,视频四边形是正方形的时),但在大多数情况下不起作用. 这是我尝试过的方法(其中大多数是基于相同的原理,只有翻译的计算略有不同).令k为相机的内在矩阵,H为同构图.我们计算: A = K-1 * H 让A1,A2,A3为A和R1,R2,R3的列向量. r1 = a1 / ||a1|| r2 = a2 / ||a2|| r3 = r1 x r2 t =
8 2024-03-19
编程技术问答社区
使用摄像机和opencv库的图像估计欧拉角(摄像机姿势)。
我正在研究Android应用程序,我需要使用Camera和OpenCV库中的图像估算3D计划中的在线相机旋转.我喜欢计算欧拉角. 我已经阅读了 我的第一个问题是,我是否应该真的知道相机校正的相机固有矩阵,还是同型矩阵(相机外部)足够估计欧拉角(螺距,滚动,YAW)? 如果同构矩阵足够,我该怎么做? 对不起,我真的是OpenCV的初学者,无法将同型同印术分解为旋转矩阵和翻译矩阵,如描述您可以使用solvepnpransac()和DemomproctoctionMatrix查看我的代码来计算欧拉角. ,但它仅返回一个null-vector,为double [] eulerarray = {0,0,0} !!!有人可以帮我吗?那里怎么了? 非常感谢您的任何回复! public double[] findEulerAngles(MatOfKeyPoint keypoints1, MatOfKeyPoint keypoints2, MatOfDMatch match
8 2024-02-20
编程技术问答社区
获取RANSAC在findHomography中使用的5个点(OpenCV for Android)。
在Android的OpenCV中,功能org.opencv.calib3d.findhomography(..)返回均匀转换矩阵.例如,这仅返回同型: Mat homography = Calib3d.findHomography(points1, points2, Calib3d.RANSAC, 0.5); 是否有一种方法可以返回RANSAC实际使用的Android OpenCV API的点? 解决方案 更新 我不确定这是对OpenCV的新补充还是我只是错过了,但是findHomography() function actually can给您Inliers(OpenCV 2.4.2).默认情况下为空的最后一个参数mask将在Ransac的Inliers Foind的索引处填充(或255). Mat findHomography(InputArray srcPoints, InputArray dstPoints, int method=0,
24 2024-02-06
编程技术问答社区
安卓OpenCV寻找最大的正方形或长方形
这可能已经回答,但我迫切需要一个答案.我想在Android中使用OpenCV在图像中找到最大的正方形或矩形.我发现的所有解决方案都是C ++,我尝试转换它,但它不起作用,我不知道我在哪里错了. private Mat findLargestRectangle(Mat original_image) { Mat imgSource = original_image; Imgproc.cvtColor(imgSource, imgSource, Imgproc.COLOR_BGR2GRAY); Imgproc.Canny(imgSource, imgSource, 100, 100); //I don't know what to do in here return imgSource; } 我在这里要完成的工作是创建一个基于原始图像中最大的广场(返回值垫图像). 这是我想发生的事情: 1 http://img14.imag
6 2024-01-28
编程技术问答社区
用opencv计算虚拟摄像机的同源性
我有一个平面表面的图像,我想计算一个图像翘曲,从而使我可以从位于3D空间的另一点的虚拟摄像头看到相同的平面表面的合成视图. 所以,给定图像i1,我想计算一个图像i2,该图像i2表示从虚拟摄像机中看到的图像i1. 从理论上讲,存在一个与这两个图像相关的同谱. 鉴于虚拟摄像头的摄像头以及内部参数的矩阵,我该如何计算此同型构造? 我正在使用OpenCV的warpperspective()函数应用此同型并生成图像扭曲. 预先感谢. 解决方案 好吧,找到了此帖子(但是,我注意到y中的旋转有一个符号误差(-sin而不是sin).这是我适用于Python的解决方案.我是Python的新手,对不起,如果我做丑陋的事情. import cv2 import numpy as np rotXdeg = 90 rotYdeg = 90 rotZdeg = 90 f = 500 dist = 500 def onRotXChange(val): globa
22 2024-01-08
编程技术问答社区
从同构图中提取变换和旋转矩阵?
我有2个连续的相机图像,我想估计相机姿势的变化: i计算光流: Const MAXFEATURES As Integer = 100 imgA = New Image(Of [Structure].Bgr, Byte)("pic1.bmp") imgB = New Image(Of [Structure].Bgr, Byte)("pic2.bmp") grayA = imgA.Convert(Of Gray, Byte)() grayB = imgB.Convert(Of Gray, Byte)() imagesize = cvGetSize(grayA) pyrBufferA = New Emgu.CV.Image(Of Emgu.CV.Structure.Gray, Byte) _ (imagesize.Width + 8, imagesize.Height / 3) pyrBufferB = New Emgu.CV.Image(Of Emgu.CV.Struct
54 2023-11-14
编程技术问答社区
Opencv虚拟摄像机旋转/翻译的鸟瞰图
我已经校准相机,我完全知道固有和外在数据.同样已知相机的高度.现在,我想几乎要旋转相机以获得鸟的眼光,以便可以使用三个旋转角度和翻译来构建均匀矩阵. 我知道可以通过同型将2点从一个图像转换为 x = k*(r-t*n/d)k^-1*x' 我想知道一些事情: 如果我想将CCS中的图像坐标带回,我必须将其与K^-1相乘,对吗?作为图像坐标,我使用(x',y',1)? 然后,我需要构建一个旋转矩阵来旋转CCS ...但是我应该使用哪种惯例?我怎么知道如何设置我的WCS? 接下来是正常和距离.仅仅将三分放在地面上并计算出正常的情况是正确的吗?相机高度是距离吗? 我也想知道如何更改虚拟鸟视图相机的高度,这样我就可以说我想从3米高的高度看到地面飞机.如何在翻译和同构矩阵中使用单元"仪表"? 到目前为止,如果有人能够启发和帮助我,那将是很棒的.而且请不要建议用" GetPrective"产生鸟类的视野,我已经尝试过,但是这种方式不适合我. 塞纳 解
16 2023-10-25
编程技术问答社区
同构估计 -> 仿真矩阵的结果?
我正在从平面标记(使用MATLAB)开发姿势估计系统. 为此,我在用网络摄像头捕获的图像中检测到一个矩形,获取4个角点的坐标,并计算同质坐标中这些角点之间的同谱线,例如 58 46 75 90 M = 67 108 133 89 1 1 1 1 第一行是垂直的,第二行是水平坐标. i用DLT计算同构象(使用我在网络上发现的几个不同的同型计算函数,以及Matlab的CP2Tform,所有这些都给出了相同的结果)和我知道标记的参考点之间是正方形, 1 1 100 100 m = 1 100 100 1 1 1 1 1 [编辑:它们都在 counter- 顺时针订单中分类,因此我确保它们匹配.] i然后绘制这些参考点的再投入 m* = H*m 回到网络摄像头映像,以查看同型同构
8 2023-10-25
编程技术问答社区
用估计刚性变形来代替查找同构图
下面的链接中的示例使用findHomography来获取两组点之间的转换.我想限制转换中使用的自由度 doc/tutorials/femuran2d/feature_homography/feature_homography.html#功能 - 摄影 下面我使用estimateRigidTransform来获取对象和场景点之间的转换. objPoints和scePoints由vector 表示. Mat H = estimateRigidTransform(objPoints, scePoints, false); 按照上面的教程中使用的方法,我想使用转换H转换角值.教程使用perspectiveTransform与findHomography返回的3x3矩阵.使用刚性变换,它仅返回2x3矩阵,因此无法使用此方法. 我将如何改变角落的值,用此2x3矩阵表示为vector .我只是想执行与教程相同的功能,但自由度的转型程度较小.我
46 2023-10-25
编程技术问答社区
OpenCV Homography, Transform a point, what is this code doing?
我正在使用由OpENCV计算的同谱.我目前使用此统计数据使用以下功能来转换点.此功能执行我需要的任务,但是我不知道它的实际工作方式. 任何人都可以准确地解释,这是最后三行代码背后的逻辑/理论,我知道这会改变点x,y,但我尚不清楚为什么这有效: 为什么Z,px和py以这种方式计算,h中的元素对应于? 您的评论非常感谢:) double h[9]; homography = cvMat(3, 3, CV_64F, h); CvMat ps1 = cvMat(MAX_CALIB_POINTS/2,2,CV_32FC1, points1); CvMat ps2 = cvMat(MAX_CALIB_POINTS/2,2,CV_32FC1, points2); cvFindHomography(&ps1, &ps2, &homography, 0); ... // This is the part I don't fully understand double x =
18 2023-10-25
编程技术问答社区
安卓和OpenCV:考虑到相机内在因素和背投,对相机姿势的同源分析
libs:opencv 目标:android(opencv4android) 我尝试计算世界平面的同谱(例如,监视器屏幕)以获取相机姿势,对其进行转换并重新将点重新投射回跟踪任务. 我正在使用openCVS FindHomography()/getPerspectivetransform()获取同谱.使用PerspectivEtransForm()重新注射点(如下所述:Mat homography = org.opencv.imgproc.Imgproc.getPerspectiveTransform(screenPoints, imagePoints); 我有相机校准矩阵(我使用了MATLAB校准工具箱),我找到了一个提示(在注释中 @ h'= k^-1 * h (H' - 同型矩阵考虑摄像机校准,h-同型矩阵,k^-1-逆摄像机校准矩阵). Mat intrinsicInverse = new Mat(3, 3, CvType.CV_32FC1); Core.
20 2023-10-24
编程技术问答社区
同位素和仿生变换
嗨,我是计算机视觉的初学者,我希望知道同构和仿射式变形之间的差异到底是什么,如果您想找到两个图像之间的翻译,您会使用哪个以及为什么?从我在网上找到的论文和定义来看,我尚未找到它们之间的区别,而在某些情况下而不是另一个. 感谢您的帮助. 解决方案 我已经按照外行的术语将其放下. 同型 同型,是一个矩阵,可将一个图像中的一组点映射到另一个图像中的相应点集. 同谱是一个3x3矩阵,将第一个图像的每个点映射到第二张图像的相应点.请参阅下面的h是h是针对点x1, y1和x2, y2 的h是同构矩阵 考虑以下图像的点: 在上面的情况下,产生了4个同构矩阵. 在哪里使用? 您可能需要对齐上述图像.您可以使用同型. 在这里,第二张图像相对于第一个 映射 另一个应用程序是全景缝线 访问此博客 仿射转换 仿射变换生成一个矩阵,以相对于整个图像转换图像.它不像同构象一样考虑某些点. 因此,在仿射变换中,线的并行性总是保留(
28 2023-10-17
编程技术问答社区
在张量流中实施同型
我正在尝试在TensorFlow中实现一个学会预测同型的网络( wiki ).我的网络将输出4维矢量,该向量将用于水平和垂直转换2个图像.然后,我使用中央作物( tf.image.central_crop tf.image.central_crop tf.image.central_crop )这些扭曲的图像.我尝试实现它,对于翻译部分,我使用了ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["", "", "
20 2023-10-16
编程技术问答社区