Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在对整个图像应用单应之后,如何将2D点转换回来?_Python_Opencv_Image Processing_Homography_Perspectivecamera - Fatal编程技术网

Python 在对整个图像应用单应之后,如何将2D点转换回来?

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

我是opencv和图像相关几何的新手。但现在我正在做一些图像处理任务。 以下是我所做的: 给定pts_src,ptsdst,我使用cv2.findhomography和cv2.warpsperspective扭曲了整个图像

findHomography为我提供了一个3x3单应矩阵。 cv2.warpPerspective为我提供了一个扭曲的图像,我可以从这个扭曲的图像中检测到一些特征点

但是,我需要将特征点坐标映射回原始输入图像。 有人能告诉我如何做到这一点吗


谢谢

我认为单应矩阵的逆矩阵将是从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吗