图像搬动算法求解

图像移动算法求解
想通过两个图片 求出图片A相对于图片B向上下左右哪个方向移动了。

图片A可以理解为当前摄像头捕获的图片
然后稍微移动上下左右任意位置移动一点,再次捕获到图片B
经过通过算法比对AB图片,可以获得B相对于A像哪里移动了
------解决方案--------------------
首先你必须有坐标系,如果没有那你就要定义坐标系,否则没法往下计算。
a(x1,y1)  b(x2,y2)  然后开始相对位置就是((x2-x1),(y2-y1)).
移动后再计算相对位置((x2'-x1'),(y2'-y1'))。这样相对移动就找到了,
你可以理解为a没动(0,0),b的坐标移动前和移动后都知道,求b相对a移动的方向。
把刚才((x2-x1),(y2-y1)).重新记做(x,y);
把刚才((x2'-x1'),(y2'-y1'))重新记做(m,n);为了清楚。
相对移动方向很好判断,
n-y>0,在竖直方向向上移动了。
n-y=0,在竖直方向没移动。
n-y<0,在竖直方向向下移动了。

m-x>0,在水平方向向右移动了。
m-x=0,在水平方向没移动了。
m-x<0,在水平方向向左移动了。
然后综合一下就知道向那个方向移动了,你也可以直接计算方向向量,那更精确。



------解决方案--------------------
视频压缩里面的运动向量求解,就是你需要的算法。
思路是这样的,将当前图片的上下左右设定一个范围,比如,x 属于(-16, 16), y属于(-16, 16)
然后对着1024个位置进行图片的比对,比对的方法就是两个图片的亮度值做差,求得绝对值和,称为MAD。
其中MAD最小的,就是两个图片的相对位置。
如果图片太大的话,你可以取得小图,然后再计算,小图可以通过下采样获得。
或者仅比对一个区域。
------解决方案--------------------
楼上的方法相当于对某个区域附近做模板匹配吧,这种方法感觉计算量不小啊,特别是区域取的比较大的情况。

如果知道图片里面有的特征内容的话,直接搜索特征内容,比较位置关系就好了。比如矩形框等。