Geometry 旋转后在图像上查找点的原始位置

Geometry 旋转后在图像上查找点的原始位置,geometry,image-rotation,Geometry,Image Rotation,我有旋转图像上某个点的x,y坐标。我想在原始的非旋转图像中找到同一点的坐标 请检查第一张更简单的图片: 更新图像,简化: 旧图像: 假设第一个点是A,第二个点是B,最后一个点是C。我假设你有旋转矩阵R(如果没有的话,请参阅维基百科)和平移向量t,因此B=R*A和C=B+t。 它来自C=R*A+t,因此A=R^1*(C-t) 编辑:如果您只需要未旋转的新点,只需执行D=R^-1*C。首先要做的是定义参考系(如何将“点相对于每个图像的位置”转换为数字)。我想您需要依赖一个基本的二维参考系统,由一个

我有旋转图像上某个点的x,y坐标。我想在原始的非旋转图像中找到同一点的坐标

请检查第一张更简单的图片:

更新图像,简化:

旧图像:

假设第一个点是A,第二个点是B,最后一个点是C。我假设你有旋转矩阵R(如果没有的话,请参阅维基百科)和平移向量t,因此B=R*A和C=B+t。 它来自C=R*A+t,因此A=R^1*(C-t)


编辑:如果您只需要未旋转的新点,只需执行D=R^-1*C。

首先要做的是定义参考系(如何将“点相对于每个图像的位置”转换为数字)。我想您需要依赖一个基本的二维参考系统,由一个点(两个X/Y值)给出。例如:左/下角(最小X和最小Y)

算法非常简单:

  • 获取与关联的新定义参考点 旋转的形状(最小X和最小Y),即确定参考X_和新参考X_ RefY_new

  • 在参考系之间应用基本转换:
    X_旧=X_新+(参考X_新-参考X_旧)
    Y_旧=Y_新+(参考新)- RefY_(旧)

  • -----------------将公式更新为新车PIC

    RefX_old=旋转前CarFrame的最小X值

    RefY_old=旋转前车架的最大Y值

    RefX_new=旋转后CarFrame的最小X值

    RefY_new=旋转后CarFrame的最大Y值

    X_new=旋转后点相对于车架的X。例如:如果相对于绝对帧(0,0),RefX_new=5,并且相对于该绝对帧的点的X为8,则X_new将为3

    Y_new=旋转后点相对于CarFrame的Y(相当于上面的点)


    X_old_C=X_new_C(相对于CarFrame)+(参考X_new(CarFrame_C)-参考X_old(CarFrame_A))

    Y_old_C=Y_new_C(相对于CarFrame)+(参考_new(CarFrame_C)-参考_old(CarFrame_A))


    这些坐标是相对于CarFrame的,因此您可能需要根据绝对帧(我猜是0,0)更新它们,如上所述,即:

    X_old_D_absolute_frame=X_old_C+(RefX_new(CarFrame_C)+RefX_global(即0))

    Y_old_D_absolute_frame=Y_old_C+(参考新(CarFrame_C)+参考全局(即0))

    (尽管您应该在CarFrame处于相对于全局帧的“确定位置”时执行此操作,即在图片D上(该点相对于图片C和D中的CarFrame具有相同的坐标,但相对于全局帧的坐标不同)。)

    这样说似乎有点复杂;但这真的很简单。您只需仔细考虑一种情况,并创建执行所有操作的算法。这个想法非常简单:如果我在8点,在5点开始的东西里面;关于集装箱,我在3号线上

    ------------方法的更新

    如评论中所述,这些最后的图片证明了最初提出的参考计算(最大Y/min.X)是不正确的:它不应该是车架的最大/最小值,而是到较近侧的最小距离(=从左/底侧到点的垂直线)

    ------------具体示例的三角计算

    提出的算法是在任何情况下都应该应用的算法。尽管在这种特定情况下,最困难的部分不是从一个参考系统移动到另一个参考系统,而是在旋转系统中定义参考点。完成此操作后,将立即应用于未旋转的案例

    这里你有一些计算来执行这个动作(我做得很快,所以最好把它作为一个方向,自己做);此外,我只考虑了图片中的情况,即在左/底点上旋转:

    X_旋转=dx*Cos(α)

    其中dx=X_原点-(max_Y_CarFrame-Y_原点)*Tan(alpha)

    Y_旋转=dy*Cos(α)

    其中dy=Y_原点-X_原点*Tan(α)

    注:(dx中的max_Y_CarFrame-Y_Orig)和dy中的X_Orig,基本参考系为0,0(最小X和最小Y)。如果情况并非如此,则必须更改此变量


    旋转的X_和旋转的Y_给出了从点到车架最近一侧(分别为左侧和底部)的垂直距离。通过应用这些公式(我坚持:仔细分析它们),您可以得到X_old_D_absolute_frame/Y_old_D_absolute_frame,也就是说,您只需将carFrame中的lef/bottom值相加(如果它位于0,0,这些值就是最终值).

    您的图像链接已断开。由于我的办公室中某些链接被阻止,因此我无法看到我这边的图像。但我认为他们会在其他网络上工作。很抱歉,我将从其他机器重新连接图像。我已重新连接图像链接,请您现在检查好吗?很抱歉,我仍然无法看到它,因为imgur在我的办公室网络中被阻止。谢谢,伙计,但我没有使用旋转矩阵!而是使用一些三角公式…在这种情况下,我们需要更多的信息:旋转的中心在哪里?是(0,0)吗?我的印象是你的坐标系在旋转过程中发生了变化(A->B)。是的。。。图像围绕中心旋转。x、y位置分别从左上角计算。因为它位于基于浏览器的环境中。当图像旋转时,框架将展开以保持图像完整,这意味着避免切割图像的任何角落。因此,点的x、y位置受到影响!如何在基于浏览器的环境中设置和使用参考系?重点