×

Loading...

@Vancouver

Topic

This topic has been archived. It cannot be replied.
  • 工作学习 / 学科技术 / 一个图像处理问题 (这个几年级应该会做?)

    假设这是一个 5'' X7'' 的相框,已知 image size 和 A,B,C,D 坐标,假设相框边框 1'',如何计算 A',B',C',D' 坐标?(可以使用 opencv)


    • 线性变换下直线还是直线,平行还是平行。所以连接对角线,用长宽边延长的平行线算比例即可。有竞赛经验的孩子都可以做,培训时候肯定讲过. 没有经验的几乎不敢做。玩电脑图形的也许敢
      • 是透视图。另外,5X7 和 7X9 的对角线并不重合。
        • 划个重合的正方形出来
    • 是给 5X7 的平行透视图加上 1 个单位的边框。

      不是 1 个单位的 offset,有透视。

      也不是按比例缩放,要从 5X7 变成 7X9。

    • 用perspective transformation,这个估计得大学的专业课后
      • perspective transformation warp 可以很容易把 ABCD 变成矩形,但如何计算 A' B' C' D' 说实话我也还没想出来简单办法。
        • 你可以复习一下,大一,二的Computer Graphics的Transformation matrix,有很多现成的程序可以用github上也有
          • 我用了 opencv

            用 opencv 可以很容易在 destination 得到矩形 A' B' C' D'。

            但如果想要映射回 source image 得出 A' B' C' D' 坐标,而且只能用 javascript 我觉得工作量太大,放弃了。

            难点在于要加的 padding 是需要在 destination 的坐标下决定的,还有其他一堆需求 --- 而我的信条是,“老板雇我做的事情不是 rocket science,如果太难做就简化需求...” 😳

    • 你是要问ABCD投射到二维显示屏上的坐标?
      • 不是。
        已知5X7矩形在透视图中四点坐标,求其外延 7X9 矩形在透视图中坐标。
    • 光给个Perspective mapping的2d图么,z轴信息都丢失了,如果能拿到Z轴信息,则用x,y translation回0点后做一个x,z rotation,然后dilation后,反着过去即可。如果没有Z轴信息,则需要假设角为orthogonal的,来计算出隐Z,这个有点复杂了就。 +2