计算将矩形变换为透视形式所需的变换
Calculate transformation which is needed to transform a rectangle into its perspective form
我有同一个矩形的未变换形式和透视形式。
无论是未变换形式的坐标还是透视形式的坐标都在未变换坐标系中。
有没有办法重建导致这种转换的转换矩阵?
我认为应该可以通过求解 4 个角给出的 4 个方程来做到这一点,但我不确定从哪里开始。
// 编辑:
看起来我是这里 xy 问题的受害者。所有答案都基于 3d 环境。但是我在图像上有一个矩形 + 我知道这个矩形的实际尺寸。我需要知道的是如何将其他已知点变换到透视图上
注意你有8对对应的参数(每个点的x和y),需要用8个方程计算矩阵的8个参数
//four pairs of such equaions:
x' = (A * x + B * y + C) / (G * x + H * y + 1.0)
y' = (D * x + E * y + F) / (G * x + H * y + 1.0)
Paul Heckbert article 描述了寻找透视变换矩阵的理论。
C++ 实现可以在 antigrain library(文件 agg_trans_perspective.h
)
中找到
一种方法是插入变换矩阵中给定的值。那有简单易行的优点,但对你理解它没有帮助。
要了解转换,请画一个屏幕垂直且自上而下的图表。画眼睛。从眼睛到屏幕的线应该是垂直的。然后在屏幕外的某处画一个点。然后从眼睛到点画一条线,穿过屏幕。
这是一个高中水平的三角学练习,用于计算点在屏幕上的投影。
我有同一个矩形的未变换形式和透视形式。 无论是未变换形式的坐标还是透视形式的坐标都在未变换坐标系中。
有没有办法重建导致这种转换的转换矩阵?
我认为应该可以通过求解 4 个角给出的 4 个方程来做到这一点,但我不确定从哪里开始。
// 编辑: 看起来我是这里 xy 问题的受害者。所有答案都基于 3d 环境。但是我在图像上有一个矩形 + 我知道这个矩形的实际尺寸。我需要知道的是如何将其他已知点变换到透视图上
注意你有8对对应的参数(每个点的x和y),需要用8个方程计算矩阵的8个参数
//four pairs of such equaions:
x' = (A * x + B * y + C) / (G * x + H * y + 1.0)
y' = (D * x + E * y + F) / (G * x + H * y + 1.0)
Paul Heckbert article 描述了寻找透视变换矩阵的理论。
C++ 实现可以在 antigrain library(文件 agg_trans_perspective.h
)
一种方法是插入变换矩阵中给定的值。那有简单易行的优点,但对你理解它没有帮助。
要了解转换,请画一个屏幕垂直且自上而下的图表。画眼睛。从眼睛到屏幕的线应该是垂直的。然后在屏幕外的某处画一个点。然后从眼睛到点画一条线,穿过屏幕。
这是一个高中水平的三角学练习,用于计算点在屏幕上的投影。