比如:用数码相机照一幅相片(01.jpg),然后水平移动数码相机(移动不是很大的),又照了一张相片(02.jpg),有什么办法通过这两张相片,知道数码相机移动了多少?我要的值要比较准确的。

解决方案 »

  1.   

    纸上谈兵(理想状态下):
    假设照了01.jpg(以下称为s)后相机往右水平移动后照02。jpg(以下成为d),且移动距离很少。
    把s的右半部分与d的左半部分进行bitblt的srcerase操作,其实就是s and (not d)。。
    如果s的右半部分与d的左半部分完全一样(即相机移动了半张相片的距离时的情况),那么经上面的操作,结果应为半张相片宽的全黑图。。
    当然,情况不可能这么巧合,如果上面得到的结果不是全黑的,就把这幅结果图里所有非黑的点总数记下来,放进一个数组里然后再重新截取s的右四分一跟d的左四分一进行上述运算又把结果的非黑点的总数记下来放进数组或直接跟前面1/2时的非黑点总数比较决定下次是截取进行比较的是部分是1/8还是3/8。。如此循环。最后把那个数组的所有元素进行比较,非黑点最少时的情况就是相机移动的距离。。
    原理大致如此但也可以把s右边的第一列跟d的左边第一列比较,然后两列、三列。非黑点最少时的情况就是相机移动的距离。。
    选什么方法快看实际情况。
    相机左移时同理。。
      

  2.   

    俺瞎说滴:)
    第一张A,第二张B
    对A取样,计算亮度a,对B取样,计算亮度b
    a<b说明移动后图像变亮了
    对B左边一半取样b1,对B右边一半取样b2
    b1<b2说明取景右移了
    对B左边取样bb,对A左取一系列样aa[],
    确定bb最接近的aa[]中的值,然后通过对A进一步精确取样,确定精确的移动距离
    反之也成立滴:)
    希望我的想法对你有所帮助,祝你好运!
      

  3.   

    给你一个链接,希望里面的代码能给你一点启示
    http://www.21code.com/codebase/?pos=list&type=search&key=摄像
      

  4.   

    如果那位CSDN的高手做成一个小软件给我,如果我试过可以的话,我马上结帖,并付上1000元的多谢费,最后你给我正式的代码就行了。
      

  5.   

    这个是图像匹配,如果lz对效率要求不高,我可以用vb试一试。
    可以给我发些图看看吗? qq联系,5855474
      

  6.   

    http://research.microsoft.com/iccv2005/demo/activecamera/kousoku.mpg日本人用了两个摄象头
    这么慢的检测速度
    还拿到了iccv2005参展楼主 知道你的问题多么复杂了么如果环境是已知的,比如物体和摄象头垂直距离一定是固定的,光照是固定的等等……
      

  7.   

    至少已经能够识别出光斑的中心了。
    科室楼主的QQ今天无法联系,好歹留个mail我好把程序发给你啊
      

  8.   

    这不是技术,而是思路的问题。
    要源代码就不只1000那么便宜了。这也相当于一个科研项目了。
    我想我倒是有个不错的思路。有需要者可以联系。 thehappylover at 163 com
      

  9.   

    各位大哥,真不好意思!这么久没有上csdn,这段时间主要跟进一些公司的灯光的项目,最终还是请了一位高级工程师做,他的核心技术没有给我公司,但我知道他是通过光线,然后建立一个虚拟模型,通过前后两个模型的对面,并且通过实地的试验,最后才知道移动了多少?建立模型是用C++写的,但具体的不是很清楚,如果拿得到的话,我会在csdn第一时间发布出来。
      

  10.   

    up up up up up up