如何优化图像的翻转,反转和旋转?

时间:2014-05-08 18:50:58

标签: algorithm image-processing optimization

我有不同的方法,它将执行翻转,反向和旋转(通过90度)操作。 因为我需要按顺序对几个图像应用这些操作,我想优化它...例如。如果我旋转90两次,我反转一次​​图像它等于执行翻转操作..但我找不到它在一组特定的组合..如果我做翻转旋转反向旋转翻转旋转反向旋转和继续给我一个不确定的结果..

  

现在我通过取消2翻转2反向和4旋转操作进行优化但是当按照上面的随机顺序操作时我无法跟踪它...

是否有任何算法适用于此或任何翻转和反向组合序列,使用它我可以优化图像序列的操作

感谢提前

注意:翻转是垂直的,反向是镜像,顺时针旋转90度

3 个答案:

答案 0 :(得分:4)

如果我是对的,除了身份之外,还有7种可能的不同操作(90,180,270次旋转和0,90,180,270次旋转,然后进行镜像)。为了提高效率,最好明确地对它们进行编码,而不是使用将时间加倍或加倍的组合。

如果你真的想要实现几个函数并将它们组合起来,那么2个基元是必要且充分的:例如,旋转90(R)和镜像(|)。

   0 => abcd => 
  90 => dabc => R
 180 => cdab => R R
 270 => bcda => R R R

  0| => badc => |
 90| => adcb => R |
180| => dcba => R R |
270| => cbad => | R

角落从左上角顺时针方向列出。正如你所说,翻转是180 |。

通过支持额外的原始操作+(中心对称或旋转180),您最多可以执行2次操作:

   0 => 
  90 => R
 180 => +
 270 => + R

  0| => |
 90| => R |
180| => + |
270| => | R

使用旋转,翻转和镜像,你无法避免三重组合。

答案 1 :(得分:2)

记下所有提到的操作的仿射变换矩阵。 按操作顺序将它们相乘,得到的矩阵就是您所需要的。

答案 2 :(得分:0)

这对planner来说是一个很好的应用!或者,换句话说,搜索图表中的最短路径。如果您可以通过应用特定变换(旋转,翻转或反向)从一个节点到另一个节点,则节点是图像配置并连接两个节点。

起点是普通图像,目标节点是具有所需配置的目标节点,即在按顺序应用所有给定操作后到达的目标节点。您可以使用Breatdh First SearchDijkstra's Algorithm等算法来查找路径。找到的路径的边缘是您需要进行的转换。