Python 在对整个图像应用单应之后,如何将2D点转换回来?
我是opencv和图像相关几何的新手。但现在我正在做一些图像处理任务。 以下是我所做的: 给定pts_src,ptsdst,我使用cv2.findhomography和cv2.warpsperspective扭曲了整个图像 findHomography为我提供了一个3x3单应矩阵。 cv2.warpPerspective为我提供了一个扭曲的图像,我可以从这个扭曲的图像中检测到一些特征点 但是,我需要将特征点坐标映射回原始输入图像。 有人能告诉我如何做到这一点吗Python 在对整个图像应用单应之后,如何将2D点转换回来?,python,opencv,image-processing,homography,perspectivecamera,Python,Opencv,Image Processing,Homography,Perspectivecamera,我是opencv和图像相关几何的新手。但现在我正在做一些图像处理任务。 以下是我所做的: 给定pts_src,ptsdst,我使用cv2.findhomography和cv2.warpsperspective扭曲了整个图像 findHomography为我提供了一个3x3单应矩阵。 cv2.warpPerspective为我提供了一个扭曲的图像,我可以从这个扭曲的图像中检测到一些特征点 但是,我需要将特征点坐标映射回原始输入图像。 有人能告诉我如何做到这一点吗 谢谢我认为单应矩阵的逆矩阵将是从p
谢谢我认为单应矩阵的逆矩阵将是从pts_dst映射回pts_src的新矩阵 如您在评论中所述,如图所示,第三个分量似乎确实是结果向量的比例系数w: x、 y→ x′/w,y′/w 其中x′,y′,w′=mat⋅ [x y 1] ... 在2D矢量变换的情况下,省略z分量 因此,您可以通过执行V[0]/V[2],V[1]/V[2]来重新缩放它,就像您在评论中提到的那样 此外,我认为这个比例因子与矩阵的生成方式有关,因此请检查矩阵的详细信息,正如cv2.findHomography的官员所说: 单应矩阵是按一定比例确定的。因此,对其进行归一化,以使h33=1
希望这有帮助 我认为单应矩阵的逆矩阵将是从pts_dst映射回pts_src的新矩阵 如您在评论中所述,如图所示,第三个分量似乎确实是结果向量的比例系数w: x、 y→ x′/w,y′/w 其中x′,y′,w′=mat⋅ [x y 1] ... 在2D矢量变换的情况下,省略z分量 因此,您可以通过执行V[0]/V[2],V[1]/V[2]来重新缩放它,就像您在评论中提到的那样 此外,我认为这个比例因子与矩阵的生成方式有关,因此请检查矩阵的详细信息,正如cv2.findHomography的官员所说: 单应矩阵是按一定比例确定的。因此,对其进行归一化,以使h33=1
希望这有帮助 也许我错了,但我认为单应矩阵的逆矩阵将是从dst_点映射回src的新矩阵_points@alan.elkin谢谢你的回复。我尝试了numpy.linalg.invH*np.transpossenp.matrix[[x,y,1]],得到了一个三维向量V。然后我尝试了V[0],V[1],它似乎不是正确的位置。我做错什么了吗?@alan.elkin是V的第三个元素,这里的比例因子?我绘制了V[0]/V[2],V[1]/V[2]可以看出该点似乎位于所需的位置。我不确定是否总是这样。是否@gnodab您的链接指向同一个操作?也许我错了,但我认为单应矩阵的逆矩阵将是从dst_点映射回src的新矩阵_points@alan.elkin谢谢你的回复。我尝试了numpy.linalg.invH*np.transpossenp.matrix[[x,y,1]],得到了一个三维向量V。然后我尝试了V[0],V[1],它似乎不是正确的位置。我做错什么了吗?@alan.elkin是V的第三个元素,这里的比例因子?我绘制了V[0]/V[2],V[1]/V[2]可以看出该点似乎位于所需的位置。我不确定是否总是这样。你的@gnodab链接指向同一个OP吗